2 模板和占位符
2.1 模板
可以使用 HTML 模板来定制网站外观、定义占位符标记要管理的内容,以及使用特殊标签生成菜单等。
可以使用不同的格式或内置组件定义多个模板,然后根据需要为每个页面选择模板。一个页面的模板总是可被其他页面使用。
网站模板位于 mysite/templates
。
默认的,网站页面使用 fullwidth.html
模板,即列举在项目 settings.py
的 CMS_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 %}
如果切换到结构模式,看以看到新的可用的占位符:Feature
和 Splashbox
。
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>
这个选项控制展示在菜单树的网站层级。