Freitextfelder werden nicht korrekt übernommen

Hallo,

 

ich habe unter Einstellungen > Artikel > Artikel-Freitextfelder zwei neue Freitextfelder mit dem Typen Checkbox bzw. boolean hinterlegt um bestimmte Teile im Template ausgeben zu können. Jedoch wird nur der erste Teil meiner Abfrage ausgeführt, obwohl attr4 im Backend deaktiviert (false) und attr5 (true) sein müsste. Die Abfrage im Template lautet:

{if $sArticle.attr4 == true} 

{block name="frontend_detail_index_entwurf"}
{include file="frontend/detail/entwurf.tpl"}
{/block} 

{elseif $sArticle.attr5 == true} 

{block name="frontend_detail_index_demo"}
{include file="frontend/detail/demo.tpl"}
{/block} 

{else} 

{/if}

 

Vielen Dank!

 

 

Hallo,

hier wäre es natürlich am besten, wenn du einmal die komplette Template-Datei veröffentlichst.

Wenn du bspw. in deinem eigenen Theme von einer anderen Template-Datei erbst, könntest du bspw. die if-Abfragen nur innerhalb der Blöcke machen und nicht außerhalb. Hier wäre also entscheidend zu wissen, wie die ganze Template-Datei aufgebaut ist.

Beste Grüße

Sebastian

1 „Gefällt mir“

Auch wenn du im Backend boolean/Checkbox angibst wird der Wert in der Datenbank trotzdem als Text gespeichert (varchar).

Bin mir gerade nicht mehr ganz sicher wie smarty mit Text und der Abfrage == true umgeht, aber deiner Ausage nach scheint es, dass nur geprüft ob da irgendwas drin steht, daher ist wird die erste Abfrage erfüllt. Versuch es mal mit == „1“ oder == 1

1 „Gefällt mir“

Ich meine, das true müsste bei Attributen in Anführungszeichen stehen - also “true”. Ich habe es jedenfalls so im Theme, und bei mir funktioniert es auch nur so. Es wird zwar true und false gesetzt, aber offensichtlich als String den Attributen im Theme übergeben.
Und dann hat sschreier recht. If ausserhalb von einem Block geht nicht.

1 „Gefällt mir“

Hallo,

Alternativ könntest du es auch einmal so testen:

{if $sArticle.attr4 == true || $sArticle.attr4 == 1 || $sArticle.attr4 == "true"} 

{block name="frontend_detail_index_entwurf"}
{include file="frontend/detail/entwurf.tpl"}
{/block} 

{elseif $sArticle.attr5 == true || $sArticle.attr5 == 1 || $sArticle.attr5 == "true"} 

{block name="frontend_detail_index_demo"}
{include file="frontend/detail/demo.tpl"}
{/block} 

{else} 

{/if}

Beste Grüße

Sebastian

1 „Gefällt mir“

Vielen Dank für eure Hilfe! Habe die Abfragen angepasst und jetzt funktioniert es.

{if $sArticle.attr4 == "true"} 

{elseif $sArticle.attr5 == "true"} 

{/if}