我正在和Jekyll建立一个杂志网站(v2.5.3)。 the Jekyll site上的文档让我相信我可以列出我网站上的所有馆藏,并在我的_config.yml
中为每个馆藏嵌入YAML数据。
_config.yml:
collections:
issue_001:
output: true
permalink: /:title/:path
title: Rebirth
date: 2015-07-01
issue_002:
output: true
permalink: /:title/:path
title: Talking Heads
date: 2015-08-01
的index.html:
{% for issue in site.collections %}
<li>
<h6 class="post-meta">Issue {{ issue.name }} — {{ issue.date | date: "%b %-d, %Y" }}</h6>
<h2>
{{ issue.title }}
</h2>
</li>
{% endfor %}
我在主页上出现了两个问题,但我正在访问的每个问题(名称,日期,标题等)都没有出现。我很欣赏这是一个测试版功能,所以只是想问一下这个坏了,还是我做错了?
答案 0 :(得分:5)
如果有人仍然有此请求,则以下是最新的Jekyll(v3.8.3)中的工作方式:
{% for collection in site.collections %}
<h2>Items from {{ collection.label }}</h2>
<ul>
{% for item in site[collection.label] %}
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
答案 1 :(得分:4)
在{% for issue in site.collections %}
中,issue
是一个包含以下内容的数组:
0 => "issue_001",
1 => Hash
{"output"=>true,
"permalink"=>"/:title/:path",
"title"=>"Rebirth",
"date"=>#,
"label"=>"issue_001",
"docs"=>[#],
"files"=>[],
"directory"=>"/home/djacquel/www/test.dev/jekyll/wat/_issue_001",
"relative_directory"=>"_issue_001"}
访问数据的正确方法是:
{% for issue in site.collections %}
<li>
<h6 class="post-meta">
Issue {{ issue[1].label }}
—
{{ issue[1].date | date: "%b %-d, %Y" }}
</h6>
<h2>
{{ issue[1].title }}
</h2>
</li>
{% endfor %}
答案 2 :(得分:0)
第二个; answer from @sparanoid太棒了!在那和默认的Jekyll Theme(极小值)的源代码之间,我能够将后面的内容融合在一起。
第一秒;一个很好的问题,以及如何不增加投票量,这让人感到莫名其妙。
其他许多相关点中的三分之一;我与问题发帖人的路径不同,但是以下代码可能对读者有用。我的用例是想要一种类似于默认Jekyll home
布局的列出集合体的方法。
_layouts/named_collection.html
请注意,可以通过以下方式下载源链接:单击
Raw
链接/按钮,然后单击 Ctrl s 保存为常规文本文件,但是,这些链接已及时冻结,因此请确保检查gh-pages
分支以获取更新。在这种情况下,输出示例仅是可能内容的示例。可能要使用 Lorem字符串来说明接下来要做什么。
---
layout: default
---
{% comment %}
License note from S0AndS0; an editor in this context.
Minima (where the following code is sourced from), is shared under the
MIT Lisense, https://github.com/jekyll/minima/blob/master/LICENSE.txt
Thus any alterations to Minima source code is re-shared under the MIT Lisense
{% endcomment %}
{% capture workspace_collections %}
{% assign collection_name = page.collection_name | default: include.collection_name | default: nil %}
{% assign target_collection = site[collection_name] %}
<div class="home">
{%- if page.title -%}
<h1 class="page-heading">{{ page.title }}</h1>
{%- endif -%}
{{ content }}
{% assign has_output = False %}
{%- if target_collection.size > 0 -%}
{% capture workspace_collection %}
<h2 class="post-list-heading">{{ page.list_title | default: "Posts" }}</h2>
<ul class="post-list">
{%- for post in target_collection -%}
{%- if page.relative_path == post.relative_path -%}
{%- continue -%}
{%- else -%}
{% assign has_output = True %}
{%- endif -%}
<li>
{%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
<span class="post-meta">{{ post.date | date: date_format }}</span>
<h3>
<a class="post-link" href="{{ post.url | relative_url }}">
{{ post.title | escape }}
</a>
</h3>
{%- if site.show_excerpts -%}
{{ post.excerpt | markdownify | remove: '<p>' | remove: '</p>' }}
{%- endif -%}
</li>
{%- endfor -%}
</ul>
{% endcapture %}
{%- if has_output == True -%}
{{- workspace_collection -}}{% assign workspace_collection = nil %}
{%- endif -%}
{%- endif -%}
</div>
{% endcapture %}{{ workspace_collections | strip }}{% assign workspace_collections = nil %}
请注意,我不记得我在哪里
capture
掌握了一些workspace_
的技巧,但是strip
键入新行和其他格式的恶作剧很费力。如果读者发现是谁造成了这种幻想,请编辑或发表评论。
这种布局的使用与Minima home.html
布局的使用非常相似。
administration.md
...从_administration
集合中选择最重要的内容看起来...
layout: named_collection
collection_name: administration
title: Administration
list_title: Usage Examples
permalink: /admin/
...导致输出<base-url>/admin/
集合列表。
git_shell_commands.md
...从_git_shell_commands
集合中选择最重要的内容看起来...
layout: named_collection
collection_name: git_shell_commands
title: Git Shell Commands
list_title: Usage Examples
permalink: /git_shell_commands/
...导致输出<base-url>/git_shell_commands/
集合列表。
如果我正确地阅读了最新的Jekyll Collections文档,那么从3.7.0
版本开始,就可能有一个自定义collections目录,对于这个问题,它可能看起来像是...
ls ~/git/magazine-name/
# ... other files and/or directories
# issues/
# ... other files and/or directories
# _config.yml
...,其中issues/
目录包含子目录,例如...
ls ~/git/magazine-name/issues/
# _001/
# _002/
# _003/
# ...
...并且_config.yml
文件具有...
collections_dir: issues
collections:
001:
output: True
# ...
... 魔术酱是collections_dir
,不是,是使用得分不足的前缀基本目录。关于最后一点的文档大声,例如。 _issues/
会度过一段糟糕的时光。
我不确定是否需要对先前发布的Liquid代码进行其他调整(我认为不是,但是可能);所以也许先尝试一下。
我建议使用collections_dir
的原因是因为在@James Dinsdale's question的情况下,它可能有助于组织更多事情。我个人希望我的gh-pages
分支集合为 mirror 提供一些与项目的master
分支相同的路径,因此不要尝试测试collections_dir
的建议。>
因为我使用的是Minima主题,所以将使用named_collection
主题的文件放置在项目的根目录中;默认行为是链接到每个页面顶部的 pages
。廉价的导航。
因为读者可能会将使用named_collection
的页面放在与列出的目录相同的目录中,例如...
ls Jekyll_Admin/_administration/
# _administration/administration.md
# ...
...我已经为某些边缘情况写了Liquid,但是可能没有涵盖所有'em'。在生产中释放类似的东西之前,请确保进行私下测试。