RSS Feed Creator mit erweiteter Kategorieauswahl???
Verfasst: Fr 9. Nov 2007, 12:32
Hallo, ich benutze den RSS Feed Creator aus der Version 4.6.15 und der funktioniert soweit. Ich möchte aber Auswahl der Kategorie erweitern wie bei der Article List Advanced von HerrnB.
Also die Feeds sollen aus verschieden Kategorien zusammengestellt werden.
Ist das überhaubt mit dem Modul möglich? Wann ja kann mir da jemand helfen?
Also die Feeds sollen aus verschieden Kategorien zusammengestellt werden.
Ist das überhaubt mit dem Modul möglich? Wann ja kann mir da jemand helfen?
Code: Alles auswählen
?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : RSS Feed generator
* Author(s) : Andreas Lindner, 4fb
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 12.08.2005
************************************************/
#Selected category
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
"." <tr valign=\"top\">
"." <td>".mi18n("Kategorie wählen").":</td>
"." <td>
"." <select name=\"CMS_VAR[0]\" style=\"width:300px;\">
"." <option value=''>---".mi18n("Kein")."---</option>
";
#Fetch all categories
$query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".$cfg["tab"]["cat"]." AS B, ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat "."AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' "."AND C.visible=1 ORDER BY A.idtree";
#Execute query
$db->query($query);
#Loop result and build the options
while ($db->next_record()) {
#Indent spacer
$spaces = "";
#How many levels
$levels = $db->f("level");
$spaces = '';
for ($i = 0; $i <= $levels; $i ++) {
$spaces .= "|->";
}
if ($selected == $db->f("idcat")) {
#Selected category
echo "<option selected=\"selected\" value=\"".$db->f("idcat")."\">".$spaces.$db->f("name")."</option>
";
} else {
#Category
echo "<option value=\"".$db->f("idcat")."\">".$spaces.$db->f("name")."</option>
";
}
}
echo "</select></td></tr>";
#Set default values
if ("CMS_VALUE[1]" == '') {
$rss_sortby = 'created';
} else {
$rss_sortby = "CMS_VALUE[1]";
}
if ("CMS_VALUE[2]" == '') {
$rss_sortorder = 'desc';
} else {
$rss_sortorder = "CMS_VALUE[2]";
}
if ("CMS_VALUE[3]" == '') {
$rss_include_start_article = '';
} else {
$rss_include_start_article = ' checked';
}
$rss_title = "CMS_VALUE[4]";
if ("CMS_VALUE[5]" == '') {
$rss_link = $cfgClient[$client]['path']['htmlpath'];
} else {
$rss_link = "CMS_VALUE[5]";
}
$rss_description = "CMS_VALUE[6]";
if ("CMS_VALUE[7]" == '') {
$rss_language = 'de';
} else {
$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]";
$arrSortBy['created'] = mi18n("Erstellungsdatum");
$arrSortBy['published'] = mi18n("Publizierungsungsdatum");
$arrSortBy['artsort'] = mi18n("Sortier-Reihenfolge");
$arrSortBy['lastmodified'] = mi18n("Änderungsdatum");
$arrSortBy['name'] = mi18n("Alphabetisch");
#Sort by
echo " <tr valign=\"top\">
"." <td>".mi18n("Sortieren nach").":</td>
"." <td><select name=\"CMS_VAR[1]\" style=\"width:300px;\">
";
foreach ($arrSortBy as $key => $value) {
if ($key == $rss_sortby) {
echo "<option value=\"$key\" selected=\"selected\">$value
";
} else {
echo "<option value=\"$key\">$value
";
}
}
echo " </select></td></tr>
";
#Sort order
$arrSortOrder['asc'] = mi18n("aufsteigend");
$arrSortOrder['desc'] = mi18n("absteigend");
echo " <tr valign=\"top\">
"." <td>".mi18n("Sortier-Reihenfolge").":</td>
"." <td><select name=\"CMS_VAR[2]\" style=\"width:300px;\">
";
foreach ($arrSortOrder as $key => $value) {
if ($key == $rss_sortorder) {
echo "<option value=\"$key\" selected=\"selected\">$value
";
} else {
echo "<option value=\"$key\">$value
";
}
}
echo " </select></td></tr>
";
#Include start article?
echo " <tr valign=\"top\">
"." <td>".mi18n("Startartikel einbeziehen").":</td>
"." <td><input type=\"checkbox\" name=\"CMS_VAR[3]\" value=\"yes\"$rss_include_start_article></td></tr>
";
#Title
echo " <tr valign=\"top\">
"." <td>".mi18n("Titel").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[4]\" value=\"".$rss_title."\">
"." </td>
"." </tr>
";
#Link
echo " <tr valign=\"top\">
"." <td>".mi18n("Link").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[5]\" value=\"".$rss_link."\">
"." </td>
"." </tr>
";
#Description
echo " <tr valign=\"top\">
"." <td>".mi18n("Beschreibung").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[6]\" value=\"".$rss_description."\">
"." </td>
"." </tr>
";
#Language
$arrLanguages['de'] = mi18n("deutsch");
$arrLanguages['en'] = mi18n("englisch");
$arrLanguages['fr'] = mi18n("französisch");
$arrLanguages['it'] = mi18n("italienisch");
$arrLanguages['es'] = mi18n("spanisch");
$arrLanguages['nl'] = mi18n("niederländisch");
$arrLanguages['el'] = mi18n("griechisch");
$arrLanguages['pt'] = mi18n("portugiesisch");
echo " <tr valign=\"top\">
"." <td>".mi18n("Sprache").":</td>
"." <td><select name=\"CMS_VAR[7]\" style=\"width:300px;\">
";
foreach ($arrLanguages as $key => $value) {
if ($key == $rss_language) {
echo "<option value=\"$key\" selected=\"selected\">$value
";
} else {
echo "<option value=\"$key\">$value
";
}
}
echo " </select></td></tr>
";
#Copyright
echo " <tr valign=\"top\">
"." <td>".mi18n("Copyright").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[8]\" value=\"".$rss_copyright."\">
"." </td>
"." </tr>
";
#Image title
echo " <tr valign=\"top\">
"." <td>".mi18n("Bildtitel").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[9]\" value=\"".$rss_image_title."\">
"." </td>
"." </tr>
";
#Image
$sql = "SELECT * FROM ".$cfg['tab']['upl']." WHERE (filetype='jpg') OR (filetype='jpeg') OR (filetype='gif') OR (filetype='png') ORDER BY dirname,filename";
$db->query($sql);
echo '<tr><td>'.mi18n("Bild").':</td><td><select name="CMS_VAR[10]" size="1" style="width:300px;">';
$selected = false;
$img_display = '';
while ($db->next_record()) {
$path = $db->f("dirname").$db->f("filename");
if ($db->f("idupl") == $rss_image_url) {
echo '<option selected="selected" value="'.$db->f("idupl").'">'.$path.'</option>';
$img_display = $path;
$selected = true;
} else {
echo '<option value="'.$db->f("idupl").'">'.$path.'</option>';
}
}
if ($selected) {
echo '<option value="">'.mi18n("Nichts ausgewählt.").'</option>';
} else {
echo '<option selected="selected" value="">'.mi18n("Nichts ausgewählt.").'</option>';
}
echo "</select></td></tr>
";
#Image link
echo " <tr valign=\"top\">
"." <td>".mi18n("Link (bei Klick auf das Bild)").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[11]\" value=\"".$rss_image_link."\">
"." </td>
"." </tr>
";
#Editor
echo " <tr valign=\"top\">
"." <td>".mi18n("EMail-Adresse Herausgeber").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[12]\" value=\"".$rss_managingEditor."\">
"." </td>
"." </tr>
";
#EMail Webmaster
echo " <tr valign=\"top\">
"." <td>".mi18n("EMail-Adresse Webmaster").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[13]\" value=\"".$rss_webMaster."\">
"." </td>
"." </tr>
";
#Max. number of articles
echo " <tr valign=\"top\">
"." <td>".mi18n("maximale Anzahl Artikel").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[14]\" value=\"".$rss_maxCount."\">
"." </td>
"." </tr>
";
#TTL
echo " <tr valign=\"top\">
"." <td>".mi18n("TTL (Minuten)").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[15]\" value=\"".$rss_ttl."\">
"." </td>
"." </tr>
";
#Description length
echo " <tr valign=\"top\">
"." <td>".mi18n("max. Länge der Beschreibung").":</td>
"." <td><input type=\"text\" maxlength=\"200\" style=\"width:300px;\" name=\"CMS_VAR[16]\" value=\"".$rss_description_length."\">
"." </td>
"." </tr>
";
echo "</table>
";
?><?php
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUPUT
*
* 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_HTML', $i));
$i++;
}
$description = capiStrTrimAfterWord($description, $rss_description_length);
$pub_date = $tmp_article->getField("created");
$pub_date = strtotime($pub_date);
$pub_date = date('r', $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");
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));
$sIn = html_entity_decode($sIn);
}
function htmlnumericalentities($str) {
return preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str);
}
?>