Construiți un Feed RSS 2.0 cu CodeIgniter

În acest tutorial, vom construi un feed RSS 2.0 cu codul PHP CodeIgniter. După acest tutorial, veți putea construi un feed pentru orice site personalizat în cel mai scurt timp.

Detalii tutoriale

  • Program: CodeIgniter PHP Framework
  • Versiune: 1.7.1
  • Dificultate: Uşor
  • Durata estimată de finalizare: 30 minute

Pasul 1: Ce avem nevoie

În primul rând, vom examina instrumentele necesare pentru a începe. Pe lângă o instalare a CodeIgniter, avem nevoie de o bază de date MySQL care rulează cu un anumit conținut din care să putem construi hrana noastră.

În acest scop, iată câteva intrări false pe care le puteți importa. Creați o bază de date numită tut_feeds. Apoi, copiați următorul cod și introduceți-l în baza de date MySQL.

 CREATE TABLE DACĂ NU EXISTĂ "posturi" ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (120) NOT NULL, text 'text NOT NULL, )) ENGINE = MyISAM; INSERT IN 'posturi' ('id', 'title', 'text', 'date') VALORI (1, "Un articol extraordinar", " o pagină când se uită la aspectul ei.Potul de a folosi Lorem Ipsum este că are o distribuție mai mult sau mai puțin normală a literelor, spre deosebire de utilizarea "Conținut aici, conținut aici", făcând să pară ca engleza ușor de citit. pachetele de publicare și editorii de pagini web utilizează acum Lorem Ipsum ca text de model implicit, iar o căutare pentru "lorem ipsum" va descoperi multe site-uri web aflate încă în fază incipientă. umor injectat și altele asemenea). "," 2009-08-10 "), (2," Un alt articol extraordinar "," Este un fapt dovedit de mult că un cititor va fi distras de conținutul lizibil al unei pagini Punctul de utilizare a lui Lorem Ipsum este acela că are o distribuție mai mult sau mai puțin normală a literelor, spre deosebire de utilizarea "conținutului aici, contul ent aici ", făcând să pară o limbă engleză ușor de citit. Multe pachete de publicații desktop și editoare de pagini web utilizează acum Lorem Ipsum ca text de model implicit, iar o căutare pentru "lorem ipsum" va descoperi multe site-uri web încă în fază incipientă. Diferite variante au evoluat de-a lungul anilor, uneori accidental, uneori în scop (umor injectat și altele asemenea) "," 2009-08-10 "), (3" Știri de la myfeed "," că un cititor va fi distras de conținutul lizibil al unei pagini atunci când se uită la aspectul său. Ideea de a folosi Lorem Ipsum este că are o distribuție mai mult sau mai puțin normală a literelor, spre deosebire de utilizarea "Conținut aici, conținut aici "Multe pachete de publicații desktop și editori de pagini web utilizează acum Lorem Ipsum ca text de model implicit, iar o căutare pentru" lorem ipsum "va descoperi multe site-uri web încă în fază incipientă. anii, uneori accidental, uneori în scop (umor injectat și altele asemenea) "," 2009-08-10 ");

Acesta este modul în care ar trebui să apară în phpmyadmin. După ce ați introdus codul, apăsați pe O.K pe partea dreaptă.

Dacă totul funcționează corect, ar trebui să vedeți ceva similar:

Pasul 2: Configurarea CodeIgniter

Înainte de a începe să scriem cod, trebuie să configuram CodeIgniter.

Răsfoiți în dosarul dvs. CI și apoi în sistem / application / config. Va trebui să editați următoarele fișiere:

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

Editați fișierul autoload.php astfel:

 $ autoload ['biblioteci'] = array ("baza de date");

Acest lucru îi va spune lui CI să încarce automat baza de date; așa că nu trebuie să o încărcăm de fiecare dată.

Editați config.php așa:

 $ config ['base_url'] = "http: // localhost / DIRECTORUL DVS.";

Trebuie să înlocuiți tutoriale / ci_feeds cu directorul și folderul CI.

Editați database.php așa:

 $ db ['implicit'] ['hostname'] = "localhost"; // gazdă $ db ['default'] ['username'] = "root"; $ db ['implicit'] ['parola'] = ""; $ db ['implicit'] ['baza de date'] = "tut_feeds";

Cu aceste setări, îi spunem CI ce bază de date să utilizeze. Aici, de asemenea, trebuie să înlocuiți nume de gazdă, nume de utilizator și
parola cu informațiile dvs. de bază de date personale.

Editează routes.php astfel:

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

Controlerul implicit este "index" controler pentru aplicația dvs. De fiecare dată când deschizi
localhost / DIRECTORUL DVS., acest controler implicit va fi încărcat primul. Vom crea a hrani în pasul următor.

Pasul 3: Crearea controlerului de alimentare

În acest controler, toate magia se întâmplă. Căutați sistem / aplicație / controlori și să creați un fișier nou
denumit feed.php. Apoi, creați A hrani controler și să-l extindă CI Controller părinte.

 feed-ul de clasă extinde controlerul function Feed () parent :: Controller (); 

Dacă ești deja confuz, te rog să te uiți la Jeffrey's
Dezvoltare ușoară cu tutorial CodeIgniter.
După ce ați învățat elementele de bază, reveniți pentru a continua acest tutorial! :)

Înainte de următorul pas, vom folosi cei mai buni ajutoare ale CI. Încărcați xml și text ajutor.

feed-ul de clasă extinde controlerul function Feed () parent :: Controller (); $ This-> a sarcinii> ajutor ( 'xml'); $ This-> a sarcinii> ajutor ( 'text'); 

Pasul 4: Crearea modelului

Apoi, va crea un model pentru a primi date din baza de date. Dacă nu știți care sunt modelele, aruncați o privire la CI
manualul utilizatorului. Căutați sistem / aplicatie / modele
și creați un fișier numit posts_model.php.

clasa Posts_model extinde modelul // primi toate funcțiile de postare getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

Utilizăm înregistrări active pentru a primi date
din baza de date. Primul parametru declară tabelul pe care dorim să-l folosim și cu al doilea putem seta o limită - așa că noi
poate spune CI câte înregistrări vrem să recuperăm.

Poate că ați observat asta limita $ este setat la NULL în mod implicit. Acest lucru face posibilă stabilirea unei limite, dar nu trebuie să.
Dacă nu setați un al doilea parametru, această funcție va returna pur și simplu toate înregistrările.

Pasul 5: Înapoi la controlerul de alimentare

Acum că am creat modelul nostru, putem continua cu noi feed controller. Vom încărca posts_model pe care tocmai am creat-o.

feed-ul de clasă extinde controlerul function Feed () parent :: Controller (); $ This-> a sarcinii> ajutor ( 'xml'); $ This-> a sarcinii> ajutor ( 'text'); $ this-> load-> model ('posts_model', 'posts'); 

Cu al doilea parametru, atribuim modelul nostru unui nume de obiect diferit - deci avem mai puțin de tip: P. Acum creăm index
metoda care este metoda numită implicit. Să formăm mai târziu câteva informații pentru vizualizarea fluxului.

 indexul funcției () $ data ['feed_name'] = 'MyWebsite.com'; // site-ul dvs. $ data ['encoding'] = 'utf-8'; // codarea $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; // adresa URL a fluxului dvs. $ data ['page_description'] = 'Despre site-ul meu vine aici'; // unele descrieri $ data ['page_language'] = 'en-en'; // limbajul $ data ['creator_email'] = '[email protected]'; // adresa dvs. de email $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Content-Type: aplicație / rss + xml"); // important! 

Deși majoritatea informațiilor de mai sus sunt ușor de înțeles, vom examina două dintre ele.
header ("Content-Type: aplicație / rss + xml"); este o parte foarte importantă. Acest lucru îi spune browserului să îl parseze ca
un feed RSS. În caz contrar, browserul va încerca să-l parseze ca text simplu sau html.

Cu $ date ['posturi'] = $ this-> posts-> getPosts (10); folosim modelul nostru și stocăm toate înregistrările în posturi $ mulțime.
Am setat limita la 10; așa că va reveni cel mult 10 înregistrări. Puteți seta această valoare mai mare sau mai mică dacă doriți. Dacă o lăsăm
cum ar fi $ date ['posturi'] = $ this-> posts-> getPosts ();, ar întoarce toate înregistrările.

În cele din urmă, trebuie să încărcați vedere pe care o vom crea în etapa următoare.

 indexul funcției () $ data ['feed_name'] = 'MyWebsite.com'; $ date ['codificare'] = 'utf-8'; // codarea $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Despre site-ul meu vine aici'; $ date ['page_language'] = 'en-en'; $ date ['creator_email'] = '[email protected]'; $ date ['posturi'] = $ this-> posts-> getPosts (10); header ("Content-Type: aplicație / rss + xml"); $ this-> load-> view ('rss', $ date); 

Al nostru $ date array este trecut ca al doilea parametru la fișierul de vizualizare, astfel încât să putem accesa în vedere.
Controlorul feed-ului ar trebui să arate astfel:

feed-ul de clasă extinde controlerul function Feed () parent :: Controller (); $ This-> a sarcinii> ajutor ( 'xml'); $ This-> a sarcinii> ajutor ( 'text'); $ this-> load-> model ('posts_model', 'posts');  indexul funcției () $ data ['feed_name'] = 'MyWebsite.com'; $ date ['codificare'] = 'utf-8'; $ date ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Despre site-ul meu vine aici'; $ date ['page_language'] = 'en-en'; $ date ['creator_email'] = '[email protected]'; $ date ['posturi'] = $ this-> posts-> getPosts (10); header ("Content-Type: aplicație / rss + xml"); $ this-> load-> view ('rss', $ date); 

Pasul 6: Crearea vederii

În cele din urmă trebuie să creăm fișierul de vizualizare - ieșirea noastră. Căutați sistem / aplicație / vizualizări și desenează un fișier numit
rss.php.

Mai întâi am setat xml versiune si codare în cap.

 ". "\ N"; ?>

Urmat de unele informații rss meta.

  

Acum vom accesa matricea $ date din pasul anterior. Putem accesa aceste date prin cheile matricei, cum ar fi:

 <?php echo $feed_name; ?>     Drepturi de autor  

Acum avem nevoie de o buclă, cu pentru fiecare, pentru a obține toate înregistrările.

 rezultat () ca $ post):?>  <?php echo xml_convert($post->titlu); ?> id)>> id)>> text, 200); ?>]]> Data; ?>    <

Pentru legătură și ghid, trebuie să stabiliți un link către controlorul dvs. unde postările sunt preluate. De exemplu: / posturile mele / $ post-> id.

Sper că ați observat CDATA. Acesta este folosit pentru ieșirea textului (conținut). Amintiți-vă cum am învățat în cap că asta este xml;
așa că trebuie să fie valid xml. Dacă nu setăm CDATA, vom ajunge probabil la marcare nevalidă.

Pasul 7: Prezentare generală

Acum fișierele ar trebui să arate astfel:

Sistem / aplicație / controlori / feed.php

feed-ul de clasă extinde controlerul function Feed () parent :: Controller (); $ This-> a sarcinii> ajutor ( 'xml'); $ This-> a sarcinii> ajutor ( 'text'); $ this-> load-> model ('posts_model', 'posts');  indexul funcției () $ data ['feed_name'] = 'MyWebsite.com'; $ date ['codificare'] = 'utf-8'; $ date ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Despre site-ul meu vine aici'; $ date ['page_language'] = 'en-en'; $ date ['creator_email'] = '[email protected]'; $ date ['posturi'] = $ this-> posts-> getPosts (10); header ("Content-Type: aplicație / rss + xml"); $ this-> load-> view ('rss', $ date); 

Sistem / aplicație / modele / posts_model.php

clasa Posts_model extinde modelul // primi toate funcțiile de postare getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

Sistem / aplicație / opinii / rss.php

 ". "\ N"; ?>   <?php echo $feed_name; ?>     Drepturi de autor   rezultat () ca $ post):?>  <?php echo xml_convert($post->titlu); ?> id)>> id)>> text, 200); ?>]]> Data; ?>    

Iar hrana noastră arată așa, doar cu alte conținuturi :)

Concluzie

Sper că ați învățat cât de ușor este să construiți un feed RSS 2.0 cu puterea lui CodeIgniter. Pentru mai multe tutoriale și screencast-uri de pe CodeIgniter, verificați codul lui Jeffrey CodeIgniter din seria Scratch.

  • Urmați-ne pe Twitter sau abonați la Nettuts + RSS Feed pentru cele mai bune tutoriale de dezvoltare web de pe web.
Cod