首页 > 解决方案 > 比较液体中的两个阵列 (Shopify)

问题描述

不是开发人员,只是想一起破解一些东西。在我们的 Shopify 站点中,有一些逻辑可以使用 order.id 标记特定博客中的新博客文章。所以这个博客的帖子每个帖子都有一个 order.id。

在客户记录(帐户)上,我制作了一个网格,我想在其中显示 article.tags 与 customer.orders 匹配的所有文章。

我为所有客户的订单 ID 创建了一个数组,并尝试将此数组与 article.tags 数组进行比较,并仅显示两个数组中匹配的文章。

请帮忙!

这是在customers/account.liquid上:

     <div class="table-wrap">
        <table class="full table--responsive">
          <thead>
            <tr>
              <th>POST NAME</th>
            </tr>
          </thead>
          <tbody>

             {% assign myorders = '' %}
        {% for order in customer.orders  %}
           {% capture myorders %}
              {{ myorders }} {{ order.id }}
           {% endcapture %}
            {% endfor %}

             {% for article in blogs.my-posts.articles  %}
         {% if article.tags contains myorders %}

                   <!--SHOW THE MATCHING ARTICLES HERE-->

                   <tr>
                     <td class="underline"><strong><a href="{{ article.url }}">{{ article.title | capitalize }}</a></strong></td>
                   <tr>

                 {% else %}

                     You have no posts.

                 {% endif %}
         {% endfor %}
          </tbody>
        </table>              
      </div>

标签: shopifyliquid

解决方案


一样东西。使用 capture 会不断地覆盖你上次的捕获,所以把它放在 for 循环中是有问题的。您的结果只会是客户订单中的最后一个订单。

因此,首先,您可能希望构建一个将不断增长以包含订单 ID 的字符串。一旦你有了那个字符串,你也许可以使用它。然后,您将浏览文章。请注意,最好在数组中处理标签。因此,您将用逗号分割该标签字符串,并且对于您要循环的数组中的每个结果标签,您想查看该标签是否在您之前构建的订单 ID 字符串中。

这些都不是太难,但如何建立成功并不明显。我的建议是在一小段代码中确定每个需求,然后将代码转储到 Shopify 呈现的页面的源代码中。使用查看源查找结果,并检查它们是否正确。如果你只是像你现在的那样制作一个完整的食谱,并且它在任何时候都无法生产,就像​​它一样,你不知道错误在哪里。通常很容易在课程中使用注释,然后按 ctrl+f 来找到线索,比如“testeefizzle”这个词:

<!-- testeefizzle {{ dump crap here to see it }} -->

一旦你在一小块上获得荣耀,建立在它之上,用更多的代码。


推荐阅读