事件索引与导航(可引用条目 + 内链/外链跳转)
1、事件数据结构
在 _data/event.yml 中,我们使用 数组写法定义所有事件。每条事件包含以下字段:
- name: 河南村镇银行
slug: henan-village-bank
url: https://www.google.com/search?q=河南村镇银行
字段说明:
- name:事件中文名称,用于页面展示
- slug:事件唯一标识,用于锚点和文章引用
- url:外部搜索链接,用于点击跳转到 Google/Bing/维基等
设计理念:slug 是事件的永久身份,确保文章链接和归档页锚点不会因为事件排序改变而失效。
2. 归档页布局
在 _pages/archive.md 中,我们使用以下结构生成创作背景一览及事件列表:
## 创作背景一览
{% assign all_events = site.data.event %} <!-- 将 _data/event.yml 中的事件数组赋值给 all_events -->
<div style="display: flex; flex-wrap: wrap; gap: 8px; align-items: center; line-height: 1.5;">
{% for event in all_events %} <!-- 循环遍历所有事件 -->
<div id="{{ event.slug }}" style="display: inline-block;"> <!-- 每个事件独立 div,id 用 slug 生成锚点 -->
<a href="{{ event.url }}" target="_blank" style="font-weight: bold; text-decoration: none;">
{{ event.name }} <!-- 显示事件名称,点击跳转到外部链接 -->
</a>
{% unless forloop.last %} <!-- 如果不是最后一个事件 -->
<span style="margin: 0 4px; ">·</span> <!-- 用 · 分隔事件 -->
{% endunless %}
</div>
{% endfor %}
</div>
3. 文章中引用事件
在文章 front-matter 或正文中,使用如下 Markdown 语法:
[#河南村镇银行](/archive/#henan-village-bank)- 例子:#河南村镇银行
说明:
-
#河南村镇银行是显示文字。 -
/archive/#henan-village-bank跳转到归档页对应事件锚点。
4. 事件管理规范
新增事件
- 在
_data/event.yml添加新的数组元素,确保 slug 唯一。 - 示例:
- name: 新事件名称
slug: new-event-slug
url: https://www.google.com/search?q=新事件
页面顺序可随意调整,slug 保持不变即可保证文章引用稳定。
5. 总结
-
_data/event.yml→ 数据定义,name 显示、slug 绑定文章锚点、url 跳外部搜索。 -
archive.md→ 页面渲染,使用 for 循环生成事件列表、锚点、外链图标。 - 文章引用 → 使用
[显示文字](/archive/#slug),确保稳定性。 - 结构清晰、顺序可随意调整、后续可扩展。
这样,你就形成了一套可扩展、稳定、易维护的事件背景索引体系。