Smarty und IF-Konstrukte zum verzweifeln

Hallo zusammen, eigentlich bin ich nicht soo der Anfänger in Programmierung, aber Smarty bringt mich zur Verzweiflung mit den einfachsten IF-Konstrukten. Vielleicht sieht einer den Fehler auf anhieb. Hintergrund - Ich will für Landingpages/Aktionen (Campaigns) eigene Keywords und Descriptions einpflegen. Geht im Moment nicht ohne weiteres bei Shopware, also habe ich mir ein paar Textbausteine definiert und für unterschiedliche Landingpages je einen Keyword und einen Description-Baustein erstellt. Nun habe ich die index/header.tpl wie folgt erweitert: {if $sCampaign.id == 1} {block name='frontend\_index\_header\_meta\_keywords'}{s name='IndexMetaKeywordsLP1' namespace='frontend/xxx'}{/s}{/block} {block name='frontend\_index\_header\_meta\_description'}{s name='IndexMetaDescriptionLP1' namespace='frontend/xxx'}{/s}{/block} {/if} {if $sCampaign.id == 2} {block name='frontend\_index\_header\_meta\_keywords'}{s name='IndexMetaKeywordsLP2' namespace='frontend/xxx'}{/s}{/block} {block name='frontend\_index\_header\_meta\_description'}{s name='IndexMetaDescriptionLP2' namespace='frontend/xxx'}{/s}{/block} {/if} Aus irgendeinem Grund wird IMMER der Inhalt des ersten Blocks ausgegeben, selbst wenn in der “id” der tatsächliche Wert 1 oder 2 steht. Woran kann das liegen? Ich habe es statt der id auch schon mit description und statt == mit eq probiert - immer dasselbe Ergebnis. Es grüßt ratlos, Marco

[quote=“kingcom”]Aus irgendeinem Grund wird IMMER der Inhalt des ersten Blocks ausgegeben, selbst wenn in der “id” der tatsächliche Wert 1 oder 2 steht. Woran kann das liegen? Ich habe es statt der id auch schon mit description und statt == mit eq probiert - immer dasselbe Ergebnis. [/quote] Was genau steht denn in “$sCampaign.id”? (String, Zahl) Ist “$sCampaign” ein Array?

Du könntest es mal zwischen den beiden campains mit {elseif} Probieren.

Das hat glaub ich mit den Blöcken zu tun, ich meine ich hatte das Problem auch schon. Versuch mal das: {block name='frontend\_index\_header\_meta\_keywords'} {if $sCampaign.id == 1} {s name='IndexMetaKeywordsLP1' namespace='frontend/xxx'}{/s} {/if} {if $sCampaign.id == 2} {s name='IndexMetaKeywordsLP2' namespace='frontend/xxx'}{/s} {/if} {/block} {block name='frontend\_index\_header\_meta\_description'} {if $sCampaign.id == 1} {s name='IndexMetaDescriptionLP1' namespace='frontend/xxx'} {/if} {if $sCampaign.id == 2} {s name='IndexMetaDescriptionLP2' namespace='frontend/xxx'} {/if} {/block}

1 „Gefällt mir“

@taaucher: daran lags leider nicht @ottscho: VOLLTREFFER ! Mit nicht logisch nachvollziehbar, aber es liegt tatsächlich an den Blöcken. Ironischer Weise hatte ich sogar deine Lösung zu Beginn am Laufen, hatte diese dann jedoch umgestellt, weil sich durch die Formatierung des Codes zu Beginn des Meta-Tags immer mindestens ein Zeilenumbruch innerhalb des Tags ergibt. Frage: ist das SEO-Technisch kritisch? ansonsten müsste ich alles komplett in EINE ZEILE schreiben. Das wäre bei 10 ELSE-Konstrukten schon arg doof. Gruß, Marco

[quote=„kingcom“]Frage: ist das SEO-Technisch kritisch?[/quote] Das meinst Du jetzt hoffentlich nicht ernst??? Ein Zeilenumbruch in einer HTML-Seite SEO-Relevant? Man kann’s aber wirklich übertreiben!

Die Frage WAR ernst gemeint, da der Zeilenumbruch direkt IN einem Meta-Tag gleich zu beginn stattfindet und ich mit nicht sicher bin/war, ob das Suchmaschinen übel nehmen.