显示jekyll中具有标题的数组项

时间:2017-10-29 14:31:24

标签: ruby jekyll

我有这段代码:

<nav>
    <ul>
    {% for page in site.pages %}
      {% if page.title %}
        <li><a href="{{ page.url | prepend: site.baseurl | prepend: site.url }}">{{ page.title }}</a></li>
      {% endif %}
    {% endfor %}
    </ul>
</nav>

我还没有任何带有标题的页面,但我将来可能会有tidy-html5,我正在使用缩进输出html,发出ul为空的警告。没有标题检查它输出生成的页面标签或全局页面,如站点地图或rss feed。

有没有办法首先过滤数组,然后如果数组为空则不显示nav,如:

{% pages = [for page in pages if page.title] %}

{% if pages.length %}
  <nav>
    <ul>
    ....
    </ul>
  </nav>
{% endif %}

1 个答案:

答案 0 :(得分:1)

仅获取带标题的网页:

pages = site.pages.select{ |p| p.title }

所以你的代码看起来像是:

{% assign pages = site.pages.select{ |p| p.title } %}

{% if pages %}
  <ul>
    {% for page in pages %}
      <li>...</li>
    {% endfor %}
  </ul>
{% endif %}