Jekyll 生成给定类别中的页面(非帖子)列表
我正在使用Jekyll作为网站(而不是博客)的静态生成器,我希望有一个自动生成的索引页上所有页面的列表。具体来说,我想有不同的类别,并列出每个类别中的所有文章分别。这是我描述的一个例子,如果你跟不上的话。在Jekyll中有没有办法做到这一点(例如GitHub页面)?我已经看过了,但这似乎是博客文章格式的特点。你应该区分页面和文章(文章)。列出所有按类别排序的帖子根本不是问题。您可以循环浏览site.categories。它包含类别名称和该类别中所有帖子的列表 列出所有页面也是可能的。您可以循环浏览site.pages。但页面不属于特定类别(只有帖子才属于)Jekyll 生成给定类别中的页面(非帖子)列表,jekyll,github-pages,Jekyll,Github Pages,我正在使用Jekyll作为网站(而不是博客)的静态生成器,我希望有一个自动生成的索引页上所有页面的列表。具体来说,我想有不同的类别,并列出每个类别中的所有文章分别。这是我描述的一个例子,如果你跟不上的话。在Jekyll中有没有办法做到这一点(例如GitHub页面)?我已经看过了,但这似乎是博客文章格式的特点。你应该区分页面和文章(文章)。列出所有按类别排序的帖子根本不是问题。您可以循环浏览site.categories。它包含类别名称和该类别中所有帖子的列表 列出所有页面也是可能的。您可以循环浏
当我看一看你发布的例子时,在帖子上使用分类,然后在site.categories中循环,这似乎是一个不错的选择。它将为您提供理想的输出。在构建我自己的站点时,我遇到了同样的问题,我找到了一个(IMHO)简单而健壮的解决方案。希望这对其他希望做类似事情的人有用 问题 给定站点上的页面子集(不是帖子),根据其类别将其列在标题下。例如:给定一组页面,我们考虑资源页(或引用页,或者要显示的页面的任何逻辑分组),我们希望在它们的类别下列出它们(例如,代码、解释等)。 解决方案 为了获得我们想要的行为,我们必须在三个地方进行修改:
\u config.yml
resources.md
资源文件-X.md
\u config.yml
在\u config.yml
中,我们必须添加将出现在资源文件中的所有类别/关键字/标记(或任何您想称之为的)的列表。以下是我所拥有的:
category-list: [code, editors, math, unix]
您可以任意调用该变量,我选择了category list
,只要确保在resource.md
文件中使用相同的变量即可
注意:您在列表中放置项目的顺序是它们在resource.md
页面上列出的顺序
资源文件-X.md
这些是您希望在resources.md
页面上建立索引和链接的文件。您需要做的就是在每个文件的顶部添加两个文件变量。第一个是指示此文件是一个资源文件
第二个是指示您希望将此文件编入索引的类别。您可以根据需要在任意多个类别下为其编制索引,如果希望某个页面未编制索引,请将列表留空。我在C中正确处理EINTR的参考有以下几类:
categories: [code, unix]
resources.md
该文件将根据页面各自的类别生成页面列表。您只需将以下代码添加到此文件(或希望列表位于其中的任何文件):
{%用于站点中的cat.category-list%}
###{{cat}}
{site.pages%中的页面为%s}
{%if page.resource==true%}
{page.categories%%中pc的%
{%pc==cat%}
{%endif%}
{%endfor%}
{%endif%}
{%endfor%}
{%endfor%}
代码分解
简单介绍一下这是如何工作的:
- 循环浏览
中指定的每个类别\u config.yml
- 显示具有该类别名称的标题
- 为属于该类别的页面启动无序列表
- 循环浏览站点上的页面
- 如果页面是由文件变量
指示的资源文件,则对于文件所属的每个类别,如果其中一个类别与所列出的当前类别匹配,则显示指向该页面的链接resource
\u config.yml
中的变量category list
和资源文件中的categories
可以根据需要调用,只需确保在生成列表的文件中使用相同的变量即可
另一个注意事项:当您修改\u config.yml
时,您必须完全重新启动Jekyll,即使您有--watch
选项,也必须停止并重新启动它。我花了一段时间才弄明白为什么我的更改没有生效
最终产品
你可以在上的参考资料页面上看到最终产品,尽管我今天刚刚把它放在一起,所以在撰写本文时,它还远未完成,但是如果你想在主页上查看我的个人简历,你可以查看我的个人简历
希望这有帮助 使用液体“包含”属性有一种更干净的方法: 在_config.yml中,添加类别索引 在首页内的page.md中,添加一个或多个_config.yml中可用的类别 要获取水果类别中的所有页面,请在模板中执行以下操作:
{%用于site.pages%}
{%如果page.categories包含“水果”}
{{page.title}}
{{page.description}
{%endif%}
{%endfor%}
可能有一些变化/简化(felipesk的回答)。也许是因为Jekyll的改进
\u config.yml
中不需要索引
如果页面列表未在页面中列出,但例如在文档中,则您也可以将类别添加到文档中:
---
layout: doc
title: Fruit List
categories: [fruit]
---
然后像这样使用它:
{% for p in site.pages %}
{% if p.categories contains page.category %}
* [{{ p.title }}]({{ p.url | absolute_url }})
<small>{{ p.excerpt }}</small>
{% endif %}
{% endfor %}
我使用主题这确实是Jekyll提供的功能的极限,但它不能满足我的需要。我想我将通过编写一个bash脚本来构建站点,然后调用一个Haskell脚本来按类别插入页面链接
categories: [fruit, meat, vegetable, cheese, drink]
---
layout: page
title: Orange juice
description: Orange juice is juice from oranges. It's made by squeezing oranges.
categories: [fruit, drink]
---
{% for page in site.pages %}
{% if page.categories contains 'fruit' %}
<div class="item">
<h3>{{page.title}}</h3>
<p>{{page.description}}</p>
</div>
{% endif %}
{% endfor %}
---
layout: doc
title: Fruit List
categories: [fruit]
---
{% for p in site.pages %}
{% if p.categories contains page.category %}
* [{{ p.title }}]({{ p.url | absolute_url }})
<small>{{ p.excerpt }}</small>
{% endif %}
{% endfor %}
{% for post in site.categories[page.category] %}
* [{{ post.title }}]({{ post.url | absolute_url }})
<small>{{ post.excerpt }}</small>
{% endfor %}
## Further Reading
{% include pages-list.md %}