我有这段代码:
<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 %}
答案 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 %}