在 Jekyll 中,如何显示“上周的帖子”

Dyl*_*ett 3 liquid jekyll

我不确定是否能获得流畅的语法来帮助我提取在构建日期同一周发布的帖子。那可能吗?

有更简单的方法来获取最近帖子的列表,但这种方法对我的项目很有用。我尝试过通过搜索找到的一些东西,但还没有找到乐趣。

Joo*_*nas 6

\n

在再次考虑这个答案之前,请考虑这样一个事实:至少这个答案的第一部分实际上不起作用,因为 jekyll 是一个静态站点生成器,因此显示的帖子是相对于上次构建日期的,可能与当前日期不同。

\n

答案的第二部分更深入地探讨了实际生成“最近帖子”列表,而不是“上周帖子”的想法。

\n
\n

基本上用文字解释代码:首先我们得到current yearcurrent week,然后我们循环遍历每个帖子并将current yearcurrent week与帖子的week和进行比较。year如果它们匹配,则会显示该帖子。

\n

显示 \xe2\x80\x94 构建周:

\n

在此输入图像描述

\n
{% assign currentYear = site.time | date: "%Y" %}\n{% assign currentWeek = site.time | date: "%W" %}\n\n{%- for post in site.posts -%}\n    \n    {% assign postYear = post.date | date: "%Y" %}\n    {% assign postWeek = post.date | date: "%W" %}\n    \n    {%- if currentYear == postYear and currentWeek == postWeek -%}\n        <a href="{{ post.url }}">{{ post.title }}</a>\n    {%- endif -%}\n    \n{%- endfor -%}\n
Run Code Online (Sandbox Code Playgroud)\n

显示 \xe2\x80\x94 构建日和 6 天前:

\n

在此输入图像描述

\n
{% assign currentYear = site.time | date: "%Y" %}\n{% assign currentDay = site.time | date: "%j" | plus: 0 %}\n{% assign currentDay_minus_week = site.time | date: "%j" | minus: 7  %}\n\n{%- for post in site.posts -%}\n    \n    {% assign postYear = post.date | date: "%Y" %}\n    {% assign postDay = post.date | date: "%j" | plus: 0 %}\n    \n    {%- if currentYear == postYear and postDay > currentDay_minus_week and postDay <= currentDay  -%}\n        <a href="{{ post.url }}">{{ post.title }}</a>\n    {%- endif -%}\n    \n{%- endfor -%}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

为了挽救这个答案,尽管它已经有点偏离了方向......我用类似的逻辑编写了这段代码,但这次它获取了最新帖子的yearweek并显示了当年发布的所有帖子星期。

\n

即使您继续构建网站而不发布新帖子,这在显示某些内容方面也是无懈可击的。但它也只显示一个帖子,如果你的最后一个帖子是该周发布的唯一帖子,这可能有点愚蠢......

\n

另一方面,显示“最近帖子”的最简单方法可能只是使用并将limit最近的帖子限制为最近 5 个帖子或类似的内容:{%- for post in site.posts limit: 5 -%}

\n

显示 \xe2\x80\x94 最新帖子周:

\n

在此输入图像描述

\n
{% assign latestPost_year = site.posts.first.date | date: "%Y"  %}\n{% assign latestPost_week = site.posts.first.date | date: "%W"  %}\n\n{%- for post in site.posts -%}\n    \n    {% assign postYear = post.date | date: "%Y" %}\n    {% assign postWeek = post.date | date: "%W" %}\n    \n    {%- if latestPost_year == postYear and latestPost_week == postWeek -%}\n        <a href="{{ post.url }}">{{ post.title }}</a>\n    {%- endif -%}\n    \n{%- endfor -%}\n
Run Code Online (Sandbox Code Playgroud)\n

显示 \xe2\x80\x94 最新发布日和 6 天前

\n

在此输入图像描述

\n
{% assign latestPost_year = site.posts.first.date | date: "%Y"  %}\n{% assign latestPost_day = site.posts.first.date | date: "%j" | plus: 0  %}\n{% assign latestPost_day_minus_week = site.posts.first.date | date: "%j" | minus: 7  %}\n\n{%- for post in site.posts -%}\n    \n    {% assign postYear = post.date | date: "%Y" %}\n    {% assign postDay = post.date | date: "%j" | plus: 0 %}\n    \n    {%- if latestPost_year == postYear and postDay > latestPost_day_minus_week and postDay <= latestPost_day  -%}\n        <a href="{{ post.url }}">{{ post.title }}</a>\n    {%- endif -%}\n    \n{%- endfor -%}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 这需要 Jekyll 每天构建。这不是一个非常现实的场景。 (2认同)
  • 我觉得这个答案还是有一定价值的。它确实有点用...取决于您想要从这个帖子列表中获得什么以及您如何命名它。— 如果您上次更新了网站,比如一年前,则此帖子列表将包含相对于上次更新(构建日期)的“最近帖子”。话又说回来,如果您继续对网站进行类似的风格更改并在不发布任何新帖子的情况下构建它,它可能会失败...... (2认同)