bei mir funktioniert das Modul von Franzi sehr gut. Nur die Umlaute der $item_description werden nicht korrekt dargestellt. Beim verlinkten Titel werden die Umlaute korrekt dargestellt. Nutze UTF-8 auf der Website.
Weiß da jemand evtl. Abhilfe?
Hier die Ausgabe:
Code: Alles auswählen
<?php
header('Content-Type: text/xml; charset=utf-8');
// Version 1.5.1
//---Module by----------------------
//-- franz007.at
//-- franz007
//-- www.franz007.at
//----------------------------------
$rss_title = "REX_VALUE[6]"; // titel des RSS-feeds
$rss_link = "REX_VALUE[7]"; // link
$rss_description = "REX_VALUE[8]"; // beschreibung des feeds
$rss_language = "REX_VALUE[9]"; //language code
$domain = "REX_VALUE[10]"; # inkl http:// und abschließndem / wird in den Links vor rex_getUrl($articleId) gesetzt
/*$rss_title = "franz007.at Newsfeed"; // titel des RSS-feeds
$rss_link = "http://www.franz007.at/"; // link
$rss_description = "franz007.at"; // beschreibung des feeds
$rss_language = "de-at"; //language code
$domain = "http://www.franz007.at/"; # inkl http:// und abschließndem / wird in den Links vor rex_getUrl($articleId) gesetzt*/
$n = "\n";
if (!$REX['REDAXO']){ #nicht im backend
function un_htmlentities__m148($string){
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
function sortArticlesByUpdateDate__m148( $artA, $artB) {
$createA = $artA->_updatedate;
$createB = $artB->_updatedate;
if ( $createA == $createB) {
return 0;
}
return $createA > $createB ? -1 : 1;
}
function sortArticlesByUpdateDate_rev__m148( $artA, $artB) {
$createA = $artA->_updatedate;
$createB = $artB->_updatedate;
if ( $createA == $createB) {
return 0;
}
return $createA > $createB ? +1 : 1;
}
function sortArticlesByPrio__m148( $artA, $artB) {
$createA = $artA->_prior;
$createB = $artB->_prior;
if ( $createA == $createB) {
return 0;
}
return $createA > $createB ? +1 : 1;
}
function sortArticlesByPrio_rev__m148( $artA, $artB) {
$createA = $artA->_prior;
$createB = $artB->_prior;
if ( $createA == $createB) {
return 0;
}
//return $createA > $createB ? +1 : 1;
return $createA > $createB ? -1 : 1;
}
function only_numbers__m148($string){
if(strval(intval($string)) == $string)
return true;
else
echo false;
}
header("Content-type: application/xml");
echo '<'.'?xml version="1.0" encoding="UTF-8" ?'.'>';
echo '<rss version="0.91">'.$n;
echo '<channel>'.$n;
echo '<title>'.$rss_title.'</title>'.$n;
echo '<link>'.$rss_link.'</link>'.$n;
echo '<description>'.$rss_description.'</description>'.$n;
echo '<language>'.$rss_language.'</language>'.$n;
$itemsPerSide = "REX_VALUE[2]";
$wordsPerArticle = "REX_VALUE[3]";
$config_categories = "REX_VALUE[1]";
#$start = !empty($_GET['start']) ? (int) $_GET['start'] : 0; // Startitem
$start = 0;
$offset = $itemsPerSide; // 10 Items pro Seite
if($config_categories !== ""){
#$cats = array($config_categories);
if(strstr($config_categories, ";") == false){# kein ; gefunden
$cats = array($config_categories);
}
elseif(strstr($config_categories, ";") !== false){ # ; gefunden
$cats = explode(";", $config_categories);
# überprüfen ob alle werte des arrays zahlen sind
foreach($cats as $temp){
if(!only_numbers__m148($temp)){
$cats = array("REX_CATEGORY_ID"); // aktuelle Kategorien "indizieren"
break;
}
}
}
elseif(!only_numbers__m148($config_categories)){
$cats = array("REX_CATEGORY_ID"); // aktuelle Kategorien "indizieren"
}
}
else{
$cats = array("REX_CATEGORY_ID"); // aktuelle Kategorien "indizieren"
}
$articles = array();
foreach ( $cats as $catId) {
$cat = OOCategory::getCategoryById( $catId);
// CatIds die nicht funktionieren aussortieren
if( $cat === null) {
continue;
}
$cat_articles = $cat->getArticles( true);
foreach ( $cat_articles as $ooarticle) {
// keine Startartikel anzeigen
if ( $ooarticle->isStartPage()) {
continue;
}
// Damit keine Endlosschleife passiert, den Artikel der die Pagination setzt berspringen
if ( $ooarticle->getId() == REX_ARTICLE_ID) {
continue;
}
$articles[] = $ooarticle;
}
}
$articles_length = count( $articles);
// Sortieren
if ( $articles_length > 0) {
if("REX_VALUE[4]" == "1"){// Sortieren nach Erstellungsdatum
usort( $articles, "sortArticlesByUpdateDate__m148");
}
if("REX_VALUE[4]" == "2"){// Sortieren nach Erstellungsdatum
usort( $articles, "sortArticlesByUpdateDate_rev__m148");
}
if("REX_VALUE[4]" == "3"){// Sortieren nach Priorität
usort( $articles, "sortArticlesByPrio__m148");
}
if("REX_VALUE[4]" == "4"){// Sortieren nach Priorität (umgekehrt)
usort( $articles, "sortArticlesByPrio_rev__m148");
}
}
$article_list = array_slice( $articles, $start, $offset);
foreach ( $article_list as $ooarticle) {
#foreach ( $articles as $ooarticle) {
if ($ooarticle->isOnline(true)) {
$articleId = $ooarticle->getId();
$articleClang = $ooarticle->getCLang();
#$article = new article();
$article = new rex_article();
$article->setArticleId( $articleId);
$article->setCLang($articleClang);
$articleContent = $article->getArticle();
if('REX_VALUE[5]' == "1"){//überschriften entfernen
//überschriften entfernen
#$articleContent = preg_replace("/<h[1-6]>.*<\/h[1-6]>/", "", $articleContent);
$articleContent = preg_replace("/<h[1-6]>(.+?)<\/h[1-6]>/", " ", $articleContent);
#preg_match_all('#<h[1-6]>(.*)</h[1-6]>#', $articleContent, $found);
}
#print_r($found);
//alle tags entfernen
$articleContent = strip_tags($articleContent);
$articleContent = un_htmlentities__m148($articleContent);
$output = "";
$words = explode(" ",$articleContent);
$wordsCount = count($words);
if ($wordsCount < $wordsPerArticle) {
$wEnd = $wordsCount;
}
else{
$wEnd = $wordsPerArticle;
$cutted = true;
}
for ($w=0;$w<$wEnd;$w++) {
$output .= $words[$w]." ";
}
// Leerzeichen entfernen am Anfang und Ende des Strings
$output = trim($output);
$output = mb_convert_encoding($output, "UTF-8");
$item_description = $output;
// " ..." anhängen wenn der artikel gekrzt wird
if($cutted = true){
$item_description .= " ...";
}
$item_title = $ooarticle->getName();
$item_link = $domain.rex_getUrl($articleId);
$item_title = "<![CDATA[".$item_title." ]]>";
$item_description = strip_tags($item_description);
$item_description = un_htmlentities__m148($item_description);
$item_description = "<![CDATA[".$item_description."]]> ";
#eintrag ausgeben
echo '<item>'.$n;
echo '<title>';
echo $item_title;
echo '</title>'.$n;
echo '<description>'.$item_description.'</description>'.$n;
echo '<link>';
echo $item_link;
echo '</link>'.$n;
echo '</item>'.$n;
}
}
echo '</channel>'.$n;
echo '</rss>'.$n;
}
else{ //im backend
echo "RSS-feed";
if(isset($m148_rrs_feed_module_already_set) && $m148_rrs_feed_module_already_set == true){
echo '<h1>Das Modul darf nur einmal pro Artikel eingesetzt werden und muss das einzige Modul im Artikel sein!</h1>'.$n;
}
$m148_rrs_feed_module_already_set = true;
}
?>
radamazone