2 模板和占位符

2.1 模板

可以使用 HTML 模板来定制网站外观、定义占位符标记要管理的内容,以及使用特殊标签生成菜单等。

可以使用不同的格式或内置组件定义多个模板,然后根据需要为每个页面选择模板。一个页面的模板总是可被其他页面使用。

网站模板位于 mysite/templates

默认的,网站页面使用 fullwidth.html 模板,即列举在项目 settings.pyCMS_TEMPLATES 元组的第一个。

CMS_TEMPLATES = (
    ## Customize this
    ('fullwidth.html', 'Fullwidth'),
    ('sidebar_left.html', 'Sidebar Left'),
    ('sidebar_right.html', 'Sidebar Right')
)

2.2 占位符

占位符定义 HTML 模板的一部分,然后在渲染网页的时候使用数据库的内容填充它。通过使用 django CMS 的前端的编辑机制(使用 Django 的模板标签)编辑网页内容。

fullwidth.html 包含一个占位符 {% placeholder "content" %}

fullwidth.html 还有一个占位符 {% load cms_tags %}cms_tags 是需要的模板标签库。

可以参考 Django 文档 查看更多关于 Django 的模板标签。

fullwidth.html{% block content %} 部分增加一些占位符。比如:

{% block content %}
  {% placeholder "feature" %}
  {% placeholder "content" %}
  {% placeholder "splashbox" %}
{% endblock content %}

如果切换到结构模式,看以看到新的可用的占位符:FeatureSplashbox

2.3 静态占位符

静态占位符可以在网站的多个位置展示相同的内容。静态占位符大多数行为类似普通占位符,但是当创建一个静态占位符并增加内容,它会在全局保存。即使从一个模板删除这个静态占位符,也可以之后重用。

比如,增加一个 footer 到所有的页面。因为我们想要 footer 出现在每个页面,应该增加到基础模板(mysite/templates/base.html)。放置在 HTML <body> 元素的末尾:

        <footer>
            {% static_placeholder 'footer' %}
        </footer>

        {% render_block "js" %}
    </body>
</html>

保存模板文件,返回到浏览器。刷新任一页面,在结构模式可以看到新的静态占位符。

注意:为了减少界面的凌乱,静态占位符的插件默认会被隐藏。可点击展开。

如果按照正常方式增加内容到新的占位符,你会看到它出现在网站的其他页面。

2.4 渲染菜单

使用 show_menu 渲染模板中的菜单。

使用 show_menu 的模板必须首先加载 CMS 的 menu_tags 库:

{% load menu_tags %}

我们在 mysite/templates/base.html 使用的菜单:

<ul class="nav">
    {% show_menu 0 100 100 100 %}
</ul>

这个选项控制展示在菜单树的网站层级。

相关