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
