RSS Feed Creator - Problem mit <description>
Verfasst: Mi 5. Nov 2008, 16:07
Hallo Leuts,
suche mich seit einiger Zeit im Forum wund und finde nix. Also mache ich mal ein neues Thema auf.
Ich nutze den mitgelieferten RSS Feed-Creator der 4.6.23. Allerdings fehlt bei der Ausgabe (Ansicht im Editor) der Start-Tag für die Description.
Im Modul steht folgende Code-Zeile:
Also sollte hier ja eigentlich folgendes in die xml-Datei geschrieben werden:
...
<item>
<title>Irgendein Titel</title>
<description>Beschreibung des Titels</description>
...
Dem ist aber nicht so, es wird folgendes reingeschrieben:
...
<item>
<title>Irgendein Titel</title>
<description />
...
Der Vollständigkeit halber hier der Code vom Output
Hinweis zu den mit "//" erkennbaren Änderungen.
Beseitigt das "; wird erwartet" Problem.
Beseitigt das "Umlaut-Problem" (http://forum.contenido.org/viewtopic.ph ... ed+creator)
Frage mich wo's hakt... weiß einer die Lösung
suche mich seit einiger Zeit im Forum wund und finde nix. Also mache ich mal ein neues Thema auf.
Ich nutze den mitgelieferten RSS Feed-Creator der 4.6.23. Allerdings fehlt bei der Ausgabe (Ansicht im Editor) der Start-Tag für die Description.
Im Modul steht folgende Code-Zeile:
Code: Alles auswählen
echo "<description>".prepareStringForOutput($description)."</description>";
Also sollte hier ja eigentlich folgendes in die xml-Datei geschrieben werden:
...
<item>
<title>Irgendein Titel</title>
<description>Beschreibung des Titels</description>
...
Dem ist aber nicht so, es wird folgendes reingeschrieben:
...
<item>
<title>Irgendein Titel</title>
<description />
...
Der Vollständigkeit halber hier der Code vom Output
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : RSS Feed generator
* Author(s) : Andreas Lindner, 4fb
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 12.08.2005
************************************************/
#Includes
cInclude('classes', 'class.article.php');
#Get settings
$rss_cat = "CMS_VALUE[0]";
$rss_sortby = "CMS_VALUE[1]";
$rss_sortorder = "CMS_VALUE[2]";
$rss_include_start_article = "CMS_VALUE[3]";
$rss_title = "CMS_VALUE[4]";
$rss_link = "CMS_VALUE[5]";
$rss_description = "CMS_VALUE[6]";
$rss_language = "CMS_VALUE[7]";
$rss_copyright = "CMS_VALUE[8]";
$rss_image_title = "CMS_VALUE[9]";
$rss_image_url = "CMS_VALUE[10]";
$rss_image_link = "CMS_VALUE[11]";
$rss_managingEditor = "CMS_VALUE[12]";
$rss_webMaster = "CMS_VALUE[13]";
$rss_maxCount = "CMS_VALUE[14]";
$rss_ttl = "CMS_VALUE[15]";
$rss_description_length = "CMS_VALUE[16]";
#Check settings
if ($rss_maxCount == '') {
$rss_maxCount = 999;
}
if ($rss_description_length=='') {
$rss_description_length = 200;
}
#Get feed image
if ($rss_image_link != '') {
if (substr(strtolower($rss_image_link), 0, 7) != 'http://') {
$rss_image_link = 'http://'.$rss_image_link;
}
}
if ($rss_image_url != '') {
$sql = "SELECT * FROM ".$cfg['tab']['upl']." WHERE idupl = ".$rss_image_url;
$db->query($sql);
if ($db->next_record()) {
$rss_image_url = $cfgClient[$client]['path']['htmlpath'].$cfgClient[$client]['upl']['frontendpath'].$db->f("dirname").$db->f("filename");
$rss_image_fs = $cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upl']['frontendpath'].$db->f("dirname").$db->f("filename");
}
}
#Output feed header
header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
echo "<rss version=\"2.0\">";
echo "<channel>";
echo "<title>".prepareStringForOutput($rss_title)."</title>";
echo "<copyright>".prepareStringForOutput($rss_copyright)."</copyright>";
echo "<link>".prepareStringForOutput($rss_link)."</link>";
echo "<description>".prepareStringForOutput($rss_description)."</description>";
echo "<language>".prepareStringForOutput($rss_language)."</language>";
echo "<lastBuildDate>".date('D, d M Y H:i:s T')."</lastBuildDate>";
echo "<pubDate>".date('D, d M Y H:i:s T')."</pubDate>";
echo "<generator>Contenido CMS</generator>";
echo "<managingEditor>".$rss_managingEditor."</managingEditor>";
echo "<webMaster>".$rss_webMaster."</webMaster>";
echo "<ttl>".$rss_ttl."</ttl>";
echo "<image>";
echo "<title>".prepareStringForOutput($rss_image_title)."</title>";
list ($width, $height, $type, $attr) = getimagesize($rss_image_fs);
echo "<width>".$width."</width>";
echo "<height>".$height."</height>";
echo "<url>".prepareStringForOutput($rss_image_url)."</url>";
echo "<link>".prepareStringForOutput($rss_image_link)."</link>";
echo "</image>";
#Output articles
if ($rss_cat != '') {
if ($rss_include_start_article != '') {
$b_include_start_article = true;
} else {
$b_include_start_article = false;
}
$options = array ('idcat' => $rss_cat, "start" => $b_include_start_article, "order" => $rss_sortby, "direction" => $rss_sortorder);
$list = new ArticleCollection($options);
$count = $list->count;
if ($count > 0) {
$aArticleList = array ();
$aArticleList = $list->articles;
$aTmpArticleList = array ();
$index = 1;
foreach ($aArticleList as $value) {
if ($index <= $rss_maxCount) {
$tmp_article = new Article($value, $client, $lang);
$headline = '';
$i = 1;
while (($i<20) && (is_empty($headline))) {
$headline = strip_tags($tmp_article->getContent('CMS_HTMLHEAD', $i));
$i++;
}
$i = 1;
while (($i<20) && (is_empty($headline))) {
$headline = strip_tags($tmp_article->getContent('CMS_TEXT', $i));
$i++;
}
$description = '';
$i = 1;
while (($i<20) && (is_empty($description))) {
$description = strip_tags($tmp_article->getContent('CMS_HTMLHEAD',2, $i));
$i++;
}
$description = capiStrTrimAfterWord($description, $rss_description_length);
$pub_date = $tmp_article->getField("created");
$pub_date = strtotime($pub_date);
$pub_date = date('D, d M Y H:i:s T', $pub_date);
if ($headline != '') {
$headline = prepareStringForOutput($headline);
// $link = str_replace('&','&',$cfgClient[$client]['path']['htmlpath']."front_content.php?idcat=$rss_cat&idart=$value&client=$client&lang=$lang");
$link = str_replace('&','&',$cfgClient[$client]['path']['htmlpath']."front_content.php?idart=$value");
echo "<item>";
echo "<title>".prepareStringForOutput($headline)."</title>";
echo "<description>".prepareStringForOutput($description)."</description>";
echo "<link>".$link."</link>";
echo "<pubDate>".$pub_date."</pubDate>";
$t1 = $cfg["tab"]["art_lang"];
$t2 = $cfg["tab"]["phplib_auth_user_md5"];
$sql = "SELECT ".$t2.".realname FROM ".$t1." INNER JOIN ".$t2." ON ".$t1.".author = ".$t2.".username WHERE (".$t1.".idart=$value) AND (".$t1.".idlang=$lang)";
$db->query($sql);
if ($db->next_record()) {
$author = prepareStringForOutput($db->f("realname"));
} else {
$author = '';
}
echo "<author>".$author."</author>";
echo "</item>";
}
}
$index ++;
}
}
}
echo "</channel>";
echo "</rss>";
function is_empty($in_str) {
$tmp = trim($in_str);
$tmp = strip_tags($tmp);
$tmp = str_replace(chr(13).chr(10), '', $tmp);
$tmp = str_replace(' ', '', $tmp);
if ($tmp == '') {
return true;
} else {
return false;
}
}
// function prepareStringForOutput($sIn) {
// $sIn = str_replace(' ',' ',$sIn);
// $sIn = str_replace(' ',' ',$sIn);
// #$sIn = str_replace(chr(13).chr(10),' ',$sIn);
// #return htmlspecialchars($sIn, ENT_QUOTES);
// #return htmlnumericalentities(html_entity_decode($sIn));
// return str_replace('&','&',htmlnumericalentities($sIn));
// }
function prepareStringForOutput($sIn) {
$sIn = str_replace(' ',' ',$sIn);
$sIn = str_replace(' ',' ',$sIn);
#$sIn = str_replace(chr(13).chr(10),' ',$sIn);
$sIn = str_replace('&','&',$sIn);
$sIn = html_entity_decode($sIn, ENT_QUOTES, "ISO-8859-1");
return htmlspecialchars($sIn, ENT_QUOTES);
}
function htmlnumericalentities($str) {
return preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str);
}
?>
Code: Alles auswählen
//$link = str_replace('&','&',$cfgClient[$client]['path']['htmlpath']."front_content.php?idcat=$rss_cat&idart=$value&client=$client&lang=$lang");
$link = str_replace('&','&',$cfgClient[$client]['path']['htmlpath']."front_content.php?idart=$value");
Code: Alles auswählen
// function prepareStringForOutput($sIn) {
// $sIn = str_replace(' ',' ',$sIn);
// $sIn = str_replace(' ',' ',$sIn);
// #$sIn = str_replace(chr(13).chr(10),' ',$sIn);
// #return htmlspecialchars($sIn, ENT_QUOTES);
// #return htmlnumericalentities(html_entity_decode($sIn));
// return str_replace('&','&',htmlnumericalentities($sIn));
// }
function prepareStringForOutput($sIn) {
$sIn = str_replace(' ',' ',$sIn);
$sIn = str_replace(' ',' ',$sIn);
#$sIn = str_replace(chr(13).chr(10),' ',$sIn);
$sIn = str_replace('&','&',$sIn);
$sIn = html_entity_decode($sIn, ENT_QUOTES, "ISO-8859-1");
return htmlspecialchars($sIn, ENT_QUOTES);
}
Frage mich wo's hakt... weiß einer die Lösung
