2016-09-25 3 views
1

Ich versuche, einige Snippets und Vorlagen auf einer Produktseite basierend auf dem Produkttyp einzufügen. Allerdings scheint die Flüssigkeit keine bedingten Schnipsel zu erzeugen.Einschließlich Snippets und Vorlagen mit Bedingungen in Liquid

Ein Beispiel dafür, was ich versuche zu erreichen:

{% if product.type == 'shoes' %} 
    {% include 'shoes-template' %} 
{% else %} 
    {% include 'other-template' %} 
{% endif %} 
+0

Da ist etwas. Bedingte 'include'-Arbeiten. Ich benutze es an vielen Orten. Können Sie anderen relevanten Code teilen? 'shoes-template' und' other-template' auch? – HymnZ

Antwort

2

Wenn Sie viele Produkttypen haben, anstatt mehrere der Verwendung if und else if, können Sie ein Array und einen contains verwenden. Sie können auch überprüfen, ob eine Vorlage vorhanden ist, indem Sie eine capture ausführen und nach der Zeichenfolge "Liquid Error" suchen.

{% assign types = "shoes, shirts, pants" | split:", " %} 
{% if types contains product.type %} 
    {% assign snip = product.type | append:"-template" %} 
{% else %} 
    {% assign snip = "other-template" %} 
{% endif %} 

{% capture snip_content %}{% include snip %}{% endcapture %} 
{% unless snip_content contains "Liquid error" %} 
    {% include snip %} 
{% endunless %} 
+0

Das ist eine runde Sache. Ich bin mir nicht sicher, ob es effizient ist. Auch "Schuhe", "Hemden" bedeutet nicht ein Array im flüssigen Code. – HymnZ

+1

Ich habe das Array repariert. Wenn Sie viele Produkttypen haben, ist dies effizienter als ein langes 'if, else if, else if, ...', solange Sie mit Ihren Schablonendateinamen konsistent sind. – jrbedard