RSS - Feed der neuesten Artikel

Diskussion von Ideen oder Anregungen zu ConPresso und zur Community
Antworten
eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

RSS - Feed der neuesten Artikel

Beitrag von eknori »

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;
?>

eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von eknori »

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 ??
Benutzeravatar
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

Beitrag von balu »

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
Bartels.Schöne
ConPresso Support & Development
eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von eknori »

>> 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
eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von eknori »

Upps, kann es sein, daß ein simples echo ($xml); völlig ausreicht? *schäm*
eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von eknori »

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 ??
Benutzeravatar
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

Beitrag von balu »

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
Bartels.Schöne
ConPresso Support & Development
eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von eknori »

Genau das ist es, DANKE !!
Marcus Dury

Re: RSS - Feed der neuesten Artikel

Beitrag von Marcus Dury »

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
Benutzeravatar
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

Beitrag von balu »

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
Bartels.Schöne
ConPresso Support & Development
Marcus Dury

Re: RSS - Feed der neuesten Artikel

Beitrag von Marcus Dury »

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
nelle
ConPresso-Checker
Beiträge: 140
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von nelle »

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
nelle
ConPresso-Checker
Beiträge: 140
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von nelle »

hat sich schon erledigt.

hatte einen pfad falsch. danach hats irgendwie geklappt. tolles ding übrigens....
eknori
ConPresso-User
Beiträge: 76
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von eknori »

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
Alberti
ConPresso-Newbie
Beiträge: 1
Registriert: 01.01.1970 01:00

Re: RSS - Feed der neuesten Artikel

Beitrag von Alberti »

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
Antworten