gpt4 book ai didi

Jekyll:链接到静态层次结构中所有子页面的生成器

转载 作者:行者123 更新时间:2023-12-04 16:10:55 28 4
gpt4 key购买 nike

我正在尝试使用 Jekyll 编写一个静态站点,它有几个层次。生成指向一个部分中所有子页面的链接的最佳方法是什么?

例如,如果我有这样的站点结构:

landing
- Topic A
- Content 1
- Content 2
- Content 3
- Topic B
- Content 1
- Content 2
- Content 3

从主题页面创建到每个内容页面的链接的最佳方法是什么?而且,是否有一种简单的方法可以从着陆链接到所有主题页面?

这些不是帖子,只是静态页面。如果我可以做 {% for topic.each %} 就太好了……等等。并打印链接。

最佳答案

我不会为此目的使用帖子(正如 yaitloutou 所建议的)。我将从目录结构中读取层次结构(解决方案 1)或创建两个单独的集合(解决方案 2)。如果需要,您可以让解决方案 2 中的集合共享相同的布局。


1。使用页面

创建一个包含 index.md 页面的目录结构,并循环遍历名为“site.pages”的 Jekyll 变量来创建菜单。

index.md
topic-a/index.md
content-1/index.md
content-2/index.md
content-3/index.md
topic-b/index.md
content-1/index.md
content-2/index.md
content-3/index.md

然后像这样遍历所有页面:

<ul>
{% assign sitepages = site.pages | sort: 'order' %}
{% for sitepage in sitepages %}
<li {% if page.url == sitepage.url %} class="active"{% endif %}>
<a href="{{ sitepage.url }}">{{ sitepage.title }}</a>
</li>
{% endfor %}
</ul>

如果你想要嵌套结构,你可以做点什么like this .或者,如果您只想要主题 A 的结果,您可以这样做:

<ul>
{% assign sitepages = site.pages | sort: 'order' %}
{% for sitepage in sitepages %}
{% if sitepage.url contains 'topic-a' %}
<li {% if page.url == sitepage.url %} class="active"{% endif %}>
<a href="{{ sitepage.url }}">{{ sitepage.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>

2。使用集合(最简单的解决方案和最快的构建)

创建一个集合主题 A 并创建另一个集合主题 B。您的配置文件应如下所示:

collections:
topic-a:
output: true
permalink: /topic-a/:path/
topic-b:
output: true
permalink: /topic-b/:path/

输出一个主题的项目是这样的:

{% assign atopics = site.topic-a | sort: 'order' %}
{% for atopic in atopics %}
<li {% if page.url == atopic.url %} class="active"{% endif %}>
<a href="{{ atopic.url }}">{{ atopic.title }}</a>
</li>
{% endfor %}
</ul>

您应该使用您的 content-1.md、content-2.md 等文件创建一个 _topic-a 和一个 _topic-b 目录。


请注意,这两种解决方案都有名为“order”的 YML 变量,用于确定项目/页面的出现顺序。这看起来像这样:

---
title: mytitle
layout: mylayout
order: 50
---
mycontent

关于Jekyll:链接到静态层次结构中所有子页面的生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41733593/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com