我正在jekyll / gh-pages网站上工作。我想建立一个侧栏,根据CUSTOM标签列出帖子数量。所以我可以使用不同的yml元素对帖子进行排序。使用标签yml元素和此代码
可以正常工作<h3>Activities By Topic</h3>
{% for tag in site.tags %}
{% assign t = tag | first %}
{% for atag in site.data.tags %}
{% if atag.slug == t %}
<h5><a href="{{ site.baseurl }}/{{ atag.slug }}">{{ atag.name }}
{% endif %}
{% endfor %}
({{ tag | last | size }})
</a></h5>
{% endfor %}
但我想要的是另一个“按类型划分”的块(我们试图以不同的方式对帖子进行排序。我设置了一个topic-tag
yml元素和一个`topic-tag.yml文件'
_data文件夹 https://github.com/lwasser/data-lesson-catalog/blob/gh-pages/_data/topic-tags.yml 组织文件夹: https://github.com/lwasser/data-lesson-catalog/tree/gh-pages/org/topic-tag 样本帖子: https://github.com/lwasser/data-lesson-catalog/edit/gh-pages/_posts/lessons/2015-09-10_dc-R.md
来自样本帖子的相关YML
---
layout: post
catalog-entry-type: lesson
title: Data Carpentry R for Ecology
topic-tag: ["Analysis", "Vizualization"]
---
无效的代码:
<h3>Data Activities By Topic Tag</h3>
{% for tag in site.topic-tag %}
{% assign t = tag | first %}
{% for atag in site.data.topic-tags %}
{% if atag.slug == t %}
<h5><a href="{{ site.baseurl }}/{{ atag.slug }}">{{ atag.name }}</h5>
{% endif %}
{% endfor %}
({{ tag | last | size }})
{% endfor %}
我可以按其他标签(不只是标签yml元素)对帖子进行排序吗?
我想要的输出是这样的: 分析(2) 可视化(3)
如果是这样,有关为何上述代码不起作用的任何建议?我在这里发现了另一篇帖子,询问类似的东西,但决议是使用yaml“tags”元素,这对我的用例不起作用。 非常感谢, 利亚
答案 0 :(得分:0)
您可以使用categories。它们就像标签一样工作,可以用来对帖子进行排序。
答案 1 :(得分:0)
嗨,任何正在为同样的事情奋斗的人。这就是我所学到的。
标签和类别内置于jekyll构建中。因此,您可以在不向配置文件添加任何内容的情况下调用site.tags或site.categories。您创建的其他自定义标记(如topic-tags
)并不是jekyl固有地将其理解为可在站点级别调用的变量。我的解决方法 - 使用计数器按自定义变量计算帖子。代码看起来像这样
{% for member in site.data.topic-tags %}
{% assign counter = 0 %}
<!-- this code counts the number of posts associated with the member -->
{% for post in site.posts %}
{% if post.topic-tag contains member.slug %}
{% assign counter = counter | plus: 1 %}
{% endif %}
{% endfor %}
<h5><a href="{{ site.baseurl }}/topic-tag/{{ member.slug }}">{{ member.name }} ({{ counter }})</h5>
{% endfor %}
这就像魅力一样,虽然它正在查看所有帖子,看它是否包含yaml中的member
标记。
我希望这有助于某人!
答案 2 :(得分:0)
这里是我用来显示每个类别的帖子数量的代码。您可以将 site.categories 更改为 site.tags ,以便按标记显示。
<h2 class="question">Topics ({{ site.posts | size }} total)</h2>
<ul class="topics">
{% capture tags %}
{% for tag in site.categories %}
{{ tag[0] }}
{% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}
{% for tag in sortedtags %}
<li class="topic-header"><b>{{ tag }} ({{ site.categories[tag] | size }} topics)</b>
<ul class='subnavlist'>
{% for post in site.categories[tag] %}
<li class='recipe'>
<a href="/{{ site.github.project_title }}{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
检查行动 here 。