【问题标题】:Jekyll change element based on how you got to post (click order)Jekyll 根据您发布的方式更改元素(点击顺序)
【发布时间】: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


【解决方案1】:

是的,您可以通过使用 generator plugin 来使用 Jekyll。但我认为这会给您的导航和内容复制带来不必要的复杂性。

其他解决方案可以是动态服务器端或使用一些javascript客户端,但这仍然是无用的复杂化。

********** Home *******************
Last posts              *  TAGS
                        *  - tag 1
(maybe some pagination) *  - tag 2
                        *        

标签页

********** Tag : tag 1 *************
Last posts for Tag 1    *  TAGS
                        *  - tag 1
(maybe some pagination) *  - tag 2
                        *

发布页面

********** Post page ***************
Post content              *  TAGS
Author, Date, Tag : tag 1 *  - tag 1
                          *  - tag 2
Post content              *
***************************        
Post tagged : tag 1       *
  - post 1                *
  - ...                   *

您已经完成了一个任何人都可以理解且没有无用复杂性的简单解决方案。

【讨论】:

  • 对不起,我有点困惑,你想在这里传达什么答案?是否要重新排列我显示内容的方式,以便布局嵌套得很好?还是使用 jekyll 以外的东西?还是使用 jekyll 生成器?我也在尝试使用a Jekyll Theme that already exists with the layout in my question。我的另一个问题是 Jekyll 每个帖子不能有多个布局,这是我最初希望我能做到的。
猜你喜欢
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2014-11-29
  • 2021-12-11
相关资源
最近更新 更多