Hugo中如何在partial内读取站点配置实现可复用独立地图模块
Hugo 独立地图模块的合理配置方案
字典传参是Hugo partial实现多参数传递的标准方案,你可以通过构造字典向partial打包传递所有所需变量的方式实现需求,既保证模块独立性,也无需硬编码配置,具体操作如下:
- 第一步:修改partial调用代码,将你需要用到的所有变量打包为字典传入
你当前仅传入了筛选后的页面集合,调整后调用代码示例:
你可以根据模块需要,在字典中增加任意参数项,比如地图中心点坐标、缩放层级这类自定义配置都可以放在字典中传递,如果需要用到当前模板的根上下文其他属性,也可以额外添加{{ partial "map.html" (dict "targetPages" (where site.RegularPages "Type" "in" site.Params.mainSections) "siteParams" site.Params ) }}"rootCtx" .项传入。 - 第二步:在
map.htmlpartial中直接调用传入的参数即可
比如要访问筛选后的页面就用.targetPages,要访问站点参数就用.siteParams即可。
该方案完全匹配你的需求:
- 模块仍然是独立的partial,不需要写入主题的
index.html核心模板,可单独抽离分享 - 所有配置项都从调用侧传入,无需在partial内部硬编码,其他人使用你的模块时只需要按照参数规则传入对应值即可快速部署
- 规避了partial作用域无法直接访问站点变量的问题,也不需要用到只能在内容文件调用的shortcode。
内容的提问来源于stack exchange,提问作者martin
相关产品推荐
相关产品推荐

