Projekt

Allgemein

Profil

Aktionen

GX-Bug #59013

geschlossen

Smarty Blocküberladungen zeigen Fehlverhalten bei gleichzeitiger Nutzung von Blocküberschreibung und Blockerweiterung

Von Wilken Haase vor etwa 6 Jahren hinzugefügt. Vor mehr als 3 Jahren aktualisiert.

Status:
Erledigt
Priorität:
Dringend
Zugewiesen an:
Amine Riad
Kategorie:
Core
Zielversion:
% erledigt:

100%

Geschätzter Aufwand:
Steps to reproduce:
Betroffene Versionen:
3.10.0.4
Release Notes Langtext:

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.


Aktionen #1

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.

Aktionen #2

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}
Aktionen #3

Von Mirko Janssen vor fast 6 Jahren aktualisiert

  • Tags wurde auf Diskussion gesetzt
Aktionen #4

Von Daniel Wu vor mehr als 5 Jahren aktualisiert

Der verknüpfte Commit gehört zum folgenden Ticket: https://tracker.gambio-server.net/issues/59281

Aktionen #5

Von Ulrich Wenk vor mehr als 5 Jahren aktualisiert

  • Status wurde von Gemeldet zu Feedback geändert
  • Zugewiesen an wurde auf Moritz Bunjes gesetzt
Aktionen #6

Von Moritz Bunjes vor mehr als 5 Jahren aktualisiert

  • Tags Diskussion wurde gelöscht
  • Status wurde von Feedback zu Anerkannt geändert
  • Zugewiesen an Moritz Bunjes wurde 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.

Aktionen #7

Von Jonatas Fischer vor mehr als 5 Jahren aktualisiert

  • Tags wurde auf Ready gesetzt
Aktionen #8

Von Marvin Muxfeld vor mehr als 5 Jahren aktualisiert

  • Zugewiesen an wurde auf Marvin Muxfeld gesetzt
Aktionen #9

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
Aktionen #10

Von Amine Riad vor mehr als 5 Jahren aktualisiert

  • Zielversion wurde von 133 zu 3.13.1.0 beta2 geändert
Aktionen #11

Von Amine Riad vor mehr als 5 Jahren aktualisiert

  • Zugewiesen an wurde von Core-Entwickler zu Amine Riad geändert
Aktionen #12

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
Aktionen #13

Von Ulrich Wenk vor mehr als 5 Jahren aktualisiert

  • Release Notes Langtext aktualisiert (Vergleich)
Aktionen #14

Von Moritz Bunjes vor mehr als 3 Jahren aktualisiert

  • Tags Ready wurde gelöscht
Aktionen

Auch abrufbar als: Atom PDF