You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll多语言站点:如何从包含文件引入Front Matter避免重复

解决方案:统一管理lastmod到共享Include文件

结合你使用的Jekyll多语言方案,要避免在members.md和members_en.md中重复配置lastmod,可以通过在共享Include文件中定义变量+模板调用变量的方式实现,具体步骤如下:

1. 修改共享Include文件的结构

在_includes/cr_pages/members.md开头添加lastmod变量的赋值语句,然后用capture标签包裹原内容,确保变量能被父页面读取:

{% assign lastmod = "2024-05-20" %} <!-- 这里的日期会由pre-commit钩子自动更新 -->
{% capture member_page_content %}
<!-- 以下是你原来的双语内容 -->
## メンバー / Members
{% if page.lang == "en" %}
### Faculty
- Prof. XXXX (English bio...)
### Students
- YYYY (English info...)
{% else %}
### 教員
- XXXX教授(日本語の略歴...)
### 学生
- YYYY(日本語の情報...)
{% endif %}
{% endcapture %}

2. 调整父页面的引用方式

在members.md和members_en.md中,先引用共享Include文件,再输出捕获的内容:

---
layout: cr
lang: ja <!-- members_en.md里这里是lang: en -->
---
{% include cr_pages/members.md %}
{{ member_page_content }}

3. 修改页面模板以使用共享的lastmod

在你的页面布局文件(比如_layouts/cr.html)中,需要显示最后修改时间的位置,替换原来的{{ page.lastmod }}为{{ lastmod }}:

<footer>
  Last updated: {{ lastmod | date: "%Y-%m-%d" }}
</footer>

4. 配置pre-commit钩子自动更新lastmod

修改你的pre-commit钩子脚本,让它自动更新_includes/cr_pages/members.md中的lastmod变量值。比如用sed命令替换赋值行:

#!/bin/sh
# 更新共享Include文件中的lastmod为当前日期
sed -i.bak 's/{% assign lastmod = ".*" %}/{% assign lastmod = "'"$(date -I)"'" %}/' _includes/cr_pages/members.md
# 删除备份文件(macOS的sed需要这一步,Linux可去掉.bak)
rm _includes/cr_pages/members.md.bak

# 提交更新后的文件
git add _includes/cr_pages/members.md

这样,每次提交代码时,钩子只会修改共享的Include文件中的lastmod,而members.md和members_en.md不需要任何重复配置,完全复用共享内容和变量。

内容的提问来源于stack exchange,提问作者Akira Okumura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:26:49