Bygg et RSS 2.0 Feed med CodeIgniter

I denne opplæringen vil vi bygge et RSS 2.0 Feed med PHP Framework CodeIgniter. Etter denne opplæringen vil du kunne bygge en feed for alle egendefinerte nettsider på kort tid.

Opplæringsdetaljer

  • Program: CodeIgniter PHP Framework
  • Versjon: 1.7.1
  • Vanskelighet: Lett
  • Anslått sluttid: 30 minutter

Trinn 1: Det vi trenger

Først tar vi en titt på verktøyene som trengs for å komme i gang. Foruten en installasjon av CodeIgniter, trenger vi en kjørende MySQL database med noe innhold som vi kan bygge vår feed fra.

For dette formålet er det noen dummyoppføringer du kan importere. Opprett en database som heter tut_feeds. Deretter kopierer du følgende kode, og importerer den til MySQL-databasen.

 CREATE TABLE IF NOT EXISTS 'innlegg' ('id' int (11) IKKE NULL AUTO_INCREMENT, 'title' varchar (120) IKKE NULL, 'tekst' tekst IKKE NULL, 'dato' dato IKKE NULL, PRIMARY KEY ('id' )) MOTOR = MyISAM; INSERT TIL 'innlegg' ('id', 'tittel', 'tekst', 'dato') VÆRDIER (1, 'Noen gode artikler', 'Det er et langt etablert faktum at en leser vil bli distrahert av det lesbare innholdet i en side når du ser på layoutet. Poenget med å bruke Lorem Ipsum er at det har en mer eller mindre vanlig fordeling av bokstaver, i motsetning til å bruke «Innhold her, innhold her», slik at det ser ut som lesbart engelsk. Mange skrivebord publiseringspakker og nettredaktører bruker nå Lorem Ipsum som standardmodelltekst, og et søk etter "lorem ipsum" vil avdekke mange nettsteder fremdeles i sin barndom. Ulike versjoner har utviklet seg gjennom årene, noen ganger ved et uhell, noen ganger med vilje ( injisert humor og lignende). ',' 2009-08-10 '), (2,' En annen stor artikkel ',' Det er et langt etablert faktum at en leser vil bli distrahert av det lesbare innholdet på en side når man ser på dens oppsett. Poenget med å bruke Lorem Ipsum er at det har en mer eller mindre vanlig fordeling av bokstaver, i motsetning til bruk av "Innhold her, fortsettelse ent her ", slik at det ser ut som lesbar engelsk. Mange desktop publishing-pakker og nettsideditorer bruker nå Lorem Ipsum som standardmodelltekst, og et søk etter "lorem ipsum" vil avdekke mange nettsteder fremdeles i sin barndom. Ulike versjoner har utviklet seg gjennom årene, noen ganger ved et uhell, noen ganger med vilje (injisert humor og lignende). ',' 2009-08-10 '), (3,' Nyheter fra myfeed ',' Det er et langt etablert faktum at en leser vil bli distrahert av det lesbare innholdet på en side når man ser på utformingen. Poenget med å bruke Lorem Ipsum er at det har en mer eller mindre vanlig fordeling av bokstaver, i motsetning til å bruke "Innhold her, innhold her ", noe som gjør at det ser ut til å være lesbart engelsk. Mange desktop publishing-pakker og nettsideditorer bruker nå Lorem Ipsum som standardmodelltekst, og et søk etter" lorem ipsum "vil avdekke mange nettsteder fremdeles i sin barndom. Ulike versjoner har utviklet seg over årene, noen ganger ved et uhell, noen ganger med vilje (injisert humor og lignende). ',' 2009-08-10 ');

Slik vises det i phpmyadmin. Når du har limt inn koden, trykker du på ok knapp på høyre side.

Hvis alt fungerer riktig, bør du se ha noe slikt:

Trinn 2: Konfigurer CodeIgniter

Før vi begynner å skrive kode, må vi konfigurere CodeIgniter.

Bla til din CI-mappe, og deretter inn i Systemet / applikasjon / konfig. Vi må redigere følgende filer:

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

Rediger autoload.php slik:

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

Dette vil fortelle CI å laste databasen automatisk; så vi trenger ikke å laste den hver gang.

Rediger config.php slik:

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

Du må bytte ut tutorials / ci_feeds med katalogen din og CI-mappen.

Rediger database.php slik:

 $ db ['standard'] ['hostname'] = "localhost"; // din vert $ db ['standard'] ['brukernavn'] = "root"; $ db ['standard'] ['passord'] = ""; $ db ['standard'] ['database'] = "tut_feeds";

Med disse innstillingene forteller vi CI hvilken database du skal bruke. Her må du også erstatte vertsnavn, brukernavn og
passord med din personlige databaseinformasjon.

Rediger rutene.php slik:

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

Standard kontrolleren er "Indeks" kontrolleren for din søknad. Hver gang du åpner
lokalhost / DITT DIRECTORY, Denne standardkontrolleren lastes først. Vi lager den mate i neste trinn.

Trinn 3: Opprette strømkontrollen

I denne kontrolleren skjer alt det magiske. Bla til system / applikasjon / kontrollører og lag en ny fil
kalt feed.php. Deretter lager du Mate kontrolleren og få den til å forlenge den overordnede CI-kontrolleren.

 klasse Feed utvider Controller funksjon Feed () foreldre :: Controller (); 

Hvis du allerede er forvirret, ta en titt på Jeffrey's
Enkel utvikling med CodeIgniter opplæring.
Når du har lært det grunnleggende, gå tilbake for å fortsette denne opplæringen! :)

Før neste trinn bruker vi CIs store hjelpere. Last inn xml og tekst hjelper.

klasse Feed utvider Controller funksjon Feed () foreldre :: Controller (); $ Dette-> last> helper ( 'xml'); $ Dette-> last> helper ( 'text'); 

Trinn 4: Opprette modellen

Deretter skal du opprette en modell for å motta data fra databasen. Hvis du ikke vet hvilke modeller som er, ta en titt på CI
brukerhåndboken. Bla til system / applikasjon / modeller
og lag en fil som heter posts_model.php.

klasse Posts_model utvider modell // får alle innlegg funksjonen getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

Vi bruker aktive poster for å motta data
fra databasen. Den første parameteren erklærer bordet vi vil bruke, og med det andre kan vi sette en grense - så vi
Kan fortelle CI hvor mange poster vi vil hente.

Kanskje du har lagt merke til det $ grense er satt til NULL som standard. Dette gjør det mulig å sette en grense, men du trenger ikke.
Hvis du ikke angir en andre parameter, vil denne funksjonen bare returnere alle poster.

Trinn 5: Tilbake til strømkontrollen

Nå som vi har opprettet vår modell, kan vi fortsette med vår feed kontrolleren. Vi laster inn posts_model som vi nettopp har opprettet.

klasse Feed utvider Controller funksjon Feed () foreldre :: Controller (); $ Dette-> last> helper ( 'xml'); $ Dette-> last> helper ( 'text'); $ this-> load-> model ('posts_model', 'posts'); 

Med den andre parameteren tilordner vi modellen til et annet objektnavn - slik at vi har mindre å skrive: P. Nå lager vi index
metode som er metoden som kalles som standard. La oss sette opp litt informasjon for feedvisningen senere.

 funksjonsindeks () $ data ['feed_name'] = 'MyWebsite.com'; // din nettside $ data ['encoding'] = 'utf-8'; // kodingen $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; // url til din feed $ data ['page_description'] = 'Hva nettstedet mitt handler om kommer her'; // noen beskrivelse $ data ['page_language'] = 'en-en'; // språket $ data ['creator_email'] = '[email protected]'; // din epost $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Content-Type: application / rss + xml"); // viktig! 

Mens flertallet av informasjonen ovenfor er lett å forstå, vil vi se på to av dem.
header ("Content-Type: application / rss + xml"); er en veldig viktig del. Dette forteller at nettleseren skal analysere den som
en RSS-feed. Ellers vil nettleseren prøve å analysere det som vanlig tekst eller html.

Med $ data ['posts'] = $ this-> posts-> getPosts (10); Vi bruker vår modell og lagrer alle poster i $ innlegg matrise.
Jeg satte grensen til 10; så det vil komme tilbake, til det meste, 10 poster. Du kan sette denne verdien høyere eller lavere hvis du vil. Hvis vi forlater det
blank, som $ data ['posts'] = $ this-> posts-> getPosts ();, det ville returnere alle poster.

Til slutt må vi laste inn utsikt som vi vil skape i neste trinn.

 funksjonsindeks () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; // kodingen $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Hva nettstedet mitt handler om, kommer her'; $ data ['page_language'] = 'no-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Content-Type: application / rss + xml"); $ this-> load-> view ('rss', $ data); 

Våre $ data array er bestått som den andre parameteren til visningsfilen, så vi kan få tilgang til den i visningen.
Din strømkontroller skal nå se slik ut:

klasse Feed utvider Controller funksjon Feed () foreldre :: Controller (); $ Dette-> last> helper ( 'xml'); $ Dette-> last> helper ( 'text'); $ this-> load-> model ('posts_model', 'posts');  funksjonsindeks () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Hva nettstedet mitt handler om, kommer her'; $ data ['page_language'] = 'no-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Content-Type: application / rss + xml"); $ this-> load-> view ('rss', $ data); 

Trinn 6: Opprette visningen

Til slutt må vi lage visningsfilen - vår produksjon. Bla til system / applikasjon / visninger og kasse en fil som heter
rss.php.

Først satte vi xml versjon og koding i hodet.

 '. "\ N"; ?>

Etterfulgt av noen rss meta informasjon.

  

Nå får vi tilgang til matrisen $ data fra forrige trinn. Vi kan få tilgang til disse dataene via arraynøklene, slik som:

 <?php echo $feed_name; ?>     opphavsrett  

Nå må vi løse, med for hver, å få alle poster.

 Resultat () som $ post):?>  <?php echo xml_convert($post->tittel); ?> id)?> id)?> tekst, 200); ?>]]> Dato; ?>    <

Til link og guide, du må sette en lenke til kontrolleren din der innleggene hentes. For eksempel: mine / innlegg / $ post-> id.

Jeg håper du la merke til CDATA. Dette brukes til tekst-utdata (innhold). Husk hvordan vi lærte i hodet at dette er xml;
så det må være xml gyldig. Hvis vi ikke angir CDATA, vil vi muligens ende opp med ugyldig oppføring.

Trinn 7: Oversikt

Nå skal filene dine se slik ut:

Systemet / applikasjon / kontrollere / feed.php

klasse Feed utvider Controller funksjon Feed () foreldre :: Controller (); $ Dette-> last> helper ( 'xml'); $ Dette-> last> helper ( 'text'); $ this-> load-> model ('posts_model', 'posts');  funksjonsindeks () $ data ['feed_name'] = 'MyWebsite.com'; $ data ['encoding'] = 'utf-8'; $ data ['feed_url'] = 'http://www.MyWebsite.com/feed'; $ data ['page_description'] = 'Hva nettstedet mitt handler om, kommer her'; $ data ['page_language'] = 'no-en'; $ data ['creator_email'] = '[email protected]'; $ data ['posts'] = $ this-> posts-> getPosts (10); header ("Content-Type: application / rss + xml"); $ this-> load-> view ('rss', $ data); 

Systemet / applikasjon / modeller / posts_model.php

klasse Posts_model utvider modell // får alle innlegg funksjonen getPosts ($ limit = NULL) return $ this-> db-> get ('posts', $ limit); 

Systemet / applikasjon / visninger / rss.php

 '. "\ N"; ?>   <?php echo $feed_name; ?>     opphavsrett   Resultat () som $ post):?>  <?php echo xml_convert($post->tittel); ?> id)?> id)?> tekst, 200); ?>]]> Dato; ?>    

Og vår feed ser slik ut, bare med annet innhold :)

Konklusjon

Jeg håper du har lært hvor lett det er å bygge et RSS 2.0 Feed med kraften til CodeIgniter. For flere opplæringsprogrammer og screencasts på CodeIgniter, sjekk ut Jeffres CodeIgniter from Scratch-serien.

  • Følg oss på Twitter, eller abonner på Nettuts + RSS-feed for de beste webutviklingsopplæringene på nettet.