模板可以嵌套在OctoberCMS中吗?

时间:2017-03-07 22:13:02

标签: twig octobercms

我已经开始看看十月了,虽然我能够构建一个默认布局,并且有条件地在需要的地方包含部分内容。我宁愿窝布局。

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

这可能吗?

修改 我正在寻找替换 ExpressionEngine 。在EE中,我可以使用root标记html>head+body布局。然后我可以在导航中添加nav布局,但将root布局引用为ITS布局。因此,您最终会使用root引用的nav,或者可以被任何[page]直接引用(如果不需要/不需要导航)。嵌套布局只允许我有条不紊地保留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

希望附加信息有用。

1 个答案:

答案 0 :(得分: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>