2012-11-01 93 views
1

我正在循环访问FrontPage产品并生成表格。在最后一行中,我需要在第一个表格单元格中放置一些静态内容。我已经能够做到这一点,但出于某种原因,循环停止后,它会这样做。有谁知道为什么?Shopify循环提前退出

{% tablerow product in collections.frontpage.products cols: 2 %} 
    {% if tablerowloop.col_first and tablerowloop.last %} 
     <img src="{{'box.png' | asset_url}}"> 
    {% else %} 
     <div class='featured-product'> 
     <img src="{{ product.images[1] | product_img_url: 'medium' }}"> 
     <p>{{ product.title }}</p> 
     </div> 
    {% endif %} 
    {% endtablerow %} 

这里的网站:https://hodkiewicz-zieme-and-hirthe180.myshopify.com/

回答

2

tablerowloop.last只对表的最后一个单元格(即集合的最后一个产品)返回true,而不是最后一排。相反,您需要检查集合末尾的cols内的索引,以便它在第一列时必须是最后一行。

{% tablerow product in collections.frontpage.products cols: 2 %} 
    {% assign x = tablerowloop.length | minus:2 %} 
    {% if tablerowloop.col_first and tablerowloop.index > x %} 
    <img src="{{'box.png' | asset_url}}"> 
    {% else %} 
    <div class='featured-product'> 
     <img src="{{ product.images[1] | product_img_url: 'medium' }}"> 
     <p>{{ product.title }}</p> 
    </div> 
    {% endif %} 
{% endtablerow %} 
+0

好的,我明白了第一部分,tablerowloop.last只返回表格的最后一个单元格。但是,这对我来说没有意义,因为它会正确输出静态内容,然后环路过早死亡。 –

+0

您的首页集合只有5个产品,因此两列表最后一行只有一个产品。由于if条件匹配,该产品将被box.png资产图像替代。它不会过早死亡,但也许您希望在box.png图像后面显示产品,在这种情况下,您可以将else块移出if条件。 –