代码之家  ›  专栏  ›  技术社区  ›  Vladyslav Zavalykhatko

为通过站点访问的页面应用布局。页。所容纳之物

  •  0
  • Vladyslav Zavalykhatko  · 技术社区  · 7 年前

    我试图使用以下代码在html内部呈现特定的md文件:

    {% assign subheader = site.pages | where: "title", "subheader" | first %}
    
    {{ subheader.content }}
    

    它可以工作,但我的布局不受尊重。它是否按预期工作?有没有办法应用此布局?

    1 回复  |  直到 7 年前
        1
  •  2
  •   ashmaroli    7 年前

    布局在上下文中应用于“当前页面”。

    在您的示例中,如果 {{ subheader.content }} 已插入say, base.md 定义了 layout: base 那么在前面 {{subheader.content}} 已渲染 作为“的一部分” 基础md公司 " 因此将成为 它的 布局图( _layouts/base.html ).

    没有现成的方法来呈现使用多个布局呈现的页面的各个部分。

    唯一可能的路线是 继承 另一个布局。

    例如 假设我有一个包含以下内容的“基本”布局:

    [...]
    <header>
      <div id="parent-element">
        <div class="btn">foo</div>
        {{ content }}
      </div>
    </header>
    [...]
    

    和其他布局 subheader :

    ---
    layout: base
    ---
    
    <ul id="greek">
      <li><a href="#">alpha</a></li>
      <li><a href="#">beta</a></li>
      <li><a href="#">gamma</a></li>
    </ul>
    {{ content }}
    

    最后是一个“page.md” 使用 副标题布局:

    ---
    layout: subheader
    ---
    
    <ul id="fruits">
      <li><a href="#">apples</a></li>
      <li><a href="#">oranges</a></li>
      <li><a href="#">bananas</a></li>
    </ul>
    

    然后,生成的“page.html”将是:

    [...]
    <header>
      <div id="parent-element">
        <div class="btn">foo</div>
        <ul id="greek">
          <li><a href="#">alpha</a></li>
          <li><a href="#">beta</a></li>
          <li><a href="#">gamma</a></li>
        </ul>
        <ul id="fruits">
          <li><a href="#">apples</a></li>
          <li><a href="#">oranges</a></li>
          <li><a href="#">bananas</a></li>
        </ul>
      </div>
    </header>
    [...]