#1627 closed Bug/Fehler (fixed)
Problem mit Smarty replace Funktion
| Reported by: | Torsten Riemer | Owned by: | somebody |
|---|---|---|---|
| Priority: | hoch | Milestone: | modified-shop-2.0.5.0 |
| Component: | Shop | Version: | 2.0.4.2 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description
Aufgefallen ist mir das bei einem Shop, der identisch zu einem anderen Shop des Kunden ist.
Ausgangslage:
- Beide Shops 2.0.4.2
- Beide Shops latin1
- Beide Shop haben das selbe aktuelle responsive Template von uns, wo an diversen Stellen die Smarty Funktion "replace" verwendet wird, unter anderen zur Ersetzung von » gegen FontAwesome in der Breadcrumb.
- Der eine Shop läuft unter PHP 5.6.40
- Der andere unter PHP 7.1.28
Im PHP 5.6.40 Shop wird die Breadcrumb auf der Seite "Privatsphäre und Datenschutz" (Umlaut nicht als Entity in Tabelle "content_manager" Spalte "content_title") angezeigt.
Im PHP 7.1.28 Shop wird die Breadcrumb auf der Seite "Privatsphäre und Datenschutz" (Umlaute nicht als Entities in Tabelle "content_manager" Spalte "content_title") nicht angezeigt.
Speicher ich im PHP 7.1.28 Shop den Umlaut (ä) als Entity in Tabelle "content_manager" Spalte "content_title", dann wird auch hier die Breadcrumb angezeigt.
Fehlermeldung im Log des PHP 7.1.28 Shops:
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] implode(): Invalid arguments passed in File: /.../.../.../.../.../includes/external/smarty/smarty_3/plugins/shared.mb_str_replace.php on Line: 49 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #0 - /.../.../.../.../.../includes/external/smarty/smarty_3/plugins/modifier.replace.php called at Line 35 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #1 - /.../.../.../.../.../templates_c/d925352bc611d724dc57d293e10216c66670efff_0.file.index.html.php called at Line 225 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #2 - /.../.../.../.../.../includes/external/smarty/smarty_3/sysplugins/smarty_template_resource_base.php called at Line 123 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #3 - /.../.../.../.../.../includes/external/smarty/smarty_3/sysplugins/smarty_template_compiled.php called at Line 114 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #4 - /.../.../.../.../.../includes/external/smarty/smarty_3/sysplugins/smarty_internal_template.php called at Line 206 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #5 - /.../.../.../.../.../includes/external/smarty/smarty_3/sysplugins/smarty_internal_templatebase.php called at Line 232 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #6 - /.../.../.../.../.../includes/external/smarty/smarty_3/sysplugins/smarty_internal_templatebase.php called at Line 134 {} {}
[2019-04-30 16:49:02] [warning] [modified] [pid:29757] Backtrace #7 - /.../.../.../.../.../shop_content.php called at Line 124 {} {}
Markus sagte mir dann, dass Gerhard das erst vor kurzem am 25.04.2019 in einem anderen Shop (läuft auch genau unter PHP 7.1.28) wie folgt in der "/includes/external/smarty/smarty_3/plugins/shared.mb_str_replace.php" korrigiert hatte:
Suche:
$subject = implode($replace, $parts);
Ersetze mit:
$subject = str_replace($search, $replace, $subject);
Das führte auch bei meinem Problemshop zur Lösung!
Attachments (0)
Change History (11)
comment:2 by , 7 years ago
Ticket #1188 hat doch nichts damit zu tun. Die neuere html_encoding.php macht keinen Unterschied.
Es gibt noch einen Thread zum Thema: Hersteller Box dropdown aktivieren
Dort hat hpzeller replace mit str_replace ersetzt und die Zeile umgedreht und es ging dann.
Genauso wie im Thread Smarty Replace bei Selectbox funktioniert nicht und auch im Eingangsbeitrag von Tomcraft, handelt es sich in allen Fällen um Latin1 Shops.
Ich konnte in einem Test auch nachvollziehen, dass die Breadcrumb für Privatsphäre und Datenschutz nicht mehr angezeigt wird, wenn man in der includes/configure.php auf Latin umstellt und im Contentmanager bei Privatsphäre statt ä ein ä verwendet.
Der Fehler tritt nur in PHP 7.1.x und höher auf. In der 7.0.33 und kleiner Version funktioniert es.
comment:4 by , 6 years ago
Replying to GTB:
Ich habe ein Ticket direkt bei Smarty erstellt:
Es gibt dort eine Antwort...
https://github.com/smarty-php/smarty/issues/549#issuecomment-531599517
comment:8 by , 4 years ago
Replying to GTB:
Ich habe ein Ticket direkt bei Smarty erstellt:
Da gibt es recht neue Beiträge zum Thema.
comment:9 by , 4 years ago
ja, es wurde ein paar andere Tickets dazu verlinkt, aber alle verlinkten Tickets stehen auf offen. Unser Fix ist bisher das einfachste und es funktioniert. Ich weiss nicht, warum sich Smarty hier quer stellt das zu übernehmen.
comment:10 by , 3 years ago
Das von Gerhard geöffnete Ticket auf der GitHub Seite von smarty wurde auf closed gesetzt und wurde mit smarty 4.2.0, was schon im dev Demoshop enthalten ist, gelöst.
Damit sollte der Fix von modified nicht mehr nötig sein.
comment:11 by , 3 years ago
Das wurde bereits durch Ticket #2305 gelöst.
Bitte schreibe nicht unnötig in alte Tickets. Den Kommentar im anderen Ticket habe ich gelöscht.

Damit es nicht Übersehen wird ...
Smarty Replace bei Selectbox funktioniert nicht
Markus