【发布时间】:2020-06-06 23:44:11
【问题描述】:
现在我有一个 Jekyll 网站主题,允许用户通过选择标签来过滤帖子。 如果他们在主页上,它会显示所有帖子,如果他们选择了一个标签,它只会显示带有该标签的帖子。
选择帖子时,帖子列表和标签列表下方会出现一个新视图,用于显示帖子内容。但是,当这种情况发生时,帖子列表元素内的任何过滤都会消失。
TAG1 SELECTED POST FROM TAG1 SELECTED
<URL>/tag/tag1 <URL>/POST
+---------+--------------------+ +---------+--------------------+
| Home | Post List | | Home | Post List |
| - Tag1 | <FILTERED ON TAG1> | ---\ | - Tag1 | <SHOWS ALL POSTS> |
| - Tag2 | | ---/ | - Tag2 |<NO LONGER FILTERED>|
+---------+--------------------+ +---------+--------------------+
| POST CONTENT |
| |
+------------------------------+
我还能够更改代码,以便在选择标签,然后选择帖子时,Post List 仅显示也包含该标签的帖子。但是,通过此更改,如果在 Home 页面(无标签)上并且我单击帖子,则会中断; Post List 将根据与所选帖子关联的标签进行过滤,而不是显示所有帖子。 (注意:对于我的博客,我只计划每篇文章有一个标签)
HOME SELECTED POST FROM HOME SELECTED
<URL>/ <URL>/POST
+---------+--------------------+ +---------+--------------------+
| Home | Post List | | Home | Post List |
| - Tag1 | <SHOWS ALL POSTS> | ---\ | - Tag1 | <FILTERED ON TAG1> |
| - Tag2 | | ---/ | - Tag2 | <IS NOW FILTERED> |
+---------+--------------------+ +---------+--------------------+
| POST CONTENT |
| |
+------------------------------+
我的问题是,有没有办法在 Jekyll 中显示帖子并根据您到达帖子的方式更改 Post List?
例如,如果我在 Home 页面(没有过滤器)上,并且我从未经过滤的 Post List 中单击帖子,我想查看帖子同时保持 Post List 相同(保持未过滤显示所有帖子)。但是,除此之外,如果我在标签列表中单击Tag1,然后单击现在过滤的Post List 中的帖子,我想在保持Post List 相同的同时查看帖子(继续过滤所有帖子在tag1)。请参阅下面的线框图以获得直观的解释。
使用 Jekyll 及其相应的工具(Front Matter、Liquid...)是否可以做到这一点?还是我需要某种插件?
非常感谢任何帮助。
【问题讨论】:
-
我认为这很难实现。由于静态特性(必须生成所有组合,没有动态行为)。因此,这最终可能会出现在一个非常大的站点中。由 5 个标签标记的帖子需要 6 个变体(每个标签一个,所有标签一个)。重新考虑你是否真的需要这种行为。我同意@David Jacquel 的回答
-
正如问题中提到的,我只计划每页有一个标签。标签可以有多个页面,但页面(仅适用于我的用例)将只有一个标签。
-
现在明白了。如果你真的想要那种设计,你可能必须编写你的生成器,如下所示。
标签: jekyll liquid jekyll-theme yaml-front-matter