【问题标题】:Jekyll includes and YAML frontmatterJekyll 包含和 YAML frontmatter
【发布时间】:2015-09-25 21:25:52
【问题描述】:

是否可以以某种方式将前端内容卸载到包含?我的 Jekyll 站点使用 frontmatter 变量作为页面标题,但是由于代码重复,我有一些页面共享包含。将页面标题的 frontmatter 放在 include 中会将其视为原始 HTML。有没有办法模拟这个并在包含中设置变量?

【问题讨论】:

    标签: include jekyll yaml-front-matter


    【解决方案1】:

    include 中没有前面的内容。

    但您可以使用 page.title 从包含内部访问页面标题,并使用 page.myVarName 访问任何其他页面的变量。

    【讨论】:

    • 对问题的混淆表示歉意。我知道 frontmatter 在包含中不起作用,而且我知道变量一旦设置就无法更改。是否有一种解决方法可以在包含中声明页面标题变量?本质上,我希望页面标题来自包含中使用的数据文件。
    • 因此,您可以编辑您的问题并进行更多解释。给我们一些你已经尝试过的小代码示例。
    【解决方案2】:

    您可以将参数传递给包含。试试:

    {% include name.html var={{page.title}} %}
    

    然后在include中,使用include.var访问参数。

    请参阅https://jekyllrb.com/docs/includes/ 上的“将参数传递给包含”

    【讨论】:

    • 将参数传递给包含功能非常强大,并且可能适用于您想要做的事情。在包含页面上,请特别查看此部分:Passing parameters to includes
    • 这是不正确的,会导致错误。你必须通过assign或capture方法把前面的东西变成一个变量,然后传递给include。我在上面的回答中详细说明了这种方法:stackoverflow.com/a/55616695/3411192
    【解决方案3】:

    根据passing parameter variables to includes 上的 Jekyll 文档,您需要先将前端内容作为变量捕获。

    他们的示例使用捕获,但如果您只是传递变量,则可以使用分配。这是我测试过的如何执行此操作的示例:

    包括

    <div>
    {{ include.title }} 
    </div>
    

    包含在内容中

    {% assign include-title = page.title %}
    {% include example.html title=include-title %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 2013-01-07
      相关资源
      最近更新 更多