Costruisci un feed RSS 2.0 con CodeIgniter

In questo tutorial, costruiremo un feed RSS 2.0 con il framework PHP CodeIgniter. Dopo questo tutorial, sarai in grado di creare un feed per qualsiasi sito web personalizzato in pochissimo tempo.

Dettagli dell'esercitazione

  • Programma: CodeIgniter PHP Framework
  • Versione: 1.7.1
  • Difficoltà: Facile
  • Tempo di completamento stimato: 30 minuti

Step 1: Cosa ci serve

In primo luogo, daremo un'occhiata agli strumenti necessari per iniziare. Oltre all'installazione di CodeIgniter, abbiamo bisogno di un database MySQL in esecuzione con alcuni contenuti da cui possiamo costruire il nostro feed.

A tale scopo, ecco alcune voci fittizie che puoi importare. Crea un database chiamato tut_feeds. Quindi, copia il seguente codice e importalo nel tuo database MySQL.

 CREATE TABLE SE NON ESISTE 'post' ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (120) NOT NULL, testo 'testo' NOT NULL, data 'date' NOT NULL, PRIMARY KEY ('id' )) ENGINE = MyISAM; INSERISCI I 'post' ('id', 'titolo', 'testo', 'data') VALORI (1, 'Alcuni grandi articoli', 'È ormai accertato che un lettore sarà distratto dal contenuto leggibile di una pagina quando si guarda al suo layout.Il punto di utilizzo di Lorem Ipsum è che ha una distribuzione più o meno normale di lettere, invece di usare "Contenuto qui, contenuto qui", che lo rende simile all'inglese leggibile. la pubblicazione di pacchetti e di editor di pagine Web ora utilizza Lorem Ipsum come testo del modello predefinito, e una ricerca di "lorem ipsum" scoprirà molti siti Web ancora nella loro infanzia e varie versioni si sono evolute nel corso degli anni, a volte per caso, a volte di proposito ( umorismo iniettato e cose simili). ',' 2009-08-10 '), (2,' Un altro grande articolo ',' È ormai accertato che un lettore sarà distratto dal contenuto leggibile di una pagina quando guarderà Il punto di utilizzo di Lorem Ipsum è che ha una distribuzione più o meno normale di lettere, invece di usare "Contenuto qui, cont. ent here ", rendendolo simile all'inglese leggibile. Molti pacchetti di desktop publishing e editor di pagine web ora usano Lorem Ipsum come testo di modello predefinito, e una ricerca di "lorem ipsum" scoprirà molti siti Web ancora nella loro infanzia. Varie versioni si sono evolute nel corso degli anni, a volte per caso, a volte di proposito (umorismo iniettato e simili). ',' 2009-08-10 '), (3,' Notizie da myfeed ',' È un fatto consolidato da molto tempo che un lettore sarà distratto dal contenuto leggibile di una pagina quando osserva il suo layout.Il punto di usare Lorem Ipsum è che ha una distribuzione più o meno normale di lettere, invece di usare "Contenuto qui, contenuto qui "Sembrano un inglese leggibile: molti pacchetti di desktop publishing e editor di pagine web ora usano Lorem Ipsum come testo di modello predefinito e una ricerca di" lorem ipsum "scoprirà molti siti Web ancora nella loro infanzia. gli anni, a volte per caso, a volte di proposito (umorismo iniettato e simili). ',' 2009-08-10 ');

Questo è come dovrebbe apparire in phpmyadmin. Dopo aver incollato il codice, premere il tasto Ok pulsante sul lato destro.

Se tutto funziona correttamente, dovresti vedere qualcosa di simile a questo:

Passaggio 2: impostazione di CodeIgniter

Prima di iniziare a scrivere il codice, dobbiamo configurare CodeIgniter.

Passare alla cartella CI, quindi a system / application / config. Dovremo modificare i seguenti file:

  • autoload.php
  • config.php
  • database.php
  • routes.php

Modifica il autoload.php in questo modo:

 $ autoload ['libraries'] = array ('database');

Questo dirà a CI di caricare automaticamente il database; quindi non abbiamo bisogno di caricarlo ogni volta.

Modifica il config.php in questo modo:

 $ config ['base_url'] = "http: // localhost / YOUR DIRECTORY";

Devi sostituire Tutorials / ci_feeds con la tua directory e la cartella CI.

Modifica il database.php in questo modo:

 $ db ['default'] ['hostname'] = "localhost"; // il tuo host $ db ['default'] ['username'] = "root"; $ db ['default'] ['password'] = ""; $ db ['default'] ['database'] = "tut_feeds";

Con queste impostazioni, diciamo a CI quale database utilizzare. Qui devi anche sostituire hostname, nome utente e
parola d'ordine con le tue informazioni personali sul database.

Modifica il route.php in questo modo:

 $ route ['default_controller'] = "Feed";

Il controller predefinito è il "indice" controller per la tua applicazione. Ogni volta che apri
localhost / LA TUA DIRECTORY, questo controller predefinito verrà caricato per primo. Creeremo il alimentazione nel prossimo passaggio.

Passaggio 3: creazione del controller di alimentazione

In questo controller, tutta la magia accade. Vai a system / application / controller e creare un nuovo file
chiamato feed.php. Quindi, crea il Alimentazione controller e farlo estendere il controller CI padre.

 la classe Feed estende Controller function Feed () parent :: Controller (); 

Se sei già confuso per favore dai un'occhiata a Jeffrey's
Sviluppo facile con il tutorial CodeIgniter.
Dopo aver imparato le basi, torna a continuare questo tutorial! :)

Prima del prossimo passo, faremo uso dei grandi aiutanti di CI. Carica il xml e testo aiutante.

la classe Feed estende Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'testo'); 

Passaggio 4: creazione del modello

Successivamente, creerà un modello per ricevere dati dal database. Se non sai quali sono i modelli, dai un'occhiata alla CI
guida utente. Vai a system / application / modelli
e creare un file chiamato posts_model.php.

la classe Posts_model estende Model // ottieni tutte le funzioni function getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

Utilizziamo record attivi per ricevere dati
dal database. Il primo parametro dichiara la tabella che vogliamo usare e con la seconda possiamo impostare un limite - quindi noi
può dire a CI quanti record vogliamo recuperare.

Forse l'hai notato $ limite è impostato su NULL per impostazione predefinita. Questo rende possibile impostare un limite, ma non devi.
Se non si imposta un secondo parametro, questa funzione restituirà semplicemente tutti i record.

Passaggio 5: ritorno al controller di alimentazione

Ora che abbiamo creato il nostro modello, possiamo continuare con il nostro controller di alimentazione. Caricheremo il posts_model che abbiamo appena creato.

la classe Feed estende Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'testo'); $ this-> load-> model ('posts_model', 'posts'); 

Con il secondo parametro, assegniamo il nostro modello a un nome di oggetto diverso - quindi abbiamo meno da digitare: P. Ora creiamo il indice
metodo che è il metodo chiamato di default. Impostiamo anche alcune informazioni per la vista del feed.

 function index () $ data ['feed_name'] = 'MyWebsite.com'; // il tuo sito web $ data ['encoding'] = 'utf-8'; // la codifica $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; // l'url del tuo feed $ data ['page_description'] = 'Ciò di cui tratta il mio sito viene qui'; // some description $ data ['page_language'] = 'en-en'; // la lingua $ data ['creator_email'] = '[email protected]'; // la tua email $ data ['posts'] = $ this-> posts-> getPosts (10); intestazione ("Content-Type: application / rss + xml"); // importante! 

Mentre la maggior parte delle informazioni di cui sopra è facile da capire, daremo un'occhiata a due di esse.
intestazione ("Content-Type: application / rss + xml"); è una parte molto importante. Questo dice al browser di analizzarlo come
un feed RSS. Altrimenti il ​​browser proverà ad analizzarlo come testo normale o html.

Con $ data ['posts'] = $ this-> posts-> getPosts (10); stiamo usando il nostro modello e stiamo memorizzando tutti i record nel $ messaggi schieramento.
Ho impostato il limite a 10; quindi restituirà, al massimo, 10 record. È possibile impostare questo valore più alto o più basso se lo si desidera. Se lo lasciamo
vuoto, come $ data ['posts'] = $ this-> posts-> getPosts ();, restituirebbe tutti i record.

Infine, abbiamo bisogno di caricare il vista che creeremo nel passaggio successivo.

 function index () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; // la codifica $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Quello di cui tratta il mio sito viene qui'; $ data ['page_language'] = 'en-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); intestazione ("Content-Type: application / rss + xml"); $ this-> load-> view ('rss', $ data); 

Nostro $ data array viene passato come secondo parametro al file di visualizzazione, quindi possiamo accedervi nella vista.
Il tuo controller di alimentazione dovrebbe ora apparire come questo:

la classe Feed estende Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'testo'); $ this-> load-> model ('posts_model', 'posts');  function index () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Quello di cui tratta il mio sito viene qui'; $ data ['page_language'] = 'en-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); intestazione ("Content-Type: application / rss + xml"); $ this-> load-> view ('rss', $ data); 

Passaggio 6: creazione della vista

Infine dobbiamo creare il file di visualizzazione, il nostro output. Vai a system / application / views e cassa un file chiamato
rss.php.

Per prima cosa impostiamo il versione xml e il codifica nella testa.

 '. "\ N"; ?>

Seguito da alcune meta informazioni rss.

  

Ora accediamo all'array $ data dal passaggio precedente. Possiamo accedere a questi dati tramite i tasti dell'array, in questo modo:

 <?php echo $feed_name; ?>     Diritto d'autore  

Ora dobbiamo fare un ciclo, con per ciascuno, per ottenere tutti i record.

 risultato () come $ post):?>  <?php echo xml_convert($post->titolo); ?> id)?> id)?> testo, 200); ?>]]> Data; ?>    <

Per collegamento e guida, devi impostare un link al controller in cui vengono scaricati i post. Per esempio: i miei / messaggi / $ post-> ID.

Spero che tu abbia notato CDATA. Questo è usato per l'output di testo (contenuto). Ricorda come abbiamo imparato in testa che questo è xml;
quindi deve essere valido xml. Se non impostiamo CDATA avremo potenzialmente un markup non valido.

Passaggio 7: panoramica

Ora i tuoi file dovrebbero assomigliare a questo:

system / application / controllers / feed.php

la classe Feed estende Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'testo'); $ this-> load-> model ('posts_model', 'posts');  function index () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Quello di cui tratta il mio sito viene qui'; $ data ['page_language'] = 'en-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); intestazione ("Content-Type: application / rss + xml"); $ this-> load-> view ('rss', $ data); 

system / application / modelli / posts_model.php

la classe Posts_model estende Model // ottieni tutte le funzioni function getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

system / application / views / rss.php

 '. "\ N"; ?>   <?php echo $feed_name; ?>     Diritto d'autore   risultato () come $ post):?>  <?php echo xml_convert($post->titolo); ?> id)?> id)?> testo, 200); ?>]]> Data; ?>    

E il nostro feed sembra così, solo con altri contenuti :)

Conclusione

Spero tu abbia imparato quanto sia facile costruire un feed RSS 2.0 con la potenza di CodeIgniter. Per ulteriori tutorial e screencast su CodeIgniter, dai un'occhiata a Jeffrey's CodeIgniter di Scratch series.

  • Seguici su Twitter o iscriviti al feed Nettuts + RSS per i migliori tutorial di sviluppo web sul web.