首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jekyll中基于数组中第一个参数的内容过滤

Jekyll中基于数组中第一个参数的内容过滤
EN

Stack Overflow用户
提问于 2018-08-01 23:24:55
回答 2查看 311关注 0票数 0

在我的帖子的前沿问题上,我有“类别”,这是一个数组。

我正在寻找一种基于类别数组中的第一个元素来过滤帖子的方法。

例如,如果我有两个职位的前沿问题,如:

代码语言:javascript
复制
title: Post Number One 
categories:
   - first post ever
   - cool stories

代码语言:javascript
复制
title: Post Two
categories:
- cool stories

我想要一种过滤类别的方法,其中“酷故事”只返回"Post 2“,因为”酷故事“显示为数组的第一个元素。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 07:07:44

这是一个信息体系结构(IA)问题。

  • 任何职位都必须在主类别中分类。
  • 文章可以分为多个“类别”。

让我们使用Jekyll的category/categories内部工作来表示我们的IA。

如果您定义这样的帖子:

代码语言:javascript
复制
---
title:  "My post"
category: "main category"
categories:
  - other
  - wat!
# ... more front matter variables
---

类别/类别如下:

代码语言:javascript
复制
post.category => main category
post.categories =>
  - other
  - wat!
  - main category

现在,如果您想使用category过滤您的文章,使用exp滤波器,您可以这样做:

代码语言:javascript
复制
{% assign category = "main category" %}

{% comment %} #### Grouping posts by 'main' category {% endcomment %}
{% assign grouped = site.posts | group_by: "category" %}
{{ grouped | inspect }}

{% comment %}#### Get our category group{% endcomment %}
{% assign categoryPosts = grouped | where_exp: "group", "group.name == category" | first %}
{{ categoryPosts | inspect }}

{% comment %} #### All interesting posts are now in categoryPosts.items {% endcomment %}
{{ categoryPosts.items | inspect }}

{% comment %} #### We can now sort and loop over our posts {% endcomment %}

{% assign sorted = categoryPosts.items | sort: "whateverKeyYouWantToSortOn" %}
<ul>
{% for post in sorted %}
 <li>
  <a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a>
  <br>Category : {{ post.category }}
  <br>Categories :
  <br><ul>{% for c in post.categories %}
   <li>'categorie' {{ forloop.index }} - {{ c }}</li>
  {% endfor %}</ul>
 </li>{% endfor %}
</ul>
票数 1
EN

Stack Overflow用户

发布于 2018-08-02 02:52:23

有几种方法可以实现这个特性。其中之一是:

_includes中创建一个名为first-category.html的新包含文件,代码如下:

代码语言:javascript
复制
{% assign chosen_category = include.category %}

{% for post in site.posts %}
{% for category in post.categories.first %}
{% if category == chosen_category %}
  {{ post.title }}
{% endif %}
{% endfor %}
{% endfor %}

然后,在列出具有第一个类别的帖子的页面中,只需包含上面的文件并传递所选的类别名称:

代码语言:javascript
复制
## Post that have the first category of "cool stories"

{% include first-category.html category = "cool stories" %}

## End

上面的代码将只显示以“酷故事”为第一类的帖子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51643545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档