Jekyll分页博客作为子目录

3

我正在使用Jekyll搭建一个静态网站,并希望将博客生成为子目录/子文件夹:

http://example.com/blog

在运行jekyll之前的目录结构中,这是blog/index.html。
我尝试通过在_config.yml中添加“paginate: 5”来添加分页,但生成的URL形式为:
http://example.com/page2/

即没有“/blog”。这可以通过以下方式解决:

在 _config.yml 中设置 paginate_path: /blog/page/:num。

生成的页面路径为:

http://example.com/blog/page/2/

不要将blog/index.html作为布局文件。它们使用根目录下的index.html。那么,设置paginate_path选项有何意义呢?

我如何使用Jekyll将我的博客放在example.com/blog,并进行分页?

2个回答

5

在您的 _config.yml 文件中使用destination键来设置您希望输出发布到的基本路径。例如,

paginate: 5
destination: _site/blog

请注意,假设您的网站已设置为从“_site”提供其根目录(例如,“http://example.com/”),则jekyll不会在该位置生成“index.html”页面。 Jekyll构建的所有内容都将位于“blog”目录下,但这似乎是您想要的。

1
实际上,我在整个网站中都使用jekyll,而不仅仅是博客。因此我不能使用destination。最终我使用了这个插件,不是为了对分类进行分页,而是让博客使用blog/index.html作为它的布局。 - user1431368
对于服务器,您会使用网站的URL作为目标,还是坚持使用_site.blog? - Gerico
@Mat-visual - 目标是磁盘上的位置。因此,您不想使用URL。我还没有测试过,但我认为那甚至不会起作用。 - Alan W. Smith
我正试图做与user143168完全相同的事情:为位于子目录上的博客创建一个分页的第一页(子域将指向它)。整个站点都使用Jekyll构建。是否有不涉及插件的解决方案? - Benoit Patra
@BenoitPatra,如果这里列出的_config.yml文件设置不起作用,请尝试提出一个新问题并提供更多细节。(听起来你正在使用jekyll来完成整个网站,并且希望它能够生成像example.com/index.html和example.com/blog/index.html这样的页面。这与我们在此处解决的有点不同。) - Alan W. Smith
@AlanW.Smith,完成了,https://dev59.com/m4Hba4cB1Zd3GeqPRnhH,谢谢。 - Benoit Patra

2
我通过这个页面找到了解决方法。基本上,它需要一些技巧来确定您是否在博客的第n页,然后包含一个文件来拉取您的博客部分。
_includes/custom/ 中创建一个名为pagination的文件,其中包含您的分页代码。
<!-- This loops through the paginated posts -->
{% for post in paginator.posts %}
  <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
  <p class="author">
    <span class="date">{{ post.date }}</span>
  </p>
  <div class="content">
    {{ post.content }}
  </div>
{% endfor %}

<!-- Pagination links -->
<div class="pagination">
  {% if paginator.previous_page %}
    <a href="/page{{ paginator.previous_page }}" class="previous">Previous</a>
  {% else %}
    <span class="previous">Previous</span>
  {% endif %}
  <span class="page_number ">Page: {{ paginator.page }} of {{ paginator.total_pages     }}</span>
  {% if paginator.next_page %}
    <a href="/page{{ paginator.next_page }}" class="next">Next</a>
  {% else %}
    <span class="next ">Next</span>
  {% endif %}
</div>

现在,在您的_layout/index.html中添加以下内容:
{% if paginator.page != 1 %}
{% include custom/pagination %}
{% else %}
The original content of index
{% endif %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接