RSS er XML-standard sem að fréttaveitur nota til þess að birta lista yfir fréttirnar hjá sér. <a href="http://rss.molar.is/“>RSS.molar.is</a> er snilldarvefur um RSS, og þar er að finna slóðir á ýmis RSS skjöl sem og hægt að smíða sína eigin yfirlitssíðu (ég hef smíðað mér mína eigin <a href=”http://joi.betra.is/portal“>vefgátt</a> þar sem að ég get fylgst með þeim fréttamiðlum og dagbókum sem ég hef áhuga á í gegnum .rss skjölin þeirra).

Hvað græðir þú á því að nota RSS? Með því að nota RSS geta lesendur þínir séð hvenær nýjar fréttir koma inn, og með því að smella á tenglana fara lesendurnir beint á nýju fréttina (eða t.d. dagbókarfærsluna, því þetta virkar fyrir hvað sem þú vilt setja á RSS form).

Það er lítið mál að búa til þessi .rss skjöl. Í hvert skipti sem að ég bý til nýja frétt eða breyti frétt (á <a href=”http://sheffwed.betra.is/">http://sheffwed.betra.is/</a>) þá uppfærist .rss skjalið mitt með nýjustu upplýsingum úr grunninum.

Þetta function sem ég hef búið til miðast við að MySQL-taflan fyrir fréttirnar líti svona út:

CREATE TABLE news_t (
news_id tinyint(4) NOT NULL auto_increment,
news_date date DEFAULT ‘0000-00-00’ NOT NULL,
news_title varchar(60),
news_text text,
PRIMARY KEY (news_id),
UNIQUE news_id (news_id),
);

Að sjálfsögðu getur fréttataflan ykkar litið öðruvísi út, en þá er bara að passa uppá að breyta nöfnunum á öllum þessum news_eitthvað hér að neðan í rétt nafn fyrir ykkar töflur.

Í hvert skipti sem að ég sumsé bý til eða breyti frétt kalla ég á tvö föll, annað fallið er einfaldlega að setja inn eða uppfæra upplýsingarnar í MySQL töflunni (og það eiga allir að kunna að gera eftir að hafa lesið eldri greinar :) ), og hitt fallið skrifar út .rss skrá.

Í functions.php hjá mér geymi ég fallið, athugið að þar sem að XML notar &lt;? til þess að skilgreina að það sé XML, er mikilvægt að þegar þú byrjar að skrifa php-kóðann, að skrifa &lt;?php, en ekki bara &lt;?

============= function.php =============
&lt;?php
function make_rss() {
$query = “SELECT news_id, news_date, news_title, news_text FROM news_t ORDER BY news_date DESC, news_id DESC”;
$result = mysql_query($query);
if ($row = mysql_fetch_array($result)) {

$printout = “&lt;?xml version=\”1.0\“ encoding=\”ISO-8859-1\“?&gt;
&lt;!DOCTYPE rss PUBLIC \”-//Netscape Communications//DTD RSS 0.91//EN\“ \”http://www.scripting.com/dtd/rss-0_91.dtd\“&gt;
&lt;rss version=\”0.91\“&gt;
&lt;channel&gt;
&lt;title&gt;Nafnið á fréttaveitunni minni&lt;/title&gt;
&lt;link&gt;URLið fyrir vefinn minn&lt;/link&gt;
&lt;description&gt;Lýsing á fréttaveitunni minni, nokkur orð bara&lt;/description&gt;
”;

//skilgreinum fastana okkar, slóðina á rétta síðu og svo nöfnin á dálkunum í gagnagrunninum
$url_path = "http://minn.vefur.is/frett.php?frett=";
do {
$id = $row["news_id"];
$title = $row["news_title"];
$dags = $row["news_date"];
$dags = new_date($dags);
$texti = $row["news_text"];

//ætla bara að birta fyrstu 250 stafina af fréttinni í XML-skjalinu, ekki sniðugt að birta allan textann, bara óþarfa eyðsla á plássi
$texti = substr ($texti, 0, 250);

//núna byrjar lykkjan hjá mér, $printout bætir við sig nýrri færslu á meðan að þær eru til

$printout = $printout.“
&lt;item&gt;
&lt;link&gt;$url_path$id&lt;/link&gt;
&lt;title&gt;$title&lt;/title&gt;
&lt;description&gt;$texti&lt;/description&gt;
&lt;/item&gt;
”;
} while($row = mysql_fetch_array($result));

//nú er ég búinn að lúppa í gegnum fréttirnar, þá er bara að finna út hvenær við gerðum þetta
$buidtil = date(“j M Y G:i:s”);

//og núna prenta ég fótinn á skjalinu, þar er tekið fram hvenær skjalinu var síðast breytt

$loka = “\n&lt;lastBuildDate&gt;$buidtil GMT&lt;/lastBuildDate&gt; \n&lt;/channel&gt;\n&lt;/rss&gt;\n”;
$printout = $printout.$loka;

//núna inniheldur $printout ALLT sem við ætlum að skrifa í .rss skjalið

//opnum skjalið sem við ætlum að skrifa í, annað hvort á linux eða windows

//fyrir linux notum við þetta
$fp = fopen(“/home/vefurinn.minn/html/skjalid-mitt.rss”, “w”);

//fyrir windows notum við þetta, þið verðið að taka út // til að það virki
//$fp = fopen(“c:\\vefir\\minnvefur\\html\\skjalid-mitt.rss”, “w”);

//skrifum $printout breytuna í skjalið sem við vorum að opna
fwrite($fp,“$printout”);
}
mysql_free_result($result);
}
//tada! allt búið, nú eigum við að eiga skjalid-mitt.rss á réttum stað og aðrir geta tengt í það
?&gt;
======================================

Laggo.. og hvað erum við að gera í þessu functioni?
Fyrstu línurnar eru einfaldar, við bara tengjum okkur við gagnagrunninn og náum í allar fréttirnar, þær nýjustu fyrst.

$printout breytan er innihald .rss skráarinnar sem við ætlum að búa til.

Það sem við gerum fyrst er að setja inn þessa venjulegu XML-hausa sem að þurfa að vera, þar breytið þið að sjálfsögðu öllu þannig að það passi fyrir vefinn ykkar.

Því næst koma fastarnir sem þið breytið þannig að þeir henti, svo byrjar lykkjan og þá fiktið þið ekki í neinu, að síðustu kemur fóturinn sem þið fiktið ekki heldur í.

Það eina sem þið þurfið svo að gera er að breyta slóðanum á skjalinu sem við ætlum að opna og skrifa í, ég setti dæmi um hvernig slóðinn á skjalið er, hvort sem þið notið Windows eða *nix.

Ég er búinn að setja þó nokkur comment í þennan kóða hér að ofan, það ætti að vera nóg fyrir ykkur að afrita hann og líma í PHP-skjal, þá ætti allt að fara í gang.

Til að sjá hvernig RSS-skjalið ætti að líta út eftir þetta þá getið þið náð í .rss skjalið sem að þetta function er að búa til fyrir mig, á <a href="http://sheffwed.betra.is/sheffwed.rss">http://sheffwed.betra.is/sheffwed.rss</a>, opnað það í textaritli og borið saman við ykkar eigin .rss.

Gangi ykkur vel!

(og svo geta ASP-mennirnir kannski endurskrifað þetta function til að það virki fyrir þá sem nota það)
Summum ius summa inuria