2009-10-14 8 views
8

Chciałbym zintegrować mój kanał tumblr na mojej stronie. Wygląda na to, że tumblr ma do tego API, ale nie jestem do końca pewien, jak go użyć. Z tego co rozumiem, żądam strony, a tumblr zwraca plik xml z zawartością mojego bloga. Ale jak mogę uczynić ten xml znaczącym html? Czy muszę przetworzyć go za pomocą php, zamieniając odpowiednie znaczniki w nagłówki i tak dalej? Mówię sobie, że to nie może być takie bolesne. Ktoś ma jakieś spostrzeżenia?Integracja blogu tumblr ze stroną internetową

+0

Pytanie w szczególności wspomina o php, dzięki czemu programowanie jest powiązane. –

Odpowiedz

4

Możesz użyć PHPTumblr, wrapper API napisanego w PHP, który sprawia, że ​​pobieranie wiadomości jest proste.

+1

Godsent. Teraz do nauki php ... – Ying

1

Istnieją dwa główne sposoby, aby to zrobić. Najpierw możesz przeanalizować xml, wyciągając zawartość z potrzebnych tagów (kilka sposobów na to, w zależności od tego, czy używasz parsera SAX, czy DOM). To jest szybkie i brudne rozwiązanie.

Możesz także użyć XSLT transformation, aby przekonwertować źródło xml bezpośrednio do pożądanego html. Jest to bardziej skomplikowane, ponieważ musisz nauczyć się składni dla szablonów xslt, co jest trochę gadatliwe.

11

Jest javascript to, że robi to teraz, dostępny z Tumblr (musisz się zalogować, by go zobaczyć): http://www.tumblr.com/developers

To nakręca być coś takiego:

<script type="text/javascript" src="http://{username}.tumblr.com/js"></script> 
+2

To jest bardzo łatwy sposób i działa. Możesz także dodać? Num = 4 po js, ​​aby określić liczbę wyświetlanych postów (tutaj będzie 4). Możesz również nadać temu styl css, ale wadą tej metody są czasy postów, których nie pokazano – CodeVirtuoso

+0

Jak ustawić przesunięcie? Wynik zaczyna się od –

+1

Chociaż wydaje się, że jest więcej opcji (sprawdź tutaj: http://www.tumblr.com/docs/en/api/v2#posts), wydaje się, że przesunięcie jest ignorowane. Można jednak użyć pełnego interfejsu API dla lepszej kontroli. – kweerious

3

Jeśli pójdziesz do http://yourblog.tumblr.com/api/read gdzie "twój blog" powinien zostać zastąpiony nazwą twojego bloga (bądź ostrożny, jeśli hostujesz swój blog Tumblr w domenie niestandardowej, tak jak ja, użyj tego), zobaczysz wersję XML swojego bloga. Z jakiegoś powodu wydaje mi się to bardzo nieprzyjemne w Firefoksie, więc używam Chrome, wypróbuję kilka różnych przeglądarek, to pomoże ci zobaczyć plik XML dobrze sformułowany, wcięty i taki.

Po obejrzeniu wersji XML bloga zauważ, że każdy post zawiera kilka danych w orientacji atrybut = "wartość". Oto przykład z mojego bloga:

<post id="11576453174" url="http://wamoyo.com/post/11576453174" url-with-slug="http://wamoyo.com/post/11576453174/100-year-old-marathoner-finishes-race" type="link" date-gmt="2011-10-17 18:01:27 GMT" date="Mon, 17 Oct 2011 14:01:27" unix-timestamp="1318874487" format="html" reblog-key="E2Eype7F" slug="100-year-old-marathoner-finishes-race" bookmarklet="true"> 

Tak, istnieje wiele sposobów, aby to zrobić, pokażę wam jedną użyłem i upuść mój kod na dole tego postu więc można po prostu krawiec że do twoich potrzeb. Zwróć uwagę na część type = "link"? Lub identyfikator = "11576453174"? Są to wartości, których użyjesz do wyciągnięcia danych do skryptu PHP.

Oto przykład:

<!-- The Latest Text Post --> 
<?php 
    echo ""; 
    $request_url = "http://wamoyo.com/api/read?type=regular"; //get xml file 
    $xml = simplexml_load_file($request_url); //load it 
    $title = $xml->posts->post->{'regular-title'}; //load post title into $title 
    $post = $xml->posts->post->{'regular-body'}; //load post body into $post 
    $link = $xml->posts->post['url']; //load url of blog post into $link 
    $small_post = substr($post,0,350); //shorten post body to 350 characters 
    echo // spit that baby out with some stylish html 
     '<div class="panel" style="width:220px;margin:0 auto;text-align:left;"> 
      <h1 class="med georgia bold italic black">'.$title.'</h1>' 
      . '<br />' 
      . '<span>'.$small_post.'</span>' . '...' 
      . '<br /></br><div style="text-align:right;"><a class="bold italic blu georgia" href="'.$link.'">Read More...</a></div> 
     </div> 
     <img style="position:relative;top:-6px;" src="pic/shadow.png" alt="" /> 
    '; 
?> 

Tak, to jest rzeczywiście dość prosta. Skrypt PHP umieszcza dane (takie jak tytuł i tekst posta) z pliku xml do zmiennych php, a następnie wyświetla te zmienne wraz z jakimś html, aby utworzyć div, który zawiera fragment z posta na blogu. Ten zawiera najnowszy wpis tekstowy. Zapraszam do korzystania z niego, po prostu wejdź i zmień pierwszy adres URL na swój blog. A następnie wybierz dowolne wartości z pliku xml.

Na przykład powiedzmy, że chcesz, a nie najnowszy, ale drugi najnowszy post "zdjęcie".Trzeba zmienić request_url do tego:

$request_url = "http://wamoyo.com/api/read?type=photo&start=1" 

Albo powiedzmy chcesz najnowszy post z określonym tagiem

$request_url = "http://wamoyo.com/api/read?tagged=events"; 

Albo powiedzmy chcesz konkretny post, wystarczy użyć id

$request_url = "http://wamoyo.com/api/read?id=11576453174"; 

Więc wszystko, co musisz zrobić, to przywiązać do? z dowolnym parametrem i użyj &, jeśli masz wiele parametrów.

Jeśli chcesz zrobić coś bardziej wyszukane, musisz docs Tumblr api tutaj: http://www.tumblr.com/docs/en/api/v2

nadzieję, że to było pomocne!

+1

Wierzę, że możesz również użyć 'yourblogname.tumblr.com' na niestandardowych nazwach domen. Na przykład działa 'crystilogic.tumblr.com/api/read/json', ale' crystilogic.tumblr.com' przekierowuje na 'mixingmemory.org'. – isomorphismes

+0

Tak, zdecydowanie prawda. Święta ... HAHA! Nauczyłem się wiele, odkąd postawiłem to pytanie, lol. Robię teraz rzeczy node.js, Kinda fajnie, żeby zobaczyć ile się nauczyłem. Podziwia ludy stackoverflow! – Costa

Powiązane problemy