【问题标题】:How to handle template (layouts) inheritance in Jekyll?如何在 Jekyll 中处理模板(布局)继承?
【发布时间】:2023-03-27 21:09:01
【问题描述】:

我想要一个模板“_layouts/template1.html”扩展(Django 风格)模板 _layouts/default.html。

我将其作为 YAML 的头等大事放在 _layouts/template1.html 中

---
layout: default 
---
{{page.content}}

但显然它并没有像我希望的那样工作(template1.html 中存在但不在 default.html 中的所有附加标记都不会呈现)。看起来使用 template1 布局的文件纯粹扩展了 default.html。

有没有办法在 Jekyll 中继承布局?

【问题讨论】:

    标签: ruby-on-rails yaml jekyll


    【解决方案1】:

    你的意思只是{{ content }}

    是的,布局可以是管道。在您的情况下,如果页面使用 template1 布局,则它是 template1content。那么,template1 的结果就是 defaultcontent

    【讨论】:

      【解决方案2】:

      Jekyll 的 Liquid 模板非常容易扩展,您只需要确保扩展而不是覆盖您想要的模板。

      您可能实际上想要扩展页面而不是默认页面。

      所以,在你的模板 Front Matter 中:

      ---
      layout:page
      ---
      

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 现在 Jekyll 中似乎包含了这个功能
        • 没关系,我误解了 django 继承的工作原理。不过,我认为@jdh8 对本机 jekyll 模板的回答与这个问题最相关。
        【解决方案4】:

        您的示例中的template1.html 将扩展default.html,只要后者包含{{ content }} 块。例如,请参阅here。它不会做的是它不会覆盖default.html 已经包含的任何内容。为此,您需要 @juddlyon 提到的 Liquid Inheritance Gem。

        【讨论】:

          猜你喜欢
          • 2010-10-24
          • 2015-04-21
          • 2017-06-12
          • 2012-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多