2009-10-14 10 views
8

Vorrei integrare il mio feed tumblr al mio sito web. Sembra che tumblr abbia un'API per questo, ma non sono abbastanza sicuro di come usarlo. Da quanto ho capito, richiedo la pagina e tumblr restituisce un file xml con i contenuti del mio blog. Ma come faccio a trasformare questo xml in un html significativo? Devo analizzarlo con php, trasformando i tag pertinenti in intestazioni e così via? Mi dico che non può essere così doloroso. Qualcuno ha qualche intuizione?Integrazione del blog tumblr con il sito web

+0

La domanda menziona specificamente php, rendendolo correlato alla programmazione. –

risposta

4

È possibile utilizzare PHPTumblr, un wrapper API scritto in PHP che rende il recupero dei post un gioco da ragazzi.

+1

Godsent. Ora per imparare php ... – Ying

1

Ci sono due modi principali per farlo. Innanzitutto, è possibile analizzare l'xml, estraendo il contenuto dai tag necessari (alcuni modi per farlo a seconda che si utilizzi un parser SAX o DOM). Questa è la soluzione rapida e sporca.

È inoltre possibile utilizzare uno XSLT transformation per convertire il codice sorgente xml direttamente nel codice HTML desiderato. Questo è più complicato dal momento che devi imparare la sintassi per i modelli xslt, che è un po 'prolisso.

11

C'è un javascript comprendono che fa questo ora, disponibile da Tumblr (devi effettuare il login per vederlo): http://www.tumblr.com/developers

Si finisce per essere qualcosa di simile:

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

Questo è un modo super facile e funziona. Puoi anche aggiungere? Num = 4 dopo js per determinare quanti messaggi vengono mostrati (qui sarebbe 4). Puoi anche dare uno stile al CSS, ma lo svantaggio di questo metodo è che i tempi di post non sono mostrati – CodeVirtuoso

+0

Come impostare l'offset? Il risultato per iniziare da –

+1

Mentre sembra che ci siano più opzioni (vedi qui: http://www.tumblr.com/docs/en/api/v2#posts), sembra che l'offset sia ignorato. Potresti utilizzare l'API completa per un controllo migliore. – kweerious

3

Se si va a http://yourblog.tumblr.com/api/read dove "yourblog" deve essere sostituito con il nome del tuo blog (fai attenzione, se ospiterai il tuo blog Tumblr su un dominio personalizzato, come faccio io, usalo) vedrai la versione XML del tuo blog. Per qualche ragione, mi risulta davvero complicato per me su Firefox, quindi uso Chrome, provo un paio di browser diversi, aiuterà a vedere il file XML ben formato, rientrato e così via.

Una volta esaminata la versione XML del tuo blog, nota che ogni post ha un gruppo di dati con un attributo = "valore". Ecco un esempio dal mio blog:

<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"> 

Quindi, c'è un sacco di modi per fare questo, ti faccio vedere quello che ho usato, e rilasciare il mio codice in fondo a questo post in modo da poter solo su misura che alle tue esigenze. Si noti la parte type = "link"? O l'id = "11576453174"? Questi sono i valori che utilizzerai per inserire i dati nello script PHP.

Ecco l'esempio:

<!-- 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="" /> 
    '; 
?> 

Quindi, questo è in realtà abbastanza semplice. Lo script PHP qui colloca i dati (come il titolo del post e il testo del post) dal file xml in variabili php, quindi echos quelle variabili insieme ad alcuni html per creare un div che presenta uno snippet da un post del blog. Questo presenta il post di testo più recente. Sentiti libero di usarlo, entra e cambia quel primo URL nel tuo blog. E poi scegli i valori che vuoi dal tuo file xml.

Ad esempio, supponiamo di volere, non il più recente, ma il secondo post "foto" più recente.Devi cambiare il request_url a questo:

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

O diciamo che si desidera che la posta più recente con un tag specifico

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

O diciamo che si desidera un post specifico, basta usare l'id

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

Quindi tutto quello che dovete fare è virare sul? con qualsiasi parametro e utilizzare un & se si dispone di più parametri.

Se si vuole fare qualcosa di più elaborato, è necessario la documentazione tumblr API qui: http://www.tumblr.com/docs/en/api/v2

Spero che questo è stato utile!

+1

Credo che puoi anche usare 'yourblogname.tumblr.com' su nomi di dominio personalizzati. Ad esempio 'crystilogic.tumblr.com/api/read/json' funziona per me, ma' crystilogic.tumblr.com' reindirizza a 'mixingmemory.org'. – isomorphismes

+0

Sì, sicuramente vero. Santo ... HAHA! Ho imparato tanto da quando ho messo questa domanda, lol. Sto facendo cose node.js ora, mi piace vedere quanto ho imparato. Grazie a gente stackoverflow! – Costa

Problemi correlati