Shopify 供应商列表页面-仅列出有库存项目的供应商
我在我的网站上有一个页面,上面列出了我商店中的所有供应商,如下所示:Shopify 供应商列表页面-仅列出有库存项目的供应商,shopify,liquid,Shopify,Liquid,我在我的网站上有一个页面,上面列出了我商店中的所有供应商,如下所示: <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 {% endca
<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>
其中一些供应商目前没有任何库存,所以让他们出现在这里是没有意义的。是否可以只显示其集合中有库存的供应商
目前,我的商店中有两个“库存”和“售罄”收集标签,用于通过我们的筛选菜单对它们进行筛选,并将其附加到url中,以便我们只向客户显示库存商品。由于产品有供应商,且产品有库存,您可以通过这种方式进行检查。这将是疯狂的缓慢和令人讨厌的,但嘿!这就是托管平台的作用,将疯狂的液体转换成正确的紧凑HTML 注意产品可用的液体 因此,当您循环浏览供应商列表时,请循环浏览所有产品,检查产品供应商是否匹配以及可用性。如果他们不适合你。。。跳过供应商 看看这有多慢会很有趣。。。但你永远不会知道,直到你尝试
另一种可能更聪明的方法是迭代所有库存产品一次。用它来建立您的供应商列表,而不是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
然而,它只在我测试它的开发站点上起作用,当我把它推到生产环境时,我得到了一个错误:超过了内存限制。与我的live站点相比,我的dev站点肯定缺少集合和产品,因此这可能适用于拥有较小站点的用户。我似乎无法按照您建议的最后一个想法,以他们的第一个字母来组织他们,如果我的这家商店有10000多种产品要销售?你说得对。排序不是该算法的优点。拥有10000种产品也肯定会让你放慢速度……你可能想为此投资一个外部流程。让你的信息在Shopify外保持最新,并在需要时调用它,这样它总是很快。大卫,请查看我的答案。它有点工作,但无法处理我的现场规模哈。。。对一切都是有限度的。。。做小事容易。。要适应现实并不那么容易
{% 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