Opened 14 months ago

Closed 10 months ago

Last modified 9 months ago

#1627 closed Bug/Fehler (fixed)

Problem mit Smarty replace Funktion

Reported by: Tomcraft Owned by: somebody
Priority: hoch Milestone: modified-shop-2.0.5.0
Component: Shop Version: 2.0.4.2

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 (7)

comment:1 Changed 13 months ago by markus

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

Markus

Last edited 13 months ago by Tomcraft (previous) (diff)

comment:2 Changed 13 months ago by FräuleinGarn

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 13 months ago by Tomcraft (previous) (diff)

comment:3 follow-up: Changed 11 months ago by GTB

Ich habe ein Ticket direkt bei Smarty erstellt:

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

comment:4 in reply to: ↑ 3 Changed 10 months ago by anonymous

Last edited 10 months ago by Tomcraft (previous) (diff)

comment:5 Changed 10 months ago by GTB

  • Resolution set to fixed
  • Status changed from new to closed

In 12131:

fix #1627

comment:6 Changed 9 months ago by GTB

In 12173:

fix #1627

comment:7 Changed 9 months ago by GTB

In 12175:

fix #1627

Add Comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.