Jekyll Liquid如何条件引入_includes文件,替换<is_post_layout>实现布局判断
方案1:直接判断页面使用的布局(实现最简单)
将<is_post_layout>替换为page.layout == "post_layout"即可,修改后_layouts/default.html对应代码为:
<html> <head> {% if page.layout == "post_layout" %} {% include post_metadata.html %} {% endif %} </head> <body> {{ content }} </body> </html>
原理是Jekyll内置的page.layout变量会存储当前页面声明使用的布局名称,当页面使用post_layout时条件成立,就会自动引入对应的资源片段。
方案2:子布局加自定义标记(扩展性更好)
如果后续有多个布局都需要引入post_metadata.html,用判断布局名的方式需要频繁修改条件,更灵活的实现方式是给需要加载对应片段的布局加自定义标记:
- 先修改
_layouts/post_layout.html,在前言区域新增自定义字段:
--- layout: default load_post_metadata: true --- <article> {{ content }} </article>
- 将
<is_post_layout>替换为layout.load_post_metadata即可,修改后default.html对应代码为:
{% if layout.load_post_metadata %} {% include post_metadata.html %} {% endif %}
后续其他布局需要加载同一段资源时,只需要在对应布局的前言里加load_post_metadata: true即可,无需修改default布局的判断逻辑。
内容的提问来源于stack exchange,提问作者Fb16455
相关产品推荐
相关产品推荐

