我的网站上有一个页面,列出了我店里的所有供应商,如下所示:
<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个收集代码,用于&#39;库存&#39;并且&#39;售罄&#39;使用我们的过滤器菜单帮助过滤它们,并将其附加到网址,以便我们只显示库存商品中的客户。
答案 0 :(得分:1)
由于产品有供应商,而产品有库存,因此您可以检查一下。这会非常缓慢和令人讨厌但是嘿!这就是托管平台的用途,将疯狂的Liquid变成正确的HTML。
请注意 product.available
的LiquidReturns 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 。
答案 1 :(得分:0)
我能够通过这样编写来实现这一点:
{% 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
。与我的实际网站相比,我的开发网站肯定缺少收藏品和产品,所以这可能适用于网站较小的人。