Mik*_*ike 52 jekyll github-pages
我使用Jekyll作为网站(而不是博客)的静态生成器,我想在我的索引页面上自动生成所有页面的列表.具体来说,我希望有不同的类别,并分别列出每个类别中的所有文章.如果你遇到麻烦,这是我所描述的一个例子.有没有办法在Jekyll中这样做(例如GitHub页面)?我已经看过变量文档页面,但这似乎特定于博客文章格式.
m-r*_*aud 84
在构建我自己的网站时,我遇到了同样的问题,我找到了一个(恕我直言)简单而强大的解决方案.希望这对任何希望做类似事情的人都有用.
给定网站上的一部分页面(不是帖子),根据其类别在标题下列出它们.例如:给定一组我们考虑资源页面(或参考页面,或您想要显示的页面的逻辑分组)的页面,我们希望在它们的类别下列出它们(例如代码,解释等) .
为了获得我们想要的行为,我们必须在三个地方进行修改:
_config.ymlresources.mdresource-file-X.md_config.yml在_config.yml,我们必须添加将出现在资源文件中的所有类别/关键字/标签(或任何您想要调用它)的列表.以下是我的内容:
category-list: [code, editors, math, unix]
Run Code Online (Sandbox Code Playgroud)
您可以调用变量,我选择category-list,只需确保在resource.md文件中使用相同的变量.
注意:将项目放在列表中的顺序是它们将在resource.md页面上列出的顺序.
resource-file-X.md这些是您要在resources.md页面上编制索引并链接到的文件.您需要做的就是在每个文件的顶部添加两个文件变量.第一个是指示该文件是资源文件.
resource: true
Run Code Online (Sandbox Code Playgroud)
第二个是指出您希望将此文件编入索引的类别.您可以根据需要在多个类别下对其进行索引,如果您希望页面未编入索引,请将列表留空.我在C中正确处理EINTR的参考有以下几类:
categories: [code, unix]
Run Code Online (Sandbox Code Playgroud)
resources.md这是将根据各自的类别生成页面列表的文件.您需要做的就是将以下代码添加到此文件(或您希望列表所在的任何文件):
{% for cat in site.category-list %}
### {{ cat }}
<ul>
{% for page in site.pages %}
{% if page.resource == true %}
{% for pc in page.categories %}
{% if pc == cat %}
<li><a href="{{ page.url }}">{{ page.title }}</a></li>
{% endif %} <!-- cat-match-p -->
{% endfor %} <!-- page-category -->
{% endif %} <!-- resource-p -->
{% endfor %} <!-- page -->
</ul>
{% endfor %} <!-- cat -->
Run Code Online (Sandbox Code Playgroud)
只是快速解释一下这是如何工作的:
_config.yml.resource,则对于文件所属的每个类别,如果其中一个与列出的当前类别匹配,则显示指向该页面的链接.注意:可以随意调用资源文件category-list中_config.yml和categories中的变量,只需确保在生成列表的文件中使用相同的变量.
另请注意:修改时_config.yml,必须完全重启Jekyll,即使有--watch选项,也必须停止并重新启动它.我花了一段时间才弄清楚为什么我的更改没有生效!
您可以在我的网站上的资源页面上看到最终产品,虽然我今天只是将它们放在一起,所以在撰写本文时,它还远未完成,但您可以在主页上查看我的生物.
希望这可以帮助!
小智 15
使用液体"包含"属性可以更清洁地完成此操作
categories: [fruit, meat, vegetable, cheese, drink]
Run Code Online (Sandbox Code Playgroud)
---
layout: page
title: Orange juice
description: Orange juice is juice from oranges. It's made by squeezing oranges.
categories: [fruit, drink]
---
Run Code Online (Sandbox Code Playgroud)
{% for page in site.pages %}
{% if page.categories contains 'fruit' %}
<div class="item">
<h3>{{page.title}}</h3>
<p>{{page.description}}</p>
</div>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20505 次 |
| 最近记录: |