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