translate
Forum: http://forum.phpwcms.org/viewtopic.php?f=16&t=17842&p=136700
Webseite: http://www.enym.com/artikel/20121211-54/rss-feed-fuer-news-items-in-phpwcms.html
Danke an: Marceau & phalancs für diese Lösung
Autor: Robert
Version: r528 und kleiner
Verzeichnis: /
Mit diesem Script ist es möglich aus den News einen RSS-Feed zu generieren.
Diese Version generiert zur Laufzeit einen RSS Feed der News und gibt ihn aus. Anpassung sind in den ersten fünf Zeile bei CONFIGURATION vorzunehmen.
news_rss.php V1.5 - Erzeugung zur Laufzeit:
<? function mkRSS () { //CONFIGURATION $news_aid = 54; //ARTICLEID OF NEWSARTICLE $news_alias = "artikel"; //ARTICLEALIAS OF NEWSARTICLE $title = "RSS FEED"; $description = "Newsfeed - ".$_SERVER['SERVER_NAME']; //END OF CONFIGURATION //======================================================= require_once ('config/phpwcms/conf.inc.php'); $itemTitle = "cnt_title"; $itemText = "cnt_teasertext"; $itemDate = "cnt_created"; $itemOwner = "cnt_editor"; $itemAlias = "cnt_alias"; $sql="SELECT * FROM phpwcms_content WHERE cnt_module = 'news' AND cnt_status = 1 ORDER BY cnt_created DESC;"; //Erzeugen des RSS-Inhaltes: encoding='UTF-8' $rssHeader='<?xml version="1.0" encoding="ISO-8859-1" ?> <rss version="2.0"> <channel> <title>'.$title.'</title> <description>'.$description.'</description> <language>'.$phpwcms['default_lang'].'</language> <link>'.$phpwcms['site'].'</link> '; $rssFooter='</channel> </rss>'; //GET DATA $dbLink = mysql_connect ($phpwcms['db_host'],$phpwcms['db_user'],$phpwcms['db_pass']) or die (mysql_error()); $setdb = mysql_select_db($phpwcms['db_table'],$dbLink) or die (mysql_error()); $result=mysql_query($sql,$dbLink) or die(mysql_error()); $content=$rssHeader; while($row=mysql_fetch_array($result)){ $row[$itemText] = str_replace("ü","ü",$row[$itemText]); $row[$itemText] = str_replace("ü","ü",$row[$itemText]); $row[$itemText] = str_replace("ö","ö",$row[$itemText]); $row[$itemText] = str_replace("ä","ä",$row[$itemText]); $row[$itemText] = str_replace("ä","ä",$row[$itemText]); $row[$itemText] = str_replace("ß","ss",$row[$itemText]); $row[$itemText] = str_replace("<p>","",$row[$itemText]); $row[$itemText] = str_replace("</p>","",$row[$itemText]); //$row[$itemText] = str_replace(" />",">",$row[$itemText]); //$row[$itemText] = str_replace("<br>","",$row[$itemText]); //$row[$itemText] = str_replace("</div>","",$row[$itemText]); //$row[$itemText] = preg_replace("(<img src=|border=|width=|height=|style=|alt=|title= >)","",$row[$itemText]); $titel=substr ($row[$itemTitle], 0, 150); $text=substr ($row[$itemText], 0, 1000); $itemLink= $phpwcms['site']; $itemdate1 = date("Ymd", $row[$itemDate]); $itemDate2 = date("D, d M Y H:i:s O", $row[$itemDate]); $itemLink = $phpwcms['site'].'index.php?'.$news_alias.'&newsdetail='.$itemdate1.'-'.$news_aid.'_'.rawurlencode($row[$itemAlias]); $content .= "<item> <title>".$titel."</title> <description><![CDATA[".$text."]]></description> <link>$itemLink</link> <author>$row[$itemOwner]</author> <pubDate>$itemDate2</pubDate> </item> "; } $content.=$rssFooter; htmlspecialchars($content); header('Content-Type: text/xml'); print($content); return; } mkRSS(); ?>
Diese Version speichert eine Datei im jeweils angegebenen Order ab. Generierung kann bspw. durch einbettung in die index.php erreicht werden. Einstellungen müßen im GESAMTEN script vorgenommen werden.
news_rss.php V1.4 - Generierung in Ordner:
<? function mkRSS () { require_once ('config/phpwcms/conf.inc.php'); ////KONFIGURATION (diese Variablen müssen angepasst werden): $dbServer = $phpwcms['db_host']; // meist localhost) $dbName = $phpwcms['db_table']; // name der Datenbank $dbUser = $phpwcms['db_user']; // Datenbankbenutzer $dbPassword = $phpwcms['db_pass']; // Passwort $tableName = "phpwcms_content"; // Tabellenname der Tab., aus der die Daten entnommen werden //$lines="10"; // Anzahl anzuzeigender Datensätze $filename = "content/rss/news"; // zum Beispiel news !! ohne Extension !! $title = "News"; // Titel des RSS-Feeds $description = "Newsfeed - ".$_SERVER['SERVER_NAME']; //Was zeigt das RSS-Feed? $language= $phpwcms['default_lang']; //Sprachkürzel $link = $phpwcms['site']; //Link $itemTitle = "cnt_title"; //Spaltenname aus der DB, wo der Titel des einzelnen Items steht $itemText = "cnt_teasertext"; //Spaltenname aus der DB, wo der Text des einzelnen Items steht // das SQL-Statement muss an die eigenen Erfordernisse angepasst werden $sql="SELECT * FROM `phpwcms_content` WHERE cnt_module = 'news' AND cnt_status = '1';"; // Bitte beachten, dass in der Zeile 45 noch die Variable $itemLink angepasst werden muss. // ENDE KONFIGURATION // DOCUMENT_ROOT wird automatisch ermittelt $siteRoot = substr_replace ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "",strrpos ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "/")+1); //Erzeugen des RSS-Inhaltes: $rssHeader="<?xml version='1.0' encoding='ISO-8859-1' ?> <rss version='2.0'> <channel> <title>".$title."</title> <description>".$description."</description> <language>".$language."</language> <link>$link</link> "; $rssFooter="</channel> </rss>"; $dbLink = mysql_connect ($dbServer,$dbUser,$dbPassword) or die (mysql_error()); $setdb = mysql_select_db($dbName,$dbLink) or die (mysql_error()); $result=mysql_query($sql,$dbLink) or die(mysql_error()); $content=$rssHeader; while($row=mysql_fetch_array($result)){ $row[$itemText] = str_replace("ü","ü",$row[$itemText]); // ersetzt im Feed ü durch ü $row[$itemText] = str_replace("ü","ü",$row[$itemText]); $row[$itemText] = str_replace("ö","ö",$row[$itemText]); $row[$itemText] = str_replace("ä","ä",$row[$itemText]); $row[$itemText] = str_replace("ä","ä",$row[$itemText]); $row[$itemText] = str_replace("ß","ss",$row[$itemText]); $row[$itemText] = str_replace("<p>","",$row[$itemText]); $row[$itemText] = str_replace("</p>","",$row[$itemText]); //$row[$itemText] = str_replace(" />",">",$row[$itemText]); //$row[$itemText] = str_replace("<br>","",$row[$itemText]); //$row[$itemText] = str_replace("</div>","",$row[$itemText]); //$row[$itemText] = preg_replace("(<img src=|border=|width=|height=|style=|alt=|title= >)","",$row[$itemText]); $titel=substr ($row[$itemTitle], 0, 150); //$row anpassen! auch in der nächsten Zeile $text=substr ($row[$itemText], 0, 1000); //der Text darf höchstens 500 Zeichen lang sein $itemLink= $phpwcms['site']; //dies ist ein Link, der DIREKT diesen Punkt auf der Homepage öffnet. //Er muss entsprechend deines Scripts dynamisch gebildet werden. $content.="<item> <title>".$titel."</title> <description><![CDATA[".$text."]]></description> <link>$itemLink</link> </item> "; } $content.=$rssFooter; // Datei wird geschrieben $fh=fopen ($siteRoot.$filename.".rss", "w"); fputs ( $fh, $content); fclose($fh); // Datei wird umbenannt rename ($siteRoot.$filename.".rss", $siteRoot.$filename.".xml"); return; } mkRSS(); ?>