如何使用 jekyll 从主页实现“加载更多帖子”?

Man*_*hew 4 html css liquid jekyll

我最初的想法是..这可以是我的主页代码(它被称为液体吗?)..

{% for post in site.posts limit:4 %}
Run Code Online (Sandbox Code Playgroud)

之后,我想放置一个链接到 page2 的“更多帖子”按钮,并在抵消前 4 个的情况下执行相同的限制。像这样:

{% for post in site.posts offset:4 limit:4 %}
Run Code Online (Sandbox Code Playgroud)

从那里“更多帖子”按钮链接到第 3 页,限制为 4,偏移量为 8,依此类推...

我的问题是: 1> 在 Jekyll 中是否有更好的方法来做到这一点?如果没有, 2> 我应该创建多少页?3> 我可以创建页面而不复制整个内容只为 1 行更改吗?4> 我可以设置页面在帖子增加时自动创建吗?如何?

小智 5

为什么不使用 Jekyll 自己的分页功能呢?

只需将这两行放在_config.yml文件中即可。

paginate:    4
paginate_path: "page:num"
Run Code Online (Sandbox Code Playgroud)

paginate_path 允许您指定要分页的页面。因此,如果您有一个名为 blog 的页面,其中包含您的所有文章,也许您希望将其分页。为此,设置paginate_path: "blog/page:num". 对于默认主页分页,请将其保留为"page:num". 我编写了一段特定的代码来帮助进行分页导航。要按照您在 中指定的方式在页面中设置分页paginate_path,您必须指定如下内容:

{% for post in paginator.posts %} 
{{ post.title }}
{{ post.content | strip_html | truncatewords:40 }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这将显示第一个分页页面。但是您需要一个导航栏,即<--newer posts...older posts--> 按钮。我专门为此写了一个液体表达式。所以在前面的代码块之后,把这些代码放在分页导航中。

{% if paginator.total_pages != 1 %}  
    <div class="row text-center text-caps">
        <div class="col-md-8 col-md-offset-2">
            <nav class="pagination" role="pagination">

<span class="page-number">Page {{ paginator.page }} of {{ paginator.total_pages }}</span>
{% if site.paginate_path != 'page:num'%}
{% assign paginate_url = site.paginate_path | remove:'/page:num' %}
{% if paginator.previous_page %}
  {% if paginator.previous_page == 1 %}
  <a class="newer-posts" href="{{ site.url }}/{{ paginate_url }}/" class="btn" title="Newer Posts">&larr; Newer Posts</a>
  {% else %}
 <a class="newer-posts" href="{{ site.url }}/{{ paginate_url }}/page{{ paginator.previous_page }}/" class="btn" title="Newer Posts">&larr; Newer Posts</a>
  {% endif %}
{% endif %}
{% if paginator.next_page %} 
<a class="older-posts" href="{{ site.url }}/{{ paginate_url }}/page{{ paginator.next_page }}/" class="btn" title="Older Posts">Older Posts &rarr;</a>
{% endif %} 
{% else %}
{% if paginator.previous_page %}
  {% if paginator.previous_page == 1 %}
  <a class="newer-posts" href="{{ site.url }}/" class="btn" title="Newer Posts">&larr; Newer Posts</a>
  {% else %}
 <a class="newer-posts" href="{{ site.url }}/page{{ paginator.previous_page }}/" class="btn" title="Newer Posts">&larr; Newer Posts</a>
  {% endif %}
{% endif %}
{% if paginator.next_page %} 
<a class="older-posts" href="{{ site.url }}/page{{ paginator.next_page }}/" class="btn" title="Older Posts">Older Posts &rarr;</a>
            </nav>
        </div>
    </div>
{% endif %}
{% endif %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

此代码将为分页帖子生成一个导航菜单,它是智能的并相应地隐藏按钮。例如,如果您总共有 11 个帖子,并且您在每个分页索引中选择了 4 页,则第一页将包含 4 个帖子,第二个也是 4 个,第三个 3 个。第一页只需要显示Older posts -->链接,第二页将显示两个<--Newer posts...Older posts-->链接,第三页将只显示<--Newer posts链接。但是如果您的帖子总数少于 4,此代码将隐藏您的分页导航,直到帖子编号大于 4。