Jekyll配置问题:如何为特定路径页面设置不同默认布局
问题分析与解决方案
你的问题出在**defaults中path的配置方式**,以及一处目录名笔误,导致更具体的eye-product规则未被匹配到。
核心错误点
- 目录名笔误:你配置的
path: "_v11.3/eye-product"里,实际目录是_v11-3(连字符),但你写成了_v11.3(点),直接导致路径匹配失败。 path相对路径逻辑错误:当scope同时指定type(对应collection)和path时,path是相对于该collection根目录(即_v11-3/)的路径,而非站点根目录的完整路径。不需要写_v11-3/前缀,直接写eye-product即可。
修正后的_config.yml配置
把defaults部分调整为:
defaults: - scope: path: "" values: layout: "default" - scope: path: "" type: "v11-3" values: layout: "documentation" versionDir: "11.3/" - scope: path: "eye-product" # 改为相对于_v11-3的路径 type: "v11-3" values: layout: "docueye" versionDir: "11.3/" mainPage: "eye-product"
关键说明
- 匹配顺序:Jekyll按
defaults从上到下的顺序匹配规则,更具体的规则(如eye-product专属规则)必须放在通用规则(整个v11-3collection规则)之后,否则会被覆盖。你原来的顺序是正确的。 - permalink不影响匹配:页面前置数据里的
permalink确实不影响defaults的匹配逻辑,因为defaults是基于源文件的实际路径和所属collection来匹配的,和生成后的URL无关。
验证
修改配置后重新构建站点:
_v11-3/eye-product/下的页面会应用docueye布局_v11-3/下其他目录(如oculus-product)的页面会应用documentation布局
内容的提问来源于stack exchange,提问作者Alberto Jiménez
相关产品推荐
相关产品推荐

