2017-03-07 73 views
0

我已经开始在10月份看看,而我可以建立一个默认的布局,并有条件地在需要的地方包含partials。我宁愿嵌套布局。模板可以嵌套在OctoberCMS中吗?

I.E. root布局不依赖于任何其他布局,但nav布局引用root布局。

这可能吗?

编辑: 我期待在更换ExpressionEngine。在EE中,我可以使用我的html>head+body标签进行root布局。然后,我可以有一个nav布局,该布局在导航中添加,但将root布局作为ITS布局引用。所以你最终得到nav引用的root,或者可以直接引用任何[page](如果nav不是/需要的话)。嵌套布局仅允许我保持有条件地包含layoutpage中的部分内容。在我看来,这只是一个更清晰的标记。此外,rootnav都会使用{% page %}标记来指示内容放置。

所以理想的情况下...

根布局

<html> 
<head>[common tags]</head> 
<body> 
    {% page %} 
</body> 
</html> 

导航布局

layout="root" 
== 
<nav>[markup]</nav> 
{% page %} 

因此,当一个页面引用root有我没有导航显示。但是,当页面引用nav{% page %}被注入到nav中并且nav + {% page %}的内容作为{% page %}内容被传递到root时。

希望额外的信息有帮助。

+2

我是不能确定你在'嵌套布局'中寻找什么,你能否更深入地解释它,并提供例子? – LukeTowers

+0

@LukeTowers查看问题更新。 – Jared

回答

1

当前不支持嵌套布局,但您可以使用placeholderspartials来完成此操作。

下面是我目前用于导航的一些示例。

布局/与-nav.htm:

description = "Layout with nav" 

[staticMenu nav] 
code = "header-nav" 
== 
{# Setup the navigation menus #} 
{% put headerNav %} 
    {% set hNavOptions = { 
     'submenus': true 
    } %} 
    {% partial "tmpl/nav-header" menu=nav options=hNavOptions %} 
{% endput %} 

{% partial "tmpl/header" %} 

    <!-- Content --> 
    <div id="layout-content"> 
     <div class="container"> 
      <div class="row"> 
       <div class="col-sm-12"> 
        {% page %} 
       </div> 
      </div> 
     </div> 
    </div> 

{% partial "tmpl/footer" %} 

布局/无-nav.htm:

description = "Layout without nav" 
== 
{% partial "tmpl/header" %} 

    <!-- Content --> 
    <div id="layout-content"> 
     <div class="container"> 
      <div class="row"> 
       <div class="col-sm-12"> 
        {% page %} 
       </div> 
      </div> 
     </div> 
    </div> 

{% partial "tmpl/footer" %} 

泛音/ TMPL/header.htm:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <title>{% placeholder page_title default %}{{ this.page.title }}{% endplaceholder %} | {{ app_name }}</title> 

     {% partial "meta/icons" %} 
     {% partial "meta/seo" %} 

     {% partial "meta/styles" %} 
    </head> 
    <body class="page-{{ this.page.url | slugify }} layout-{{ this.layout.id }}"> 
     <!-- Header --> 
     <header id="home" class="header-area"> 
      {% placeholder headerNav default %} 
       <!-- headerNav not defined in page layout. --> 
      {% endplaceholder %} 
     </header>