# Smarty und IF-Konstrukte zum verzweifeln

**URL:** <https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319>\
**Category:** Shopware 3.5\
**Tags:** templates--design\
**Created:** [29. März 2011 um 23:09 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319 "2011-03-29T23:09:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![kingcom](https://avatars.discourse-cdn.com/v4/letter/k/b77776/32.png) [@kingcom](https://forum.shopware.com/u/kingcom)\
**Post date:** [29. März 2011 um 23:09 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/1 "2011-03-29T23:09:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![avenger](https://avatars.discourse-cdn.com/v4/letter/a/9de0a6/32.png) [@avenger](https://forum.shopware.com/u/avenger)\
**Post date:** [30. März 2011 um 06:13 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/2 "2011-03-30T06:13:31Z")

</div>

[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?

---

<div class="post-metadata">

**Author:** ![taaucher](https://avatars.discourse-cdn.com/v4/letter/t/ac8455/32.png) [@taaucher](https://forum.shopware.com/u/taaucher)\
**Post date:** [30. März 2011 um 08:08 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/3 "2011-03-30T08:08:57Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [30. März 2011 um 08:29 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/4 "2011-03-30T08:29:07Z")

</div>

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} `

---

<div class="post-metadata">

**Author:** ![kingcom](https://avatars.discourse-cdn.com/v4/letter/k/b77776/32.png) [@kingcom](https://forum.shopware.com/u/kingcom)\
**Post date:** [30. März 2011 um 08:59 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/5 "2011-03-30T08:59:55Z")

</div>

@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

---

<div class="post-metadata">

**Author:** ![avenger](https://avatars.discourse-cdn.com/v4/letter/a/9de0a6/32.png) [@avenger](https://forum.shopware.com/u/avenger)\
**Post date:** [30. März 2011 um 09:03 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/6 "2011-03-30T09:03:11Z")

</div>

[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!

---

<div class="post-metadata">

**Author:** ![kingcom](https://avatars.discourse-cdn.com/v4/letter/k/b77776/32.png) [@kingcom](https://forum.shopware.com/u/kingcom)\
**Post date:** [30. März 2011 um 09:15 UTC](https://forum.shopware.com/t/smarty-und-if-konstrukte-zum-verzweifeln/2319/7 "2011-03-30T09:15:36Z")

</div>

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.
