Abfrage ShopseitenID klappt nicht

Guten Morgen zusammen, ich wollte dafür sorgen, das ein bestimmter Block nur auf bestimmten (oder einer bestimmten) Shopseite angezeigt wird und sonst nicht. Der Code ist teilweise von hier abgeleitet: Dieser Code steht in der meinTemplate/frontend/custom/index.tpl {\* Shopseiten ID \*} {foreach from=$sMenu.shopSeiten1 item=menuitem} {if $item.id == '53'} {block name='block\_xyz'} {include file="frontend/abc/xyz.tpl"...} {/block} {else} {block name='block\_xyz'}{/block} {/if} {/foreach} Nun ist es so, das diser Block einfach auf allen Shopseiten angezeigt wird, also die ganze Abfrage ignoriert wird - ich schwitze da schon seit drei Tagen dran rum, aber es will nicht gelingen :wtf: In den Grundeinstellungen/frontend/CMS ist folgendes eingetragen: Shopseiten1:shopSeiten1 und eine entsprechende Shopseite mit der ID 53 habe ich auch angelegt. Caches mehrfach geleert, Shopware V3.5.5 Kann bitte Jemand weiterhelfen? Grüße rattatui

Hey Ottscho :slight_smile: Danke, habe ich grade probiert, ist aber nachwievor. Wenn ich die Funktion == benutze, ist auf allen Shopseiten nichts zu sehen, bei != wirds wieder auf allen Seiten angezeigt… Das scheint also OK zu sein. Dann ist wohl doch die IF Abfrage falsch :frowning: Die ist ja original von “Shopseiten deaktivieren, per Link aber erreichbar machen” stöhn…

…also ich habe jetzt nochmal eine Gegenkontrolle mit dem standardmäßig vorhandenen „Direkter Kontakt“ versucht: {foreach from=$sMenu.shopSeiten1 item=menuitem} {block name='frontend\_index\_content\_right'} {if $item.id == '53'} {include file="frontend/custom/right.tpl"} {/if} {/block} {/foreach} …geht auch nicht - entweder auf jeder Shopseite oder auf keiner, genau wie oben. Wenn also die IF Abfrage falsch ist, welche ist dann die richtige? :frowning: :wtf:

Hallo rattatui, was genau möchtest du erreichen? Ich glaube, dass hier etwas durcheinander geraten ist. Die Anpassung die in dem Wiki-Artikel beschrieben wurde dient ja nur dazu einen eine bestimmte Shopseite von der Aufzählung auszuschließen. Wenn ich das richtig verstanden haben, möchtest du aber einen bestimmten Text oder Inhalt bei einer oder mehreren Shopseiten zusätzlich anzeigen lassen. Also vom Sinn her: WENN SHOPSEITE = 53 Diesen Text anzeigen ANSONSTEN nichts

Also wenn eine bestimmte Shopseite angezeigt wird, dann den Block rechts ausblenden bzw einen anderen Block anzeigen? Dann bist Du im Navigator falsch, der ist nur für die Navigator-Links. Aber Du hast doch schon die ID der jeweiligen Shopseite und damit auch schon die Lösung. Sieh Dir dazu mal dieses Template an: …/templates/_default/frontend/custom/index.tpl Ganz unten findest Du den Bereich, um den Block einzubetten. {block name='frontend\_index\_content\_right'} {include file="frontend/custom/right.tpl"} {/block} Tausche das aus, z.B. hiermit: {if $sCustomPage.id == 52} {block name='frontend\_index\_content\_right'}{/block} {else} {\* Sidebar right \*} {block name='frontend\_index\_content\_right'} {include file="frontend/custom/right.tpl"} {/block} {/if} Wird die Shopseite ID 52 geöffnet, so wird der rechte Block nicht angezeigt. Alle anderen Seiten haben den Block weiterhin. Alternativ was anders anzeigen sieht dann so aus: {if $sCustomPage.id == 52} {block name='frontend\_index\_content\_right'} {include file="frontend/custom/was\_anderes.tpl"} {/block} {else} {\* Sidebar right \*} {block name='frontend\_index\_content\_right'} {include file="frontend/custom/right.tpl"} {/block} {/if}

1 „Gefällt mir“

Hallo Sebastian, hallo Holger, Erstmal ganz vielen Dank - ja auf jeden Fall sollten Blöcke bzw. deren Inhalte auf bestimmten Shopseiten angezeigt oder nicht angezeigt werden (einmal Block voll und einmal geleert) - etwas näherliegendes als besagtes Wiki habe ich nicht gefunden, deshalb hatte ich das als Basis genommen. Die Beispiele von Holger treffen es ziemlich genau - ich wage es kaum zu schreiben: es geht immer noch nicht :shock: Was mach ich denn nur falsch?! Kann ja nur an mir liegen und das hier ist so ziemlich unterster Level vom Schwierigkeitsgrad (…muss ich zum Arzt?!?) Nein im Ernst: Das Beispiel {if $sCustomPage.id == 52} {block name='frontend\_index\_content\_right'}{/block} {else} {\* Sidebar right \*} {block name='frontend\_index\_content\_right'} {include file="frontend/custom/right.tpl"} {/block} {/if} hätte doch auf jeden Fall funktionieren müssen?! - ist doch komplett vergleichbar weil Standard???!!!??? Nur um sicher zu gehen: kein {foreach from... {/foreach}? Ist das hier unnötig oder war der Teil falsch? Bitte noch einmal helfen…

Hallo, versucht das mal so in der Datei “deinTemplate/frontend/custom/index.tpl”: {extends file="../\_default/frontend/custom/index.tpl"} {block name='frontend\_index\_content\_right'} {if $sCustomPage.id == 3} {include file="frontend/custom/right.tpl"} {/if} {/block} oder vereinfacht mit einer ELSE: {extends file="../\_default/frontend/custom/index.tpl"} {block name='frontend\_index\_content\_right'} {if $sCustomPage.id == 3} Dies ist die Seite Impressum {else} Dies wird auf allen anderen Seiten gezeigt {/if} {/block}

1 „Gefällt mir“

Hallo Sebastian, wunderbar, beides funktioniert bestens! :thumbup: Dann kanns ja weitergehen - Klasse. …Und sogar noch den Arzt gespart! :wink: ganz viele Grüße rattatui

Hallo, ich wollte das eben mal per array laut dem Wiki probieren -aber irgendwie klappt das nicht so ganz. Die Zeile im Wiki $ausschlussID\_array = array ('Impressum' =\> '3', 'Datenschutz' =\> '9'); müsste doch mit {} versehen werden, oder? {$ausschlussID\_array = array ('Impressum' =\> '3', 'Datenschutz' =\> '9');} Dann gibts aber gleich eine Fehlermeldung: [quote]Syntax Error in template „/meinTemplate/frontend/custom/index.tpl“ on line 2 " {$ausschlussID_array = array (‚Impressum‘ => ‚3‘, ‚Datenschutz‘ => ‚9‘);}" - Unexpected „(“, expected one of: „identifier“ , INTEGER in Vendor/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 404[/quote] Wenn es z.B. aussehen sollte: {block name='frontend\_index\_content\_right'} {$ausschlussID\_array = array ('Impressum' =\> '3', 'Datenschutz' =\> '9');} {if $sCustomPage.id|in\_array($ausschlussID\_array)} {include file="frontend/custom/right.tpl"} {/if} {/block} …Lässt man die erste Zeile so wie im Wiki, gibts einen Fehler in Zeile 3. Grüße rattatui

Der Befehl ist Grundsätzlich erst einmal PHP. Das müsstest Du also dann in diesem Fall mit [php}…{/php} einfassen. Ich habe damit noch ein wenig rumexperimentiert, aber auch so meine Probleme mit dem in_array. Vielleicht ist es noch etwas einfacher, wenn Du einfach mit der IF Abfrage weitermachst, diese aber etwas erweiterst: {if $sCustomPage.id == 1 || $sCustomPage.id == 3 || $sCustomPage.id == 7} Sein {else} Nicht sein... {/if}

1 „Gefällt mir“

Hallo, danke sehr. Werde ich nachher mal probieren, dass ist auch ja auch erstmal völlig OK wenn das so geht (könnte dann evtl. noch ins Wiki). …aber ich dachte Ihr wolltet keine php-Aufrufe im Template? Meine ich mal irgendwo im Forum gelesen zu haben. Und wenn man PHP dann doch verwendet, müsste dazu nicht in der \engine\Enlight\Vendor\Smarty\libs\Smarty.class.php public $allow\_php\_tag = false; auf public $allow\_php\_tag = true; gestellt werden? Grüße rattatui