Problem mit Titel im Listing: "..." statt Titel

Guten Morgen, ich verzweifel im Moment an einem Problem. Ich finde einfach keinen Grund, warum im Listing manchmal kein Titel beim Produkt angezeigt wird, sondern nur „…“. Beispiele: http://www.llv-shop.de/shopware.php/sViewport,search?sSearch=Superbright http://www.llv-shop.de/sonstiges/stative-und-zubehoer?p=2 Hat jemand eine Idee? Grüße Thomas

[quote=“Max-Zander”]Guten Morgen, ich verzweifel im Moment an einem Problem. Ich finde einfach keinen Grund, warum im Listing manchmal kein Titel beim Produkt angezeigt wird, sondern nur “…”. Beispiele: http://www.llv-shop.de/shopware.php/sViewport,search?sSearch=Superbright http://www.llv-shop.de/sonstiges/stative-und-zubehoer?p=2 Hat jemand eine Idee? Grüße Thomas[/quote] Noch keine Idee, aber die Bestätigung, dass das Phänomen auch bei einem unserer Kunden auftritt…

Eventuell irgendein Problem mit der Truncate-Funktion? Öffnet mal die Datei templates_default\frontend\listing\box_article.tpl Dann in Zeile 46: aus: [{$sArticle.articleName|truncate:47}]({$sArticle.linkDetails|rewrite:$sArticle.articleName} "{$sArticle.articleName}") [{$sArticle.articleName}]({$sArticle.linkDetails|rewrite:$sArticle.articleName} "{$sArticle.articleName}") machen… Kann es sein, dass das kein Plain-Text ist im Produktnamen, sondern dass in der Datenbank bei den Artikeln Tags etc. mit in der Bezeichnung stehen. Was passiert, wenn du den Artikel umbenennst, z.B . einfach mal ein Leerzeichen entfernst oder so?

[quote=„avenger“][quote=„Max-Zander“]Noch keine Idee, aber die Bestätigung, dass das Phänomen auch bei einem unserer Kunden auftritt…[/quote][/quote] Korrektur: Bei unserem Kunden betrifft das den Beschreibungstext, nicht den Namen… Da der HTML-Tags enthält vermute ich jetzt auch ein „truncate“-Problem weil anscheinend die HTML-Struktur so zerstört wird, dass die nicht mehr darstellbar ist… Werde mal ein „strip_tags“ dazu spendieren… EDIT: Leider ist das „strip_tags“ schon vorhanden… EDIT: Nach Entfernen des „truncate“ funktioniert das jetzt…

Eventuell die FIlter in der falschen Reihenfolge? Da müsste dann ja |strip_tags|truncate verwendet werden.

[quote=„Stefan Hamann“]Eventuell die FIlter in der falschen Reihenfolge? Da müsste dann ja |strip_tags|truncate verwendet werden.[/quote] Nein, die Reihenfolge war richtig.

Ich lass das nachher mal überprüfen, ob es bei der Truncate-Funktion irgendwelche grundsätlzichen Probleme gibt.

[quote=“avenger”][quote=“Stefan Hamann”]Eventuell die FIlter in der falschen Reihenfolge? Da müsste dann ja |strip_tags|truncate verwendet werden.[/quote] Nein, die Reihenfolge war richtig.[/quote] Irgendwie scheint der “truncate”-Modifier ein Problem zu haben… Im Template wird ein “truncate:$size” (mit $size=60) gemacht, was dazu führt, dass der Text nicht angezeigt wird… Mit einem “truncate:59” oder “truncate:61” erscheint der… Dafür haben dann aber andere Artikel Probleme…

[quote=„Stefan Hamann“]Ich lass das nachher mal überprüfen, ob es bei der Truncate-Funktion irgendwelche grundsätlzichen Probleme gibt.[/quote] Würd’ ich jetzt mal vermuten…

Da bin ich ja froh, das ich nicht der einzige bin mit dem Problem :slight_smile: Habe gestern mal schnell den Titel im ersten Link geändert, gespeichert, wieder zurückgeändert und gespeichert. Jetzt wird er wieder richtig angezeigt. Komisch… Den zweiten Link lasse ich mal als Fehler, damit man eine Änderung sehen kann wenn es wirklich an der Truncate-Funktion liegt.

Hi, das Problem ist die neue UTF-8-Unterstützung in der Truncate-Funktion. Da ist noch ein kleines Problem drin enthalten, dass unter Umständen auftreten kann. Das Problem kann durch das Ersetzen der folgenden Zeilen in der Truncate-Funktion (engine/Enlight/Enlight/Template/Plugins/modifier.truncate.php): if (!$break\_words && !$middle) { $string = preg\_replace('/\s+?(\S+)?$/u', '', mb\_substr($string, 0, $length + 1)); } if (!$middle) { $string = mb\_substr($string, 0, $length) . $etc; } else { $string = mb\_substr($string, 0, $length / 2) . $etc . mb\_substr($string, - $length / 2); } durch diese Zeilen: if (!$break\_words && !$middle) { $string = preg\_replace('/\s+?(\S+)?$/u', '', mb\_substr($string, 0, $length + 1, 'UTF-8')); } if (!$middle) { $string = mb\_substr($string, 0, $length, 'UTF-8') . $etc; } else { $string = mb\_substr($string, 0, $length / 2) . $etc . mb\_substr($string, - $length / 2, 'UTF-8'); } behoben werden. :wink: Viele Grüße Heiner

2 Likes

Das scheint es gewesen zu sein. Jetzt geht es. Danke!

[quote=„rocky“] if (!$break\_words && !$middle) { $string = preg\_replace('/\s+?(\S+)?$/u', '', mb\_substr($string, 0, $length + 1, 'UTF-8')); } if (!$middle) { $string = mb\_substr($string, 0, $length, 'UTF-8') . $etc; } else { $string = mb\_substr($string, 0, $length / 2) . $etc . mb\_substr($string, - $length / 2, 'UTF-8'); } behoben werden. ;)[/quote] Bei der „truncate“-Version auf meinem System müsste das so aussehen… if (!$middle) { return mb\_substr($string, 0, $length, 'UTF-8') . $etc; } else { return mb\_substr($string, 0, $length / 2) . $etc . mb\_substr($string, - $length / 2, 'UTF-8'); } EDIT: Jetzt funktioniert es aber wieder richtig,…

Hi, wo ist den den hier der Unterschied zwischen meiner Version und deiner Version?

[quote=„rocky“]Hi, wo ist den den hier der Unterschied zwischen meiner Version und deiner Version?[/quote] Darin, dass Du „$string = …“ hast und ich „return …“