Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jekyll内部的子模板_Jekyll - Fatal编程技术网

Jekyll内部的子模板

Jekyll内部的子模板,jekyll,Jekyll,jekyll中是否有与laravel的@节(“”)块等效的代码?我试图做的是创建一个模板,可以压缩多个jekyll页面之间共享的html。例如: 默认布局 <html> <div class="page-content"> <div class="wrapper"> {{ content }} </div> </div> </html> {{content}} 第

jekyll中是否有与laravel的
@节(“”)
块等效的代码?我试图做的是创建一个模板,可以压缩多个jekyll页面之间共享的html。例如:

默认布局

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

{{content}}
第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>
---
布局:默认值
permalink:xxx
---
我的头衔
{%include header.html%}
...
....
{%include footer.html%}
看起来jekyll的当前产品允许您使用子模板,但将
{{content}}
块限制为一个单独的文件,该文件也继承子模板。我需要创建一组彼此固有的文件来创建最终的html页面(或者我认为是这样)

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

解决方案1: 你可以用它

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

如果您的共享块只是HTML,那么只需要使用include

但也许(我不确定)共享块是文本,这意味着你想使用标记来格式化

默认情况下,Jekyll不会在include文件中渲染标记,但通过一些技巧,仍然可以包含标记文件

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

  • 将标记文件中的文本放入
    \u includes
    文件夹,例如
    \u includes/info.md

  • 包括该文件并通过捕获该文件,然后使用
    markdownify
    液体过滤器来呈现标记:

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

  • 解决方案2: 如果某些页面组的共享块相同,则可能需要使用多个布局文件

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

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

    然后,您有一个从主布局“继承”而来的第二个布局,它添加了诸如发布日期、标记等内容——所有博客文章都使用了这个布局