Hallo zusammen, ist es möglich mit einer if-Abfrage zu überprüfen, ob ein bestimmter Textbaustein vorhanden ist? Beispeil-Textbaustein: {s name=„HotlineTime“ namespace=‚frontend/index/index‘}{/s} Vielen Dank im Voraus Boris
Die Frage ist, warum willst du das machen? Du kannst doch selbst dafür sorgen, in dem du einen Default-Wert für den Textbaustein definierst - das geht direkt im Template. {s name=“HotlineTime” namespace=‘frontend/index/index’}Ich bin immer da{/s} Dann wird der angelegt, sollte der nicht vorhanden sein!
Stefan, danke für Deine Antwort. Ich möchte auf einzelnen Seiten einen Text ausgeben. Da der Kunde noch nicht weiß, wo das geschehen wird, habe ich mir überlegt, das Problem mit „dynamische Textbausteine“ zu lösen. Beispielcode: {s name="Text$PageID" namespace='frontend/index/index'}{/s}
$PageID ist die ID der jeweiligen Page. Zum Beispiel Startseite hat die ID=3. Diese bekomme ich vom Controller. Infolgedessen wollte ich jetzt überprüfen, ob der Kunde was geschrieben hat oder nicht und den Text nur dann anzeigen, wenn der Textbaustein vorhanden ist. Für die Startseite wäre der Name des Textbausteins „Text3“.
Hab’s jetzt selber herausgefunden. Mein Workaround Zugriff auf: - Textbausteine (Alte Templatebasis) {php} $textbaustein = Shopware()-\>Config()-\>Snippets()-\>get('TextbausteinName'); {/php}
- Textbausteine (Neue Templatebasis) {php} $textbaustein = '{s name="TextbausteinName" namespace="TextbausteinNamespace"}{/s}'; {/php}
und dann kann man mit einer if-Abfrage die Variable „textbaustein“ überprüfen. Wenn man zum Beispiel einen String „true“ erwartet, sieht das ganze so aus: {php} if($textbaustein){ echo "ist true": } {/php}
Wenn der jeweilige Textbaustein nicht vorhanden ist, wird Folgendes ausgegeben: #TextbausteinName#
Sprich, jetzt kann man ganz einfach überprüfen, ob der Textbaustein überhaupt vorhanden ist. {php} if((substr($textbaustein, 0, 1) != '#') && (substr ($textbaustein, -1) != '#') ){ echo 'Textbaustein ist vorhanden'; }else{ echo 'Textbaustein nicht vorhanden'; } {/php}
Funktioniert aber nur, wenn man keine Strings verwendet, die mit „#“ anfangen und enden.
Für Textbausteine (Neue Templatebasis) geht es auch ohne {php}. Auf die Weise bleibt man in smarty. {$textbaustein = '{s name="TextbausteinName" namespace="TextbausteinNamespace"}{/s}'} {if (($textbaustein|substr:0:1) != '#') && (($textbaustein|substr:-1) != '#')} Textbaustein ist vorhanden {else} Textbaustein nicht vorhanden {/if}
Es geht noch einfacher: {$default = "{s name='TextbausteinName' namespace='frontend/index/namespace'}{/s}"} {$default|snippet:$dynamicTextbausteinName:'frontend/index/namespace'}
Wenn der “dynamicTextbausteinName” nicht gefunden, wird “TextbausteinName” angezeigt. Gefunden: post21512.html?hilit=textbaustein