Bouw een RSS 2.0 Feed met CodeIgniter

In deze tutorial zullen we een RSS 2.0 Feed bouwen met de PHP framework CodeIgniter. Na deze zelfstudie kunt u in een mum van tijd een feed voor elke aangepaste website maken.

Zelfstudiedetails

  • Programma: CodeIgniter PHP Framework
  • Versie: 1.7.1
  • Moeilijkheidsgraad: Gemakkelijk
  • Geschatte voltooiingstijd: 30 minuten

Stap 1: Wat we nodig hebben

Eerst bekijken we de hulpmiddelen die nodig zijn om aan de slag te gaan. Naast een installatie van CodeIgniter hebben we een werkende MySQL-database nodig met wat inhoud waaruit we onze feed kunnen bouwen.

Hier zijn enkele dummy-items die u kunt importeren. Maak een database met de naam tut_feeds. Kopieer vervolgens de volgende code en importeer deze in uw MySQL-database.

 CREËER TAFEL INDIEN NIET BESTAAT 'berichten' ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (120) NOT NULL, 'tekst' tekst NOT NULL, 'date' date NOT NULL, PRIMARY KEY ('id') )) MOTOR = MyISAM; INVOEGEN IN 'berichten' ('id', 'titel', 'tekst', 'datum') WAARDEN (1, 'Een goed artikel', 'Het is een bekend feit dat een lezer wordt afgeleid door de leesbare inhoud van een pagina bij het bekijken van de lay-out Het punt van het gebruik van Lorem Ipsum is dat het een min of meer normale verdeling van letters heeft, in tegenstelling tot het gebruik van "Inhoud hier, inhoud hier", waardoor het lijkt op leesbaar Engels. het publiceren van pakketten en webpaginabewerkers gebruikt Lorem Ipsum als hun standaardmodeltekst en een zoekopdracht naar "lorem ipsum" zal vele websites ontdekken die nog in de kinderschoenen staan. Verschillende versies zijn in de loop van de jaren geëvolueerd, soms per ongeluk, soms expres ( geïnjecteerde humor en dergelijke). ',' 2009-08-10 '), (2,' Another great article ',' Het is een bekend feit dat een lezer wordt afgeleid door de leesbare inhoud van een pagina wanneer hij naar de inhoud kijkt. Het gebruik van Lorem Ipsum is dat het een min of meer normale verdeling van letters heeft, in tegenstelling tot het gebruik van "Inhoud hier, ent hier ", waardoor het lijkt op leesbaar Engels. Veel desktop publishing-pakketten en webpagina-editors gebruiken nu Lorem Ipsum als hun standaard modeltekst en een zoekopdracht naar "lorem ipsum" zal vele websites ontdekken die nog in de kinderschoenen staan. Verschillende versies zijn in de loop der jaren geëvolueerd, soms per ongeluk, soms expres (geïnjecteerde humor en dergelijke). ',' 2009-08-10 '), (3,' News from myfeed ',' Het is een bekend feit dat een lezer wordt afgeleid door de leesbare inhoud van een pagina wanneer hij naar de lay-out kijkt. Het punt van het gebruik van Lorem Ipsum is dat het een min of meer normale verdeling van letters heeft, in tegenstelling tot het gebruik van "Inhoud hier, inhoud hier ", waardoor het lijkt op leesbaar Engels. Veel desktop publishing-pakketten en webpagina-editors gebruiken nu Lorem Ipsum als hun standaard modeltekst en een zoekopdracht naar" lorem ipsum "zal vele websites ontdekken die nog in de kinderschoenen staan. de jaren, soms per ongeluk, soms expres (geïnjecteerde humor en dergelijke). ',' 2009-08-10 ');

Dit is hoe het zou moeten verschijnen in phpmyadmin. Nadat u de code hebt geplakt, drukt u op OK knop aan de rechterkant.

Als alles goed werkt, zou u zoiets als dit moeten zien:

Stap 2: CodeIgniter instellen

Voordat we beginnen met het schrijven van code, moeten we CodeIgniter configureren.

Blader naar uw CI-map en vervolgens naar system / application / config. We zullen de volgende bestanden moeten bewerken:

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

Bewerk de autoload.php als volgt:

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

Dit zal CI vertellen om de database automatisch te laden; dus we hoeven het niet elke keer te laden.

Bewerk de config.php als volgt:

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

Je moet vervangen tutorials / ci_feeds met uw map en CI-map.

Bewerk de database.php als volgt:

 $ db ['standaard'] ['hostname'] = "localhost"; // uw host $ db ['standaard'] ['gebruikersnaam'] = "root"; $ db ['standaard'] ['wachtwoord'] = ""; $ db ['standaard'] ['database'] = "tut_feeds";

Met deze instellingen laten we CI weten welke database moet worden gebruikt. Hier moet je ook vervangen hostname, gebruikersnaam en
wachtwoord met uw persoonlijke database-info.

Bewerk de routes.php als volgt:

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

De standaardcontroller is de "inhoudsopgave" controller voor uw toepassing. Elke keer dat je opent
localhost / YOUR DIRECTORY, deze standaard controller wordt eerst geladen. We zullen het maken voeden in de volgende stap.

Stap 3: De feedcontroller maken

In deze controller gebeurt alle magie. Blader naar system / application / controllers en maak een nieuw bestand
riep feed.php. Maak vervolgens de Voeden controller en laat deze de ouder-CI-controller uitbreiden.

 class Feed breidt Controller function Feed () parent :: Controller (); 

Als je al in de war bent, kijk eens naar Jeffrey's
Eenvoudige ontwikkeling met CodeIgniter-zelfstudie.
Nadat je de basis hebt geleerd, keer terug om door te gaan met deze tutorial! :)

Voor de volgende stap maken we gebruik van de grote helpers van CI. Laad de xml en tekst helper.

class Feed breidt Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'tekst'); 

Stap 4: Het model maken

Maak vervolgens een model om gegevens uit de database te ontvangen. Als je niet weet welke modellen zijn, kijk dan eens naar de CI
gebruikershandleiding. Blader naar system / application / modellen
en maak een bestand met de naam posts_model.php.

class Posts_model breidt Model uit // krijg alle postings functie getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

We gebruiken actieve records om gegevens te ontvangen
uit de database. De eerste parameter verklaart de tabel die we willen gebruiken en met de tweede kunnen we een limiet instellen - dus wij
kan CI vertellen hoeveel records we willen ophalen.

Misschien heb je dat opgemerkt $ limit is standaard ingesteld op NULL. Dit maakt het mogelijk om een ​​limiet in te stellen, maar dat hoeft niet.
Als u geen tweede parameter instelt, retourneert deze functie eenvoudig alle records.

Stap 5: terug naar de feedcontroller

Nu we ons model hebben gemaakt, kunnen we doorgaan met onze feed controller. We laden de posts_model die we net hebben gemaakt.

class Feed breidt Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'tekst'); $ this-> load-> model ('posts_model', 'posts'); 

Met de tweede parameter wijzen we ons model toe aan een andere objectnaam - dus we hebben minder te typen: P. Nu maken we de inhoudsopgave
methode die standaard de methode is. Laten we later ook wat informatie voor de feedweergave instellen.

 function index () $ data ['feed_name'] = 'MyWebsite.com'; // uw website $ data ['encoding'] = 'utf-8'; // de codering van $ gegevens ['feed_url'] = 'http://www.MyWebsite.com/feed'; // de url naar uw feed $ data ['page_description'] = 'Waar mijn site over gaat, komt hier'; // some description $ data ['page_language'] = 'en-en'; // de taal $ data ['creator_email'] = '[email protected]'; // uw e-mail $ gegevens ['berichten'] = $ dit-> post-> getPosts (10); header ("Inhoudstype: toepassing / rss + xml"); // belangrijk! 

Hoewel het grootste deel van de bovenstaande informatie gemakkelijk te begrijpen is, zullen we er twee bekijken.
header ("Inhoudstype: toepassing / rss + xml"); is een heel belangrijk onderdeel. Dit vertelt de browser om het te parseren als
een RSS-feed. Anders probeert de browser het te parseren als platte tekst of html.

Met $ data ['posts'] = $ this-> posts-> getPosts (10); we gebruiken ons model en bewaren alle records in de $ posts rangschikking.
Ik heb de limiet ingesteld op 10; dus het zal maximaal 10 records retourneren. U kunt deze waarde hoger of lager instellen als u dat wilt. Als we het verlaten
leeg, zoals $ data ['posts'] = $ this-> posts-> getPosts ();, het zou alle records teruggeven.

Ten slotte moeten we de. Laden uitzicht die we in de volgende stap zullen maken.

 function index () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; // de codering van $ gegevens ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Waar mijn site over gaat, komt hier'; $ data ['page_language'] = 'en-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Inhoudstype: toepassing / rss + xml"); $ this-> load-> view ('rss', $ data); 

Onze $ data array wordt doorgegeven als de tweede parameter voor het weergavebestand, zodat we er toegang toe hebben in de weergave.
Uw feedcontroller zou er nu als volgt uit moeten zien:

class Feed breidt Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'tekst'); $ 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'] = 'Waar mijn site over gaat, komt hier'; $ data ['page_language'] = 'en-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Inhoudstype: toepassing / rss + xml"); $ this-> load-> view ('rss', $ data); 

Stap 6: De weergave maken

Eindelijk moeten we het weergavebestand maken - onze uitvoer. Blader naar system / application / x bekeken en krat een bestand genaamd
rss.php.

Eerst stellen we de xml-versie en de codering in het hoofd.

 '. "\ N"; ?>

Gevolgd door wat rss meta-informatie.

  

Nu zullen we toegang krijgen tot de array $ data van de vorige stap. We hebben toegang tot deze gegevens via de array-toetsen, zoals:

 <?php echo $feed_name; ?>     auteursrechten  

Nu moeten we lussen, met foreach, om alle records te krijgen.

 result () als $ post):?>  <?php echo xml_convert($post->titel); ?> id)?> id)?> tekst, 200); ?>]]> datum; ?>    <

Voor link en gids, je moet een link naar je controller instellen waar de berichten worden opgehaald. Bijvoorbeeld: mijn / berichten / $ post-> id.

Ik hoop dat je CDATA hebt opgemerkt. Dit wordt gebruikt voor tekstuitvoer (inhoud). Onthoud hoe we in het hoofd hebben geleerd dat dit zo is xml;
dus het moet xml geldig zijn. Als we CDATA niet instellen, krijgen we mogelijk een ongeldige opmaak.

Stap 7: Overzicht

Nu zouden uw bestanden er als volgt uit moeten zien:

system / application / controllers / feed.php

class Feed breidt Controller function Feed () parent :: Controller (); $ This-> load-> helper ( 'xml'); $ This-> load-> helper ( 'tekst'); $ 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'] = 'Waar mijn site over gaat, komt hier'; $ data ['page_language'] = 'en-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Inhoudstype: toepassing / rss + xml"); $ this-> load-> view ('rss', $ data); 

system / application / modellen / posts_model.php

class Posts_model breidt Model uit // krijg alle postings functie getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

system / application / views / rss.php

 '. "\ N"; ?>   <?php echo $feed_name; ?>     auteursrechten   result () als $ post):?>  <?php echo xml_convert($post->titel); ?> id)?> id)?> tekst, 200); ?>]]> datum; ?>    

En onze feed ziet er zo uit, alleen met andere inhoud :)

Conclusie

Ik hoop dat je hebt geleerd hoe gemakkelijk het is om een ​​RSS 2.0 Feed te bouwen met de kracht van CodeIgniter. Voor meer tutorials en screencasts over CodeIgniter, bekijk Jeffrey's CodeIgniter from Scratch-serie.

  • Volg ons op Twitter of abonneer je op de Nettuts + RSS Feed voor de beste tutorials voor webontwikkeling op internet.