Jekyll 无法在“nil”上使用concat`

Jekyll 无法在“nil”上使用concat`,jekyll,liquid,Jekyll,Liquid,我正在尝试为我的Jekyll站点构建一个相关的post include文件。该网站以会员、景点和公园(每一个都是收藏品)的概念为基础。每个帖子都有多对多的关系。我正在尝试建立一个包含每个页面属性(成员、景点和公园)的组合数组,在数组中循环,并查找带有相同数量标签的帖子 这很简单,但是我被一个部分卡住了,不是所有的帖子都有会员、景点和公园字段,所以他们返回nil,但是concat过滤器需要一个数组。我试图将变量默认为[],但它总是设置为nil。有什么想法吗 代码如下: <ul class="

我正在尝试为我的Jekyll站点构建一个相关的post include文件。该网站以会员、景点和公园(每一个都是收藏品)的概念为基础。每个帖子都有多对多的关系。我正在尝试建立一个包含每个页面属性(成员、景点和公园)的组合数组,在数组中循环,并查找带有相同数量标签的帖子

这很简单,但是我被一个部分卡住了,不是所有的帖子都有会员、景点和公园字段,所以他们返回
nil
,但是concat过滤器需要一个数组。我试图将变量默认为
[]
,但它总是设置为
nil
。有什么想法吗

代码如下:

<ul class="row">

    {% assign pageTags = [] %}{% if page.tags.first %}{% assign pageTags = page.tags %}{% endif %}
    {% assign pageAttractions = [] %}{% if page.attractions.first %}{% assign pageAttractions = page.attractions %}{% endif %}
    {% assign pageMembers = [] %}{% if page.members.first %}{% assign pageMembers = page.members %}{% endif %}
    {% assign pageParks = [] %}{% if page.parks.first %}{% assign pageParks = page.parks %}{% endif %}
    {% assign pageTagList = pageTags | concat: pageAttractions | concat: pageMembers | concat: pageParks %}

    {% for post in site.documents %}
        {% assign sameTagCount = 0 %}
        {% assign commonTags = '' %}
        {% assign postTags = [] %}{% if post.tags %}{% assign postTags = post.tags %}{% endif %}
        {% assign postAttractions = [] %}{% if post.attractions %}{% assign postAttractions = post.attractions %}{% endif %}
        {% assign postMembers = [] %}{% if post.members %}{% assign postMembers = post.members %}{% endif %}
        {% assign postParks = [] %}{% if post.parks %}{% assign postParks = post.parks %}{% endif %}

        {% assign postTageList =  postTags | concat: postAttractions | concat: postMembers | concat postParks %}

        {% if post.hidden == true %}
            {% break %}
        {% endif %}

        {% for tag in postTageList %}
            {% if post.url != page.url %}
                {% if pageTagList contains tag %}
                    {% assign sameTagCount = sameTagCount | plus: 1 %}
                    {% capture tagmarkup %} <span class="label label-default">{{ tag }}</span> {% endcapture %}
                    {% assign commonTags = commonTags | append: tagmarkup %}
                {% endif %}
            {% endif %}
        {% endfor %}

        {% if sameTagCount >= minCommonTags %}
                <li class="col-lg-4 col-md-12">
                    <div class="main-image">
                        <a href="{{ post.url }}" class="image" style="background-image: url('{{ post.image }}');"></a>
                    </div>
                    <h5>{{ post.categories | first }}</h5>
                    <h3><a href="{{ post.url }}">{{ post.title | replace: 'Review', '' }}</a></h3>
                    <p> 
                        {% if post.description %}
                            {{ post.description }}
                        {% else %}
                            {{ post.content | markdownify | strip_html | truncatewords: 20 }}
                        {% endif %}
                    </p>
                    <p>
                        <a href="{{ post.url }}" class="large">Read Article &rarr;</a>
                    </p>
                </li>
            {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %}
            {% if maxRelatedCounter >= maxRelated %}
                {% break %}
            {% endif %}
        {% endif %}
    {% endfor %}
    </ul>
    {%assign pageTags=[]%}{%if page.tags.first%}{%assign pageTags=page.tags%}{%endif%} {%assign pageAttractions=[]%}{%if page.attractions.first%}{%assign pageAttractions=page.attractions%}{%endif%} {%assign pageMembers=[]%}{%if page.members.first%}{%assign pageMembers=page.members%}{%endif%} {%assign pageParks=[]%}{%if page.parks.first%}{%assign pageParks=page.parks%}{%endif%} {%assign pageTagList=pageTags | concat:pageAttractions | concat:pageMembers | concat:pageParks%} {site.documents%中的post为%s} {%assign sameTagCount=0%} {%assign commonTags=''%} {%assign postTags=[]%}{%if post.tags%}{%assign postTags=post.tags%}{%endif%} {%assign postAttractions=[]%}{%if post.attractions%}{%assign postAttractions=post.attractions%}{%endif%} {%assign postMembers=[]%}{%if post.members%}{%assign postMembers=post.members%}{%endif%} {%assign postParks=[]%}{%if post.parks%}{%assign postParks=post.parks%}{%endif%} {%assign postTageList=postTags | concat:posttractions | concat:postMembers | concat postParks%} {%if post.hidden==true%} {%break%} {%endif%} {postTageList%中标记的%s} {%if post.url!=page.url%} {%如果pageTagList包含标记%} {%assign sameTagCount=sameTagCount | plus:1%} {%capture tagmarkup%}{{tag}{%endcapture%} {%assign commonTags=commonTags | append:tagmarkup%} {%endif%} {%endif%} {%endfor%} {%if sameTagCount>=minCommonTags%}
  • {{post.categories | first}} {%if post.description%} {{post.description}} {%else%} {{post.content | markdownify | strip | html | truncatewords:20} {%endif%}

  • {%分配maxRelatedCounter=maxRelatedCounter |加:1%} {%如果maxRelatedCounter>=maxRelated%} {%break%} {%endif%} {%endif%} {%endfor%}

您可以在这里看到repo:

您应该看看compact,它从数组中删除任何nil值

这是一个关于shopify的文档

液体文档中的示例

输入:

{% assign site_categories = site.pages | map: "category" %}

{% for category in site_categories %}
- {{ category }}
{% endfor %}
{% assign site_categories = site.pages | map: "category" | compact %}

{% for category in site_categories %}
- {{ category }}
{% endfor %}
输出:

- business
- celebrities
-
- lifestyle
- sports
-
- technology
- business
- celebrities
- lifestyle
- sports
- technology

输入:

{% assign site_categories = site.pages | map: "category" %}

{% for category in site_categories %}
- {{ category }}
{% endfor %}
{% assign site_categories = site.pages | map: "category" | compact %}

{% for category in site_categories %}
- {{ category }}
{% endfor %}
输出:

- business
- celebrities
-
- lifestyle
- sports
-
- technology
- business
- celebrities
- lifestyle
- sports
- technology
从:

不能仅使用液体初始化数组

但是,可以使用过滤器将字符串拆分为子字符串数组


仅供参考,将空字符串拆分为空字符串:
{%assign pageMembers=”“|split:%}