我的网站上有一个页面,列出了我店里的所有供应商,如下所示:
<div class="vendor-list" id="designers-a-to-z">
<ul>
{% assign current = "" %}
{% capture alphabet %}
-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
{% endcapture %}
{% assign letters = alphabet | split: '-' %}
{% assign its_a_letter = false %}
{% for vendor in shop.vendors %}
{% assign vendor_first_letter = vendor | strip | upcase | slice : 0 %}
{% for letter in letters %}
{% if vendor_first_letter == letter %}
{% assign its_a_letter = true %}
{% break %}
{% endif %}
{% endfor %}
{% if its_a_letter %}
{% unless vendor_first_letter == current %}
<h3><span class="anchor" id="designers-{{ vendor_first_letter }}"></span>{{ vendor_first_letter }}</h3>
{% endunless %}
<li class="vendor-list-item">
<a href="/collections/{{ vendor | handleize }}/in-stock">{{ vendor }}</a>
</li>
{% else %}
{% assign vendor_first_letter = "#" %}
{% unless vendor_first_letter == current %}
<h3><span class="anchor" id="designers-{{ vendor_first_letter }}"></span>{{ vendor_first_letter }}</h3>
{% endunless %}
<li class="vendor-list-item">
<a href="/collections/{{ vendor | handleize }}/in-stock">{{ vendor }}</a>
</li>
{% endif %}
{% assign current = vendor_first_letter %}
{% endfor %}
</ul>
</div>
其中一些供应商目前没有任何库存,因此将它们显示在此处毫无意义。是否可以仅显示其集合中有库存的供应商?
我目前在我的商店有 2 个集合标签“库存”和“售罄”,以帮助过滤它们与我们的过滤器菜单,并附加到 URL,所以我们只显示客户的库存项目。
由于一个产品有一个供应商,一个产品有库存,你可以这样检查。这将是疯狂的缓慢和令人讨厌的,但是嘿!这就是托管平台的目的,将疯狂的 Liquid 变成正确的紧密 HTML。
注意product.available的液体
Returns true if a product is available for purchase. Returns false if all of the products variants' inventory_quantity values are zero or less, and their inventory_policy is not set to "Allow users to purchase this item, even if it is no longer in stock."
因此,当您遍历供应商列表时,请遍历所有产品,检查产品供应商是否匹配以及可用性。如果它们不适合您...跳过供应商。
会很有趣,看看这是多么缓慢...但你永远不知道,直到你尝试...
另一种可能更聪明的方法是迭代一次您所有的库存产品。从中构建您的供应商列表,而不是shop.vendors。
我能够通过这样写得到这个工作:
{% for vendor in shop.vendors %}
{% for collection in collections %}
{% if collection.title == vendor %}
{% if collection.all_tags contains 'in-stock' %}
then the conditions for checking the first letter and displaying the vendor, etc. nothing new
然而,它只在我的开发网站上工作,我正在测试它,当我把它推向生产时,我得到了liquid error: memory limits exceeded
。与我的实时网站相比,我的开发网站肯定缺乏收藏和产品,所以这可能适用于拥有较小网站的人。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(51条)