GX-Bug #59013
geschlossenSmarty Blocküberladungen zeigen Fehlverhalten bei gleichzeitiger Nutzung von Blocküberschreibung und Blockerweiterung
100%
Smarty Blocküberladungen zeigen kein Fehlverhalten mehr bei gleichzeitiger Nutzung von Blocküberschreibung und Blockerweiterung
Beschreibung
Folgender Test zeigt das Fehlverhalten:
GXModules/Test/TestModule/Shop/Templates/Honeygrid/module/head.html
{block name="module_head_head_viewport_meta"} <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes" /> {/block} {block name="module_head_head_viewport_meta" append} <meta name="test" content="test" /> {/block}
Ausgabe im Template:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes" />
Der Originalblock wird ausgegeben, dazu die vollständige Überschreibung, so dass der Block 2x da ist. Der neue Appendix fehlt.
Von Moritz Bunjes vor etwa 6 Jahren aktualisiert
Das Verhalten ist ein Smarty-Bug. Dazu haben wir aktuell keine Lösung. Der Fehler ist auch hier diskutiert: https://www.smarty.net/forums/viewtopic.php?t=26800&sid=b8f3a20fd1c61049e64fe9d87d4f3753
Grundsätzlich sollten wir (Gambio) selbst so wenig Gebrauch wie möglich vom block-System machen, um die Wahrscheinlichkeit zu verringern, dass ein Dritt-Entwickler in dieses Problem läuft.
Von Mirko Janssen vor fast 6 Jahren aktualisiert
Ich glaube, dass das das lösen könnte, indem man einfach sagt, dass man nicht so appended wie Wilken das macht, sondern so:
grandparent.tpl:
{block name='test'}Test only the grandparent{/block}
parent.tpl:
{extends file='grandparent.tpl'}
{block name='test'}{$smarty.block.parent} with parent appended{/block}
child.tpl:
{extends file='parent.tpl'}
{block name='test'}This is only the child{/block}
Von Daniel Wu vor fast 6 Jahren aktualisiert
Der verknüpfte Commit gehört zum folgenden Ticket: https://tracker.gambio-server.net/issues/59281
Von Ulrich Wenk vor mehr als 5 Jahren aktualisiert
- Status wurde von Gemeldet zu Feedback geändert
- Zugewiesen an wurde auf Moritz Bunjes gesetzt
Von Moritz Bunjes vor mehr als 5 Jahren aktualisiert
- Tags
Diskussionwurde gelöscht - Status wurde von Feedback zu Anerkannt geändert
- Zugewiesen an
Moritz Bunjeswurde gelöscht
Mirkos solutions works fine. We should adjust our overloads accordingly.
It is not possible to replace a complete Smarty block, if it was appended or prepended before. In most or all cases we still want to support a full replacement for developers. So we should avoid prepends and appends using the append and prepend attribute in the block tag. The solution is simple:
Wrong
{block name="foo" append}bar{/block}
Correct
{block name="foo"}{$smarty.block.parent}bar{/block}
Wrong
{block name="foo" prepend}bar{/block}
Correct
{block name="foo"}bar{$smarty.block.parent}{/block}
This is the way to go for our overloads.
Von Marvin Muxfeld vor mehr als 5 Jahren aktualisiert
- Zugewiesen an wurde auf Marvin Muxfeld gesetzt
Von Marvin Muxfeld vor mehr als 5 Jahren aktualisiert
- Status wurde von Anerkannt zu Testing geändert
- Zugewiesen an wurde von Marvin Muxfeld zu Core-Entwickler geändert
Von Amine Riad vor mehr als 5 Jahren aktualisiert
- Zielversion wurde von 133 zu 3.13.1.0 beta2 geändert
Von Amine Riad vor mehr als 5 Jahren aktualisiert
- Zugewiesen an wurde von Core-Entwickler zu Amine Riad geändert
Von Amine Riad vor mehr als 5 Jahren aktualisiert
- Status wurde von Testing zu Erledigt geändert
- % erledigt wurde von 0 zu 100 geändert
Von Ulrich Wenk vor mehr als 5 Jahren aktualisiert
- Release Notes Langtext aktualisiert (Vergleich)