有没有一种方法可以让一个 Jekyll 网站拥有多个博客?我目前想在一个网站上拥有两个博客。
我是该页面的作者http://www.garron.me/blog/multi-blog-site-jekyll.html
考虑到您需要单独的档案页面以及每个单独博客的最新帖子。只需使用这样的东西:
创建文件 archives-blog-1.html 并填充:
{% for post in site.posts %}
{% if post.categories contains 'blog1' %}
<div class="post">
<h3 class="title"><a href="{{ post.url }}">{{ post.title }}</a></h3>
<p class="meta">Date: {{ post.date }}</p>
</div>
{% endif %}
{% endfor %}
这将为您提供 blog1 中所有帖子的列表,您可以对 blog2 执行相同的操作。该页面可以是您想要的任何地方。
对于最新的帖子,您可以使用相同的代码,但包含在:
{% for post in site.posts limit:5 %}
....
{% endfor %}
这将为您提供最新的 5 篇帖子...我正在使用这个
{% for post in site.posts limit:5 %}
<div class="post">
<ul>
<li><a href="{{ post.url }}">{{ post.title | truncate:200 }} </a><small>{{ post.date }}</small>
{% if post.summary %}
<p class="entry">{{ post.summary }}</p>
{% endif %}
</li>
</ul>
</div>
{% endfor %}
在我的索引页中。 http://www.garron.me/index.html ...在副标题下(来自博客) 我不限制任何类别,因此所有博客的帖子都会出现在那里,您可以使用
{% if post.categories contains 'blog1' %}
进行限制
希望对您有帮助。
有一个比迄今为止任何答案都更简单的解决方案。
文件夹结构:
- blog1/
- _posts/
- blog2/
- _posts/
然后在 blog1 的 index.html 中,使用
site.categories.blog1
而不是 site.posts
。
中“site.categories”和“page.categories”的文档
我使用了两个单独的 Jekyll 安装来运行同一域上的两个博客;如果您的博客将位于单独的根目录中(我的博客位于
/
和 /photos/
),那么我会推荐这种方法。我还描述了如何合并两个博客的 sitemap.xml 文件。
您最好的选择是研究数据文件功能。您可以将
.markdown
文件放在 source
中的单独文件夹中,并在发布时链接到它们。这确实意味着,为了发表帖子,您需要编写一个数据文件条目,但您可以托管任意数量的“博客”,每个博客都有自己的文件夹。帖子将自动将其所在的文件夹作为网址。我将这种方法用于我自己的个人博客和作品集。
无论怎样,或者您可能想查看集合:http://jekyllrb.com/docs/collections/
添加@ggarron的答案,有一个按类别过滤的简短版本:
{% assign filtered_posts = site.posts | where_exp: "post", "post.categories contains 'blog1'" %}
分配给变量的优点是可以用
site.posts
替换所有 filtered_posts
的使用并保持一致性。例如,我有一个片段来获取列表的第一篇文章:
{% assign first_post = filtered_posts | first %}
这按预期工作。
假设我们想要将帖子分成两个博客:
blog1
和blog2
。
所有帖子都可以存储在一个目录中(虽然可以按照@David Röthlisberger的建议将它们放在不同的目录中,但实际上这并不重要)。为了区分哪个帖子应该进入哪个博客,我们在 .md 文件开头与帖子文本一起使用
category
属性。
接下来,我们需要在
blog1.html
目录中创建文件blog2.html
和_layouts
。在每个帖子中,我们需要分别将 site.posts
替换为 site.categories.blog1
和 site.categories.blog2
(另外,如果需要,您可以替换 site.posts
中的 _layouts/home.html
,以便只在主页上显示必要的帖子,不是全部)。
剩下要做的最后一件事是创建包含以下内容的文件
blog1.md
和 blog2.md
(以在标题中创建链接):
---
layout: blog1
title: blog1
permalink: /blog1/
---