【发布时间】:2017-02-05 02:44:02
【问题描述】:
我使用以下解决方案在 Jekyll 3.2.1 中创建了一个虚拟的“相关帖子”:
{% for post in site.posts limit: 4 %}
{% if page.author == post.author and page.title != post.title %}
<div class="post-stream-item">
<a href="{{ post.url | prepend: site.baseurl }}" title="{{ post.title }}"><div class="post-stream-content">
<img src="{{ post.thumbnail }}" width="80" height="auto" /><span class="post-stream-item-meta"><h3>{{ post.title }}</h3><p>{{ post.author }} on {{ post.date | date: "%b %-d, %Y" }} • {% assign words = post.content | number_of_words %}
{% if words <= 160 %}
1 min
{% else %}
{{ words | plus: 159 | divided_by:160 }} mins
{% endif %} read</p></span></div></a></div>{% if forloop.last == false %}<hr>{% endif %}
{% endif %}
{% endfor %}
- for 循环遍历站点中的帖子列表并给出 这是一个限制
- 如果当前帖子的作者与文章的作者相同 迭代帖子,但是标题不一样,那就填 神社绑定。
问题在于 {% if forloop.last == false %}<hr>{% endif %} 部分,因为如果forloop中有更多可迭代(post),它将显示 <hr> 标记,即使它是向用户显示的最后一个元素。
是否有任何属性可以引用列表的倒数第二个元素或任何更好的解决方案?
【问题讨论】:
-
您是否考虑过针对 forloop 长度减一来测试 forloop.index?
-
这可能是一个解决方案,@JoostS,我会尝试和他们一起玩!
-
@JoostS 这不会真正起作用,因为您不知道循环的哪个索引将是执行
if语句的最后一次迭代。 -
大卫在下面的回答让我意识到您的代码存在逻辑错误:请注意您将帖子限制为 4,然后循环浏览它们。如果您想查找的帖子都不在整个网站的前 4 个帖子中怎么办?
-
@KevinWorkman 你是对的,你们帮了我很多,它教会了我更多地思考我的情况并提出更一般的问题,而不是基于情况的问题。感谢您的宝贵时间!
标签: arrays if-statement for-loop jekyll liquid