[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Funktioniert bis auf die Umlaute - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
radamazone
Beiträge: 36
Registriert: 7. Nov 2008, 11:03

Funktioniert bis auf die Umlaute

16. Apr 2010, 10:59

Hallo,

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;
}	
?>
Grüsse
radamazone

Joachim.Dörr
Beiträge: 1403
Registriert: 7. Apr 2006, 01:49
Kontaktdaten: ICQ Website

6. Jul 2010, 07:59

Spontan würd ich sagen: php vom Template auf utf-8 stellen, html auf utf-8 stellen. Dann müsste es schon funktionieren.

lg
Joachim

Zurück zu „Allgemeines [R4]“