【问题标题】:Sub templates inside of JekyllJekyll 中的子模板
【发布时间】:2016-05-12 00:34:40
【问题描述】:

jekyll 中是否有相当于 laravel 的 @section('') 块?我想做的是创建一个模板,可以压缩多个 jekyll 页面之间共享的 html。例如:

默认布局

<html>
    <div class="page-content">
      <div class="wrapper">
        {{ content }}
      </div>
    </div>
</html>

page_1

---
layout: default
permalink: xxx 
---
<head>
    <title>My title</title>
 {% include header.html %}
 ...
 <div> <!-- A shared block between pages with different content --> </div>
 ....
 <div> <!-- Another shared block between pages with different content --> </div>
 {% include footer.html %}
 </html>

看起来当前提供的 jekyll 允许您使用子模板,但将 {{content}} 块限制为一个单独的文件,该文件也继承了子模板。我需要创建一堆彼此固有的文件来创建最终的 html 页面(或者我认为)。

在 Laravel 中对我有用的是使用 multiple @yield@section 语句轻松地将动态数据插入到共享模板中。我不认为 Jekyll 可以在不创建一堆嵌套子模板的情况下做到这一点,但我希望我错了。

【问题讨论】:

    标签: jekyll


    【解决方案1】:

    解决方案 1:

    你可以使用Jekyll's include files

    您可能已经知道包含,因为您在问题的布局文件中使用它们。

    如果您的共享块只是 HTML,则只需使用包含即可。

    但也许(我不确定)共享块是文本,这意味着您想使用 Markdown 进行格式化?

    默认情况下,Jekyll 不会在包含文件中呈现 Markdown,但通过一些小技巧仍然可以包含 Markdown 文件。

    我有一个网站,我需要在多个页面上使用相同的文本块(带有格式和链接),所以我这样做了:

    1. 将 Markdown 文件中的文本放入 _includes 文件夹,例如_includes/info.md

    2. 包含该文件并通过捕获它然后使用markdownify Liquid 过滤器来呈现 Markdown

      {% capture tmp %}{% include info.md %}{% endcapture %}
      {{ tmp | markdownify }}
      

    解决方案 2:

    如果某些页面组的共享块相同,则可能需要使用多个布局文件。

    最好的例子是使用 Jekyll 构建的博客:

    您有一个所有页面共享的“基本”布局(导航、侧边栏、页脚...),“常规”页面直接使用该布局。

    然后,您有第二个布局“继承”主布局,它添加了诸如发布日期、标签等内容 - 所有博客帖子都使用此布局。

    Here's a simple Jekyll example for this.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多