2012-01-23 23 views
32

के लिए में अजीब आइटम अगर मैं तरल (Jekyll का उपयोग) में पाश के लिए एक है, मैं भी (या विषम) आइटम केवल कैसे लक्षित कर सकते हैं? मैंने कोशिश की है:तरल टेम्पलेट्स: यहां तक ​​कि/पाश

{% for item in site.posts %} 
    {% if forloop.index % 2 == 1 %} 

लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। मैं भी कोशिश की है:

(forloop.index % 2) == 1 

और:

forloop.index - (forloop.index/2 * 2) == 1 

उत्तर

52

मुझे लगता है कि आप इस के लिए चक्र टैग का उपयोग करना चाहते हैं। उदाहरण के लिए:

{% for item in site.posts %} 
    {% capture thecycle %}{% cycle 'odd', 'even' %}{% endcapture %} 
    {% if thecycle == 'odd' %} 
    <div>echo something</div> 
    {% endif %} 
{% endfor %} 

आप Liquid for Designers में उस पर और अधिक जानकारी प्राप्त कर सकते हैं, हालांकि उदाहरण वहाँ विशेष रूप से उपयोगी नहीं है:

{% for post in site.categories.articles %} 
    <article class="{% cycle 'odd', 'even' %}"></article> 
{% endfor %} 

आप प्रत्येक चक्र के लिए अलग HTML मार्कअप चाहते हैं। यह Shopify support thread भी मदद करनी चाहिए।

+1

यह नहीं वास्तव में क्या मैं खोज रहा था था, लेकिन लिंक आप पाया मुझे असली जवाब मिल गया। मैंने अपना समाधान शामिल करने के लिए अपना जवाब संपादित किया। धन्यवाद! –

+0

इसके अलावा, यदि आपका समाधान केवल सीएसएस का उपयोग करना चाहता था, तो आपका समाधान काम करेगा, लेकिन मैं 'साइट.posts' को दो कॉलम में विभाजित करना चाहता था, इसलिए केवल कक्षा स्विचिंग मेरे लिए पर्याप्त नहीं थी। –

+0

हाँ, मुझे यकीन नहीं था कि आप सीएसएस का उपयोग करना चाहते हैं या नहीं। हालांकि मदद करने के लिए खुशी हुई! –

10

क्या Ales Lande's answer में Shopify support thread कहते हैं के विपरीत, वहाँ है तरल में एक modulo समारोह - the modulo filter के रूप में।

इसके साथ, आप ऐसा कर सकते हैं:

{% for item in site.posts %} 
    {% assign mod = forloop.index | modulo: 2 %} 
    {% if mod == 0 %} 
     <!-- even --> 
    {% else %} 
     <!-- odd --> 
    {% endif %} 
{% endfor %} 
+1

मुझे इस समाधान को 'चक्र' का उपयोग करके बेहतर पसंद है; एक स्ट्रिंग का उपयोग कर गणितीय समस्या को हल करना लगता है ... विषम! –

संबंधित मुद्दे