2012-02-23 6 views
9

Sto utilizzando RSS Graffitty per pubblicare elementi RSS su una pagina Facebook.Come inserire correttamente la data nell'elemento <pubdate> nel feed RSS

L'applicazione mi ha detto le voci erano mancanti alla data di pubblicazione così ho aggiunto questo tag:

echo "<pubdate>".$row['Date']."</pubdate>"; 

$ row [ 'Data'] è ottenuto da mio database MySQL ed è una colonna datetime.

Come si deve formattare/echo in modo che venga riconosciuto dal feed RSS? Devo cambiare l'elemento?

Grazie

+0

Fare attenzione a utilizzare 'pubDate' e non' pubdate' – random

risposta

13

RSS 2.0 specifiche sull'elemento <pubDate> devono essere conformi alla RFC 822 Date and Time syntax. Vale a dire, per visualizzarlo nel seguente formato:

Ven 21 Dic 2012 10:00:01 GMT

Se errore di run tuo feed RSS attraverso la W3C Feed Validator si noterà questi esempi di validi RFC822 data volte:

<pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate> 

<pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate> 

<pubDate>Wed, 02 Oct 2002 15:00:00 +0200</pubDate> 

Se si voleva utilizzare la formattazione di MySQL, che si definirebbe la colonna con la seguente use of date_format(), regolando l'UTC modificatore/marcatore, se necessario:

date_format(Date, '%a, %d %b %Y %H:%i:%s') 

Oppure si può fare tramite il PHP date method con DATE_RSSsetting the format per voi:

echo "<pubdate>".date(DATE_RSS, strtotime($row['Date']))."</pubdate>"; 

Assicurarsi che il vostro elemento <pubDate> apparire all'interno del suo nodo padre <item>.

Si noti inoltre che questo elemento è sensibile al maiuscolo/minuscolo. È necessario fornire pubDate con la maiuscola D e non tutti in minuscolo (pubdate) come altri elementi possono.

+0

Il feedvalidator mi dice: 'Ven, 24 Feb 12 18:11:13 -0700' è sbagliato. Sembra conforme all'esempio. Hai idea del perché potrebbe accadere? http://feed2.w3.org/check.cgi?url=http%3A%2F%2Flujanventas.com – lisovaccaro

+0

Rendi l'anno a quattro cifre e questo dovrebbe risolvere tutto @lis – random

+0

Probabilmente è meglio usare 'DATE_RSS 'invece di' DATE_RFC822' poiché nelle date generate da quest'ultimo, gli anni sono rappresentati da sole due cifre. –

1

Solo un suggerimento: l'opzione -r nella funzione data php è la scorciatoia per il formato RFC 2822, che effettivamente produce un anno a quattro cifre.

Vedere PHP Doc come riferimento.