Modify

Opened 7 years ago

Closed 6 years ago

Last modified 3 years ago

#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:1 by Markus Rehm, 7 years ago

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

Markus

Last edited 7 years ago by Torsten Riemer (previous) (diff)

comment:2 by FräuleinGarn, 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.

Last edited 7 years ago by Torsten Riemer (previous) (diff)

comment:3 by Gerhard Waldemair, 6 years ago

Ich habe ein Ticket direkt bei Smarty erstellt:

https://github.com/smarty-php/smarty/issues/549

in reply to:  3 comment:4 by anonymous, 6 years ago

Last edited 6 years ago by Torsten Riemer (previous) (diff)

comment:5 by Gerhard Waldemair, 6 years ago

Resolution: fixed
Status: newclosed

In 12131:

fix #1627

comment:6 by Gerhard Waldemair, 6 years ago

In 12173:

fix #1627

comment:7 by Gerhard Waldemair, 6 years ago

In 12175:

fix #1627

in reply to:  3 comment:8 by FräuleinGarn, 4 years ago

Replying to GTB:

Ich habe ein Ticket direkt bei Smarty erstellt:

https://github.com/smarty-php/smarty/issues/549

Da gibt es recht neue Beiträge zum Thema.

comment:9 by Gerhard Waldemair, 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 Timm, 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 Torsten Riemer, 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.

Modify Ticket

Action
as closed The owner will remain somebody.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.