Jekyll中的动态链接列表

时间:2017-01-25 18:05:11

标签: jekyll liquid

我尝试使用帖子标记并生成以逗号分隔的链接列表,但似乎无法弄清楚如何完成它。以下是我所拥有的,也许我没有正确使用Jekyll的阵列?

for (email of emails) {
    console.log (email);
}

2 个答案:

答案 0 :(得分:1)

  • 更新

迭代for循环,如果它不是最后一次迭代则生成一个逗号,并捕获输出:

{% capture tagscommas %}
{% for tag in page.tags %}
    <a href="/tag/{{tag}}">{{tag}}</a>
    {% unless forloop.last %},{% endunless %}
{% endfor %}
{% endcapture %}

{{tagscommas}}

如果你想避免带换行符的输出,只需将所有代码放在一行中,直到jekyll使用不生成空行的新{%-标记。

如果您不介意在变量中输出,只需使用内部for循环在遍历标记数组时直接显示链接。

答案 1 :(得分:0)

编辑回答:

这里有两个问题:

在jekyll

中生成一个空数组

{% assign tag_array = [] %}什么也没做。

{{ tag_array | inspect }}返回nil{% assign tag_array = tag_array | push: 'anything' %}中的推送(如nil)始终返回nil

为了得到一个空数组,你可以:

  1. _config.yml 中设置empty_array: [],并按照以下方式使用它:{% assign tag_array = site.empty_array %}
    1. 动态创建数组&#34;&#34;用:{% assign tag_array = "" | split: "/" %}
    2. {{ tag_array | inspect }}现在返回[]

      jekyll中的字符串连接

      {% assign link = <a href="/tag/{{tag}}">{{tag}}</a> %}无法使用液体。 {{ link | inspect }}会返回nil

      如果要连接字符串,可以使用:

      1. prependappend liquid filter,例如{% assign link = '<a href="/tag/' | append: tag | append: '">' | append: tag | append: '</a>' %}

      2. replace过滤器如下: {% assign link_template = '<a href="/tag/%%placeholder%%">%%placeholder%%</a>' %} {% assign link = link_template | replace: "%%placeholder%%", tag %}

      3. capture标记如下:{% capture link %}<a href="/tag/{{ tag }}">{{ tag }}</a>{% endcapture %}

      4. 这现在有效:

        {% assign tag_array = "" | split: "/" %}
        {% for tag in post.tags %}
          {% capture link %}<a href="/tag/{{ tag }}">{{ tag }}</a>{% endcapture %}
          {% assign tag_array = tag_array | push: link %}
        {% endfor %}
        {{ tag_array | join: ', ' }}