RSS - Feed der neuesten Artikel
RSS - Feed der neuesten Artikel
ich habe hier mal eine kleine Routine geschrieben, mit der man eine konfigurierbare Anzahl neuer Artikel aus allen Rubriken in eine XML Datei exportieren kann. Die Datei kann dann als RSS Feed z.B. mit Feedreader geöffnet werden.
We es gebrauchen kann, möge sich bedienen
<?php
define('CPO', true);
if (file_exists("_cfg/const.php")) require("_cfg/const.php");
else require("_cfg/const.php.dist");
$_file = '../rss.xml'; // RSS Feed XML file
$_ttl = "www.eknori.de"; // RSS Feed Title
$_des = "Lotus Notes and more"; // RSS Feed Brief Description
$_lnk = "http://www.eknori.de/cms/"; // URL link leading news page of your site
$_cop = "2003 -Heinz Ulrich Krause"; // RSS copyright info
$_bld = date ("l dS of F Y h:i:s A"); // RSS Feed last updated
$_wbm = "webmaster@eknori.de"; // webmaster e-mail contact information
$_count = 10;
$_jetzt = time();
$query = "SELECT * FROM cpo_news
WHERE artikel_archiv < 1
AND freigabe = 0
AND kategorie != '".closed."'
AND pub_datum < '".$_jetzt."'
AND verfallsdatum > '".$_jetzt."'
ORDER BY pub_datum
DESC
LIMIT 0,$_count";
$db = new DB;
$db->query($query);
/****************************
Create Header
****************************/
$_xml = ( bool ) false;
$_xml .= '<?xml version="1.0" encoding="iso-8859-1"?>' . "\n\n";
$_xml .= '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
"http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
$_xml .= '<rss version="0.91">' . "\n";
$_xml .= '<channel>' . "\n";
$_xml .= '<language>de-de</language>' . "\n";
$_xml .= '<title>' .$_ttl. '</title>' . "\n";
$_xml .= '<description>' . $_des . '</description>' . "\n";
$_xml .= '<link>' . $_lnk . '</link>' . "\n";
$_xml .= '<copyright>' . $_cop . '</copyright>' . "\n";
$_xml .= '<lastBuildDate>' . $_bld . '</lastBuildDate>' . "\n";
$_xml .= '<webMaster>' . $_wbm . '</webMaster>' . "\n";
/********************************
Create the syndication
********************************/
while($db->next_record()):
$db_nr = $db->v("nr");
$db_rubric = $db->v("kategorie");
$db_titel = $db->v("titel");
$db_kommentar = $db->v("commentary");
$_xml .= '<item>' . "\n";
$_xml .= '<title>' . "\n";
$_xml .= $db_titel . "\n";
$_xml .= '</title> ' . "\n";
$_xml .= '<description>' . "\n";
if (!$db_kommentar)
{ $_xml .= $db_titel . "\n"; }
else
{ $_xml .= $db_kommentar . "\n"; }
$_xml .= '</description>' . "\n";
$_xml .= '<link>' . "\n";
$_xml .= $_lnk.$db_rubric.'/detail.php?nr='. $db_nr. "\n";
$_xml .= '</link>' . "\n";
$_xml .= '</item>' . "\n";
endwhile;
$_xml .= '</channel>' . "\n";
$_xml .= '</rss>' . "\n";
/***********************************
Write XML to file
***********************************/
$_fp = fopen( $_file, 'w' );
$_fout = fwrite( $_fp, $_xml );
fclose( $_fp );
header( 'Location: '.$_file );
exit;
?>
We es gebrauchen kann, möge sich bedienen
<?php
define('CPO', true);
if (file_exists("_cfg/const.php")) require("_cfg/const.php");
else require("_cfg/const.php.dist");
$_file = '../rss.xml'; // RSS Feed XML file
$_ttl = "www.eknori.de"; // RSS Feed Title
$_des = "Lotus Notes and more"; // RSS Feed Brief Description
$_lnk = "http://www.eknori.de/cms/"; // URL link leading news page of your site
$_cop = "2003 -Heinz Ulrich Krause"; // RSS copyright info
$_bld = date ("l dS of F Y h:i:s A"); // RSS Feed last updated
$_wbm = "webmaster@eknori.de"; // webmaster e-mail contact information
$_count = 10;
$_jetzt = time();
$query = "SELECT * FROM cpo_news
WHERE artikel_archiv < 1
AND freigabe = 0
AND kategorie != '".closed."'
AND pub_datum < '".$_jetzt."'
AND verfallsdatum > '".$_jetzt."'
ORDER BY pub_datum
DESC
LIMIT 0,$_count";
$db = new DB;
$db->query($query);
/****************************
Create Header
****************************/
$_xml = ( bool ) false;
$_xml .= '<?xml version="1.0" encoding="iso-8859-1"?>' . "\n\n";
$_xml .= '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
"http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
$_xml .= '<rss version="0.91">' . "\n";
$_xml .= '<channel>' . "\n";
$_xml .= '<language>de-de</language>' . "\n";
$_xml .= '<title>' .$_ttl. '</title>' . "\n";
$_xml .= '<description>' . $_des . '</description>' . "\n";
$_xml .= '<link>' . $_lnk . '</link>' . "\n";
$_xml .= '<copyright>' . $_cop . '</copyright>' . "\n";
$_xml .= '<lastBuildDate>' . $_bld . '</lastBuildDate>' . "\n";
$_xml .= '<webMaster>' . $_wbm . '</webMaster>' . "\n";
/********************************
Create the syndication
********************************/
while($db->next_record()):
$db_nr = $db->v("nr");
$db_rubric = $db->v("kategorie");
$db_titel = $db->v("titel");
$db_kommentar = $db->v("commentary");
$_xml .= '<item>' . "\n";
$_xml .= '<title>' . "\n";
$_xml .= $db_titel . "\n";
$_xml .= '</title> ' . "\n";
$_xml .= '<description>' . "\n";
if (!$db_kommentar)
{ $_xml .= $db_titel . "\n"; }
else
{ $_xml .= $db_kommentar . "\n"; }
$_xml .= '</description>' . "\n";
$_xml .= '<link>' . "\n";
$_xml .= $_lnk.$db_rubric.'/detail.php?nr='. $db_nr. "\n";
$_xml .= '</link>' . "\n";
$_xml .= '</item>' . "\n";
endwhile;
$_xml .= '</channel>' . "\n";
$_xml .= '</rss>' . "\n";
/***********************************
Write XML to file
***********************************/
$_fp = fopen( $_file, 'w' );
$_fout = fwrite( $_fp, $_xml );
fclose( $_fp );
header( 'Location: '.$_file );
exit;
?>
Re: RSS - Feed der neuesten Artikel
dazu gleich noch eine Frage. An welcher stelle baue ich den Code am besten ein, damit mir beim Freigeben neuer Artikel auch die rss.xml aktualisiert wird ??
- balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Re: RSS - Feed der neuesten Artikel
Hi eknori,
interessantes Script, danke!
Gegenfrage - wieso speicherst Du das ganze erst in einer Datei, um dann darauf zu redirecten? Du kannst das ganze doch auch direkt an den Browser liefern, oder nicht?
Balu
interessantes Script, danke!
Gegenfrage - wieso speicherst Du das ganze erst in einer Datei, um dann darauf zu redirecten? Du kannst das ganze doch auch direkt an den Browser liefern, oder nicht?
Balu
Bartels.Schöne
ConPresso Support & Development
ConPresso Support & Development
Re: RSS - Feed der neuesten Artikel
>> Du kannst das ganze doch auch direkt an den Browser liefern, oder nicht?
Äh, ICH kann das leider nicht; das waren meine ersten Versuche mit PHP. Da bin ich noch recht unbedarft. Aber wenn du mich in die richtige Richtung schubst, finde ich schon raus, was ich machen muss. )
Ulrich
Äh, ICH kann das leider nicht; das waren meine ersten Versuche mit PHP. Da bin ich noch recht unbedarft. Aber wenn du mich in die richtige Richtung schubst, finde ich schon raus, was ich machen muss. )
Ulrich
Re: RSS - Feed der neuesten Artikel
Upps, kann es sein, daß ein simples echo ($xml); völlig ausreicht? *schäm*
Re: RSS - Feed der neuesten Artikel
Ich will nicht nerven, aber ich möchte bei meinem RSS nur "offene" Rubriken "feeden".
Momentan habe ich das im Script fest verdrahtet. Wie müsste denn die SQL - Abfrage aussehen, damit mir nur Artikel der offenen Rubriken ausgegeben werden ??
Momentan habe ich das im Script fest verdrahtet. Wie müsste denn die SQL - Abfrage aussehen, damit mir nur Artikel der offenen Rubriken ausgegeben werden ??
- balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Re: RSS - Feed der neuesten Artikel
Deine Zeile
AND kategorie != '".closed."'
ist uebrigends so nicht richtig - es sei denn, es gibt eine Konstante namens "closed". Auch eine Variable $closed gibt es nicht.
Aendere Deine Abfrage mal in:
$query = "SELECT nr, kategorie, titel, commentary
FROM cpo_news, cpo_rubric
WHERE cpo_news.kategorie = cpo_rubric.rubrik
AND secure = 0
AND artikel_archiv < 1
AND freigabe = 0
AND pub_datum < '".$_jetzt."'
AND verfallsdatum > '".$_jetzt."'
ORDER BY pub_datum
DESC
LIMIT 0,".$_count;
Ich glaube, das ist das, was Du suchst
Balu
AND kategorie != '".closed."'
ist uebrigends so nicht richtig - es sei denn, es gibt eine Konstante namens "closed". Auch eine Variable $closed gibt es nicht.
Aendere Deine Abfrage mal in:
$query = "SELECT nr, kategorie, titel, commentary
FROM cpo_news, cpo_rubric
WHERE cpo_news.kategorie = cpo_rubric.rubrik
AND secure = 0
AND artikel_archiv < 1
AND freigabe = 0
AND pub_datum < '".$_jetzt."'
AND verfallsdatum > '".$_jetzt."'
ORDER BY pub_datum
DESC
LIMIT 0,".$_count;
Ich glaube, das ist das, was Du suchst
Balu
Bartels.Schöne
ConPresso Support & Development
ConPresso Support & Development
Re: RSS - Feed der neuesten Artikel
Hallo,
das ist genau was ich suche!
Ich habe das Script in einer PHP Datei abgespeichert und den Query abgeändert, so wie es Balo gepostet hat. Wie kann ich dies nun in meiner Seite einbauen ?
Wenn ich die PHP Datei nach dem Upload in das Conpresso Stammverzeichnis aufrufe bekomme ich folgende Fehlermeldung:
Warning: Cannot send session cache limiter - headers already sent (output started at /home/marcusdury/public_html/conpresso/rss-feed.php:1) in /home/marcusdury/public_html/conpresso/_cfg/const.php.dist on line 27
Warning: Cannot add header information - headers already sent by (output started at /home/marcusdury/public_html/conpresso/rss-feed.php:1) in /home/marcusdury/public_html/conpresso/rss-feed.php on line 84
Leider kann ich selbst kein PHP programmieren
Was muss ich also tun ?
Grüsse,
Marcus
---------------------------------
www.dury.de
das ist genau was ich suche!
Ich habe das Script in einer PHP Datei abgespeichert und den Query abgeändert, so wie es Balo gepostet hat. Wie kann ich dies nun in meiner Seite einbauen ?
Wenn ich die PHP Datei nach dem Upload in das Conpresso Stammverzeichnis aufrufe bekomme ich folgende Fehlermeldung:
Warning: Cannot send session cache limiter - headers already sent (output started at /home/marcusdury/public_html/conpresso/rss-feed.php:1) in /home/marcusdury/public_html/conpresso/_cfg/const.php.dist on line 27
Warning: Cannot add header information - headers already sent by (output started at /home/marcusdury/public_html/conpresso/rss-feed.php:1) in /home/marcusdury/public_html/conpresso/rss-feed.php on line 84
Leider kann ich selbst kein PHP programmieren
Was muss ich also tun ?
Grüsse,
Marcus
---------------------------------
www.dury.de
- balu
- ConPresso-Entwickler
- Beiträge: 1748
- Registriert: 01.01.1970 01:00
- Hat sich bedankt: 81 Mal
- Danksagung erhalten: 133 Mal
Re: RSS - Feed der neuesten Artikel
Hi Marcus,
Du hast in Deiner Datei /home/marcusdury/public_html/conpresso/_cfg/const.php.dist in Zeile 27 irgendwas stehen, was dafuer sorgt, dass keine Header-Informationen verschickt werden koennen (vielleicht eine Leerzeile oder aehnliches)
Balu
Du hast in Deiner Datei /home/marcusdury/public_html/conpresso/_cfg/const.php.dist in Zeile 27 irgendwas stehen, was dafuer sorgt, dass keine Header-Informationen verschickt werden koennen (vielleicht eine Leerzeile oder aehnliches)
Balu
Bartels.Schöne
ConPresso Support & Development
ConPresso Support & Development
Re: RSS - Feed der neuesten Artikel
Hallo, ich hab mal ein bissel an der const.php.dist Datei rummgefummelt und siehe da, nachdem ich die Kommentare im Header der Datei gelöscht hatte, funktioniert es.
Vielen Dank,
Marcus
Vielen Dank,
Marcus
Re: RSS - Feed der neuesten Artikel
moin zusammen,
@eknori: danke für das script.
nur leider bekomm ich immer ne fehlermeldung die ich nicht deuten kann. kann mir jemand helfen?
Fatal error: Cannot instantiate non-existent class: db in /www/domain.info/ordner/html/rss.php on line 28
vielen dank.
nelle
@eknori: danke für das script.
nur leider bekomm ich immer ne fehlermeldung die ich nicht deuten kann. kann mir jemand helfen?
Fatal error: Cannot instantiate non-existent class: db in /www/domain.info/ordner/html/rss.php on line 28
vielen dank.
nelle
Re: RSS - Feed der neuesten Artikel
hat sich schon erledigt.
hatte einen pfad falsch. danach hats irgendwie geklappt. tolles ding übrigens....
hatte einen pfad falsch. danach hats irgendwie geklappt. tolles ding übrigens....
Re: RSS - Feed der neuesten Artikel
der Code war meine erster Versuch; leider produziert er kein wellformed XML. Daher solltet ihr lieber den unter http://www.conpresso.de/conpresso/phoru ... &i=68&t=68 geposteten Code verwenden.
Der läuft in allen Readern problemlos...
Ulrich
Auto-Edit: Link veraltet - neuer Link: http://community.conpresso.de/viewtopic.php?t=1846#9069
Der läuft in allen Readern problemlos...
Ulrich
Auto-Edit: Link veraltet - neuer Link: http://community.conpresso.de/viewtopic.php?t=1846#9069
Re: RSS - Feed der neuesten Artikel
Hallo,
für den Code bin ich sehr dankbar. Bis auf daß er den Teaser-Text nicht ausgibt funktioniert er gut. Vielleicht kann mir mit dem Teaser-Text ja jemand netterweise weiterhelfen (habe von PHP keine Ahnung)
Albert
für den Code bin ich sehr dankbar. Bis auf daß er den Teaser-Text nicht ausgibt funktioniert er gut. Vielleicht kann mir mit dem Teaser-Text ja jemand netterweise weiterhelfen (habe von PHP keine Ahnung)
Albert