Op het net zijn veel tutorials en artikelen te vinden over hoe je een RSS-feed op je site kan tonen. Erg leuk, maar niet iedereen wil de feed van een ander op z'n site. Wat je minder makkelijk vindt (ik althans) is hoe je automatisch een RSS-feed aan kan laten maken die alle informatie uit je CMS haalt en in een feed zet.
Dit is mogelijk door je .xml-bestand te parsen als PHP. Makkelijker gezegd: een bestand met de extensie .xml wordt gelezen als .php, waardoor je codes in je .xml kan plaatsen.
[b:lmxqy5wh].htaccess[/b:lmxqy5wh]
Om dit voor elkaar te krijgen moet je om te beginnen een .htaccess bestand aanmaken in de root van je website. Als je dit bestand gemaakt hebt voer je daar de volgende regel in:
[code:lmxqy5wh]AddType application/x-httpd-php .xml[/code:lmxqy5wh]
Als je dit gedaan hebt kan je het bestand opslaan en verder laten voor wat het is.
[b:lmxqy5wh].xml-bestand. [/b:lmxqy5wh]
Om te beginnen moeten we zorgen dat het bestand ook echt daadwerkelijk gelezen wordt als .xml-bestand:
[code:lmxqy5wh]
<?php
header ("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';
[/code:lmxqy5wh]
Nu gaan we de verbinding maken met de database waar je berichten in staan. Gebruikersnaam, wachtwoord en database moet je zelf invullen.
[code:lmxqy5wh]
mysql_connect("localhost","gebruikersnaam","wachtwoord") or die("MySQL connectie mislukt.");
mysql_select_db("database") or die("Selecteren van database mislukt.");
[/code:lmxqy5wh]
Let er op dat in een RSS-feed niet teveel berichten staan. Hou het klein en simpel. Zelf heb ik er voor gekozen om maximaal 5 berichten te tonen, maar dit kan je zelf aanpassen als je er meer of minder wilt.
[code:lmxqy5wh]
$query = "SELECT * FROM database ORDER BY (id) DESC LIMIT 5";
$res = mysql_query($query);
[/code:lmxqy5wh]
Nu even kijken of er wel berichten zijn, zo niet, gelijk exit, zo ja, dan komt de code waar het allemaal om draait!!!
[code:lmxqy5wh]
$num = mysql_num_rows($res);
if($num == 0)
{
exit;
}
else
{
[/code:lmxqy5wh]
Hier komt dat de code die de gegevens juist in een .xml-bestand omzet.
[code:lmxqy5wh]
// Eerst even laten weten welke rss versie het is
echo "<rss version="2.0">n";
echo "<channel>n";
// Vul hier een titel in
echo "<title>TITEL</title>n";
// Vul hier het adres van je site in
echo "<link>http://
www.adresvanmijn.site/&a...>n";
// Hier kan je een korte beschrijving geven van jouw pagina
echo "<description>Hier kan je een korte beschrijving geven van jouw pagina</description>n";
[/code:lmxqy5wh]
Tot zover het basisgedeelte. Als je eens een RSS-feed bekijk, zoals [url=http://www.jdbdesign.nl/feed.xml:lmxqy5wh]hier (klik)[/url:lmxqy5wh], kan je zien dat het eerste stuk altijd hetzelfde is, namelijk het stuk wat we hierboven behandeld hebben. Daarna komen de verschillende berichten, dus het dynamische gedeelte:
(Vul bij de sterretjes de link in naar je nieuwsberichten, exclusief het id (bij mijn feed is dat <!-- m --><a class="postlink" href="http://www.jdbdesign.nl/nieuws/toonbericht.php?id=">http://www.jdbdesign.nl/nieuws/toonbericht.php?id=</a><!-- m --> ) de .$sql->id zorgt er voor dat het id-nummer er achter wordt gezet)
[code:lmxqy5wh]
while($sql = mysql_fetch_object($res))
{
$blog_title = stripslashes($sql->titel);
$blog_link = "********".$sql->id;
$blog_description = stripslashes($sql->kortbericht);
echo "<item>n";
echo "<title>".$blog_title."</title>n";
echo "<link>".$blog_link."</link>n";
echo "<description>n";
echo $blog_description;
echo "</description>n";
echo "</item>n";
}
[/code:lmxqy5wh]
Dat was dan het dynamische gedeelte!! Nu nog even afsluiten:
[code:lmxqy5wh]
echo "</channel>n";
echo "</rss>n";
}
?>
[/code:lmxqy5wh]
En dan heb je in principe een PHP-bestand, welke wordt gezien als een RSS-feed en automatisch alle berichten uit je database haalt.
[b:lmxqy5wh][u:lmxqy5wh]LET OP: sla het bestand op als .xml[/u:lmxqy5wh][/b:lmxqy5wh]
Bovenstaande code is niet van mij, ik heb het niet gemaakt, ik heb het enkel aangepast zodat het beter was voor mijzelf. Ik wens dan ook geen credits te ontvangen voor dit script, maar wel voor de beschrijving van hoe je het script moet implementeren natuurlijk!! :wink:
Wees mild met uw commentaren en scheutig met uw complimenten... :lol:
Nog een keer de code in het geheel:
[b:lmxqy5wh].htaccess[/b:lmxqy5wh]
[code:lmxqy5wh]AddType application/x-httpd-php .xml[/code:lmxqy5wh]
[b:lmxqy5wh].xml-bestand[/b:lmxqy5wh]
[code:lmxqy5wh]
<?php
header ("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';
mysql_connect("localhost","gebruikersnaam","wachtwoord") or die("MySQL connectie mislukt.");
mysql_select_db("database") or die("Selecteren van database mislukt.");
$query = "SELECT * FROM database ORDER BY (id) DESC LIMIT 5";
$res = mysql_query($query);
$num = mysql_num_rows($res);
if($num == 0)
{
exit;
}
else
{
// Eerst even laten weten welke rss versie het is
echo "<rss version="2.0">n";
echo "<channel>n";
// Vul hier een titel in
echo "<title>TITEL</title>n";
// Vul hier het adres van je site in
echo "<link>http://www.adresvanmijn.site/</link>n";
// Hier kan je een korte beschrijving geven van jouw pagina
echo "<description>Hier kan je een korte beschrijving geven van jouw pagina</description>n";
while($sql = mysql_fetch_object($res))
{
$blog_title = stripslashes($sql->titel);
$blog_link = "********".$sql->id;
$blog_description = stripslashes($sql->kortbericht);
echo "<item>n";
echo "<title>".$blog_title."</title>n";
echo "<link>".$blog_link."</link>n";
echo "<description>n";
echo $blog_description;
echo "</description>n";
echo "</item>n";
}
echo "</channel>n";
echo "</rss>n";
}
?>
[/code:lmxqy5wh]
[b:lmxqy5wh][Opmerking]Mochten er reacties komen, vanavond zal ik ze niet beantwoorden, aangezien ik niet online ben.[/Opmerking][/b:lmxqy5wh]