RSS Feed Creator-Problem mit Umlauten- Bug?
RSS Feed Creator-Problem mit Umlauten- Bug?
Hallo Cumminty,
ich habe die RSS Feed Creator bereits fertig und funktionstüchtig eingebaut nach Anleitung hier im Forum. Nachdem ändern einiger Artikel bekomme ich nun folgende Fehlermeldung:
XML-Verarbeitungsfehler: Undefinierte Entität
Adresse: http://s146058036.online.de/contenido/e ... 00c6da1aaf
Zeile Nr. 31, Spalte 50:
Was mache ich falsch bzw. muss ich ändern?
Eingesetzt wird die Version 4.6.2.
ich habe die RSS Feed Creator bereits fertig und funktionstüchtig eingebaut nach Anleitung hier im Forum. Nachdem ändern einiger Artikel bekomme ich nun folgende Fehlermeldung:
XML-Verarbeitungsfehler: Undefinierte Entität
Adresse: http://s146058036.online.de/contenido/e ... 00c6da1aaf
Zeile Nr. 31, Spalte 50:
Was mache ich falsch bzw. muss ich ändern?
Eingesetzt wird die Version 4.6.2.
Zuletzt geändert von moltimer am Fr 13. Jan 2006, 23:52, insgesamt 2-mal geändert.
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1
Nochmal ich,
ich habe das Problem nun eingegrenzt. Sobald in einem Artikel Umlaute oder Sonderzeichen auftauchen, kommt es im Modul RSS Feed Creator zur obigen Fehlermeldung, un der Feed wird nicht korrekt erstellt.
Ich habe schon einige Foren Einträge bzgl. UTF-8 und IS0 geshen aber nicht verstanden. Ist es ein Browser oder Contenido Problem.
Wäre nett wenn jemand mir nochmal genau den Zusammenhang kurz erläutern könnte und mir die entsprechenden Stellen in Contenido oder im HTML Code zur Änderung posten könnte.
Danke im voraus.
Gruß Moltimer
ich habe das Problem nun eingegrenzt. Sobald in einem Artikel Umlaute oder Sonderzeichen auftauchen, kommt es im Modul RSS Feed Creator zur obigen Fehlermeldung, un der Feed wird nicht korrekt erstellt.
Ich habe schon einige Foren Einträge bzgl. UTF-8 und IS0 geshen aber nicht verstanden. Ist es ein Browser oder Contenido Problem.
Wäre nett wenn jemand mir nochmal genau den Zusammenhang kurz erläutern könnte und mir die entsprechenden Stellen in Contenido oder im HTML Code zur Änderung posten könnte.
Danke im voraus.
Gruß Moltimer
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1
Da gab es doch schon einen Thread zum RSS-Modul und umlauten. Suche nochmal.
Gruß
HerrB
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Liebe Community,
im Contenido Forum habe ich nichts diesbezüglich gefunden.
Allerdings im phpcenter Forum
http://www.phpcenter.de/phorum/read.php ... 86&t=48586
Ich weiss nun dass es mit den Umlauten und Entitäten zusammenhängt und es eine Ungereimtheit im RSS Feed Creator Modul aus dem Beispielmandanten aus Version 4.6.2 sein muss. Sobald die Sonderzeichen HTMl konform umschriben werden kommt es zu diesem Fehler. Schreibt man die Sonderzeichen direkt - also ä, ü etc. kommt dieser Fehler nicht. Es müsste also eine str_replace vorgenommen weden der aus z.B ä ein ä macht - oder so .
Nur leider bin ich noch PHP Anfänger und weiss nicht was ich ändern muss. Da wird es doch bestimmt die eine oder andere Funktion für geben.
Wäre nett wenn mir jemand helfen würde.
Gruß Moltimer
im Contenido Forum habe ich nichts diesbezüglich gefunden.
Allerdings im phpcenter Forum
http://www.phpcenter.de/phorum/read.php ... 86&t=48586
Ich weiss nun dass es mit den Umlauten und Entitäten zusammenhängt und es eine Ungereimtheit im RSS Feed Creator Modul aus dem Beispielmandanten aus Version 4.6.2 sein muss. Sobald die Sonderzeichen HTMl konform umschriben werden kommt es zu diesem Fehler. Schreibt man die Sonderzeichen direkt - also ä, ü etc. kommt dieser Fehler nicht. Es müsste also eine str_replace vorgenommen weden der aus z.B ä ein ä macht - oder so .
Nur leider bin ich noch PHP Anfänger und weiss nicht was ich ändern muss. Da wird es doch bestimmt die eine oder andere Funktion für geben.
Wäre nett wenn mir jemand helfen würde.
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
************************************************/
#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('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");
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 htmlnumericalentities($str) {
return preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str);
}
?>
Contenido 4.6.2
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1
Server Betriebssystem Apache/1.3.33 (Unix)
MySQL Serverversion 4.0.25-standard-log
PHP-Version 4.4.1
Provider: 1&1
Was ist aus dem Problem geworden? Ich kämpfe damit auch gerade herum.
Zunächst hat der RSS Feed Creator wunderbar gearbeitet. Als ich dann im TEXT(HTML)-Modul die <p>-Tags entfernt habe, gings plötzlich nicht mehr. Mittlerweile geht es auch nach Einfügen der Tags nicht.
Gut am Entfernen der TEXT-Tags war, daß ich endlich keine doppelten Tags mehr hatte - nur leider eben zu Lasten des RSS Feed Creators.
Hm.
E.
Zunächst hat der RSS Feed Creator wunderbar gearbeitet. Als ich dann im TEXT(HTML)-Modul die <p>-Tags entfernt habe, gings plötzlich nicht mehr. Mittlerweile geht es auch nach Einfügen der Tags nicht.
Gut am Entfernen der TEXT-Tags war, daß ich endlich keine doppelten Tags mehr hatte - nur leider eben zu Lasten des RSS Feed Creators.
Hm.
E.
Mein aktueller Workaround:
ich gebe den gewünschtne Artikeltext -meist über die HTML-ansicht von tinymce- ein, speichere, bis ich in der editier-ansicht bin. dann lösche ich den ersten umlaut im text (nur den!), tippe ihn in der editier-ansicht nochmal neu ein, speichere und gut ist.
so läuft der feed creator wunderbar.
gute nacht,
e.
ich gebe den gewünschtne Artikeltext -meist über die HTML-ansicht von tinymce- ein, speichere, bis ich in der editier-ansicht bin. dann lösche ich den ersten umlaut im text (nur den!), tippe ihn in der editier-ansicht nochmal neu ein, speichere und gut ist.
so läuft der feed creator wunderbar.
gute nacht,
e.
-
- Beiträge: 16
- Registriert: Mi 18. Mai 2005, 21:12
- Kontaktdaten:
Ich hab's wie folgt in den Griff gekriegt:
Direkt im Modul (RSS Feed Creator, Ausgabe) nach:
diese Zeile zusätzlich eingefügt:
Nach dieser Änderung kommt keine Fehlermeldung im Firefox mehr - der IE hatte auch vorher kein Problem. Hoffe, es klappt auch bei Euch.
Gruß CP
--> Version 4.6.8
Direkt im Modul (RSS Feed Creator, Ausgabe) nach:
Code: Alles auswählen
function prepareStringForOutput($sIn) {
Code: Alles auswählen
$sIn = html_entity_decode($sIn);
Gruß CP
--> Version 4.6.8
Erfahrung ist eine nützliche Sache.
Leider macht man sie immer erst kurz nachdem man sie brauchte.
Leider macht man sie immer erst kurz nachdem man sie brauchte.
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
-
- Beiträge: 94
- Registriert: Di 27. Jul 2004, 11:52
- Wohnort: Vogtland
- Kontaktdaten:
Der Tipp hat mir sehr geholfen. Besten Dank.cassiopeia hat geschrieben:Ich hab's wie folgt in den Griff gekriegt:
Direkt im Modul (RSS Feed Creator, Ausgabe) nach ...
Klaus
Version 4.4.5.r1 - DRK im Vogtland * Version 4.6.15 - Informationsportal - Xpert Business Spezial
Version 4.4.5.r1 - DRK im Vogtland * Version 4.6.15 - Informationsportal - Xpert Business Spezial