一个django-cms插件,它通过简单的包装功能扩展和替换了附带文本插件。
项目描述
一个 Django CMS 插件,通过简单的包装功能扩展并替换了附带的文本插件。
描述
此插件为 django-cms 附带的文本插件添加了简单的包装功能。通过添加此插件,编辑器可以选择预定义的包装器,它被渲染为当前内容的模板。这特别适用于与预定义网格(如 http://960.gs)一起工作。
此插件完全兼容默认文本插件,并提供所有当前功能。因此,应将其用于替换默认文本插件。它可与 WYEditor 一起使用,也可以与 TinyMCE 编辑器一起使用。
依赖项
Django >= 1.3
django-cms >= 2.3
South >= 0.7
安装
将插件添加到 INSTALLED_APPS
INSTALLED_APPS = ( ... 'cmsplugin_text_wrapper', # alternative to 'cms.plugins.text' ... )
如果已配置,请从 INSTALLED_APPS 中删除 'cms.plugins.text'
然后运行 manage.py migrate cmsplugin_text_wrapper 以更新您的数据库表 cmsplugin_text。这添加了一个名为 wrapper 的列并保持一切兼容。
如果您设置了 DjangoCMS 的新实例,迁移脚本将查找名为 cmsplugin_text 的表,如果不存在,则创建它。
重新启动您的应用程序。您可以使用所有文本字段,就像以前一样。然后它们被标记为不使用任何包装器,并按以前的方式渲染。
用法
在您的 settings.py 中添加一个元组元组,例如
CMS_TEXT_WRAPPERS = ( ('<wrapper name>', { 'render_template': '<template name>', 'extra_context': <a dictionary with extra context to render the template> }), ... )
<wrapper name> 是一个唯一的名称,用于识别包装器。每个包装器的元组的第二部分包含以下键的目录:
render_template 是在渲染此文本插件内容时要使用的模板的名称。此模板可以包含一些可选的 HTML 标签,但必须包含以下模板变量:
{{ body|safe }}
它将被编辑器的内容替换。
如果缺少 render_template,则此文本插件的内容将像默认文本插件渲染其内容一样渲染。
extra_context 是一个可选的字典,包含任何类型的数据。用于渲染模板的上下文将使用此额外上下文进行填充。
此插件不会更改管理界面,除了在文本编辑器顶部有一个下拉框。使用默认值是完全合法的,在这种情况下,文本包装器插件的行为与 django-cms 一起提供的默认文本插件完全相同。
960像素网格系统
最广泛使用的网格系统之一被称为 http://960.gs/ 此插件与该网格系统很好地配合,但不依赖于它。本文档展示了如何将此插件与 960.gs 集成,但它也可能与 Twitter Bootstrap 一起完美工作。
提供的文本插件的问题在于,编辑器可以向占位符添加文本、图像等,但他无法控制给定容器的布局。通常,这是一种期望的行为,以强制执行一致的布局,但有时这很令人烦恼,因为必须创建太多专门的模板。
例如,编辑器想要使用 960 网格系统中的 12 列。现在,对于行和列的所有可能的组合,必须创建一个特殊的模板。这可能导致如下模板:
<div class="container_12"> <div class="grid_9">{% placeholder "g1" %}</div><div class="grid_3">{% placeholder "g2" %}</div> <div class="grid_6">{% placeholder "g3" %}</div><div class="grid_6">{% placeholder "g4" %}</div> <div class="grid_4">{% placeholder "g5" %}</div><div class="grid_4">{% placeholder "g6" %}</div><div class="grid_4">{% placeholder "g7" %}</div> </div>
在此,每个网格-div 都有自己的占位符。如果编辑器需要许多类似上面的布局,那么维护所有可能的行和列的组合可能很困难。
此 cmsplugin-text-wrapper 为 CMS 页面的编辑器提供了一个灵活且简洁的方法,以便添加尽可能多的不同行,以及尽可能多的不同列。这些列中的每一列都可以有自己的宽度。
如果强制实施此网格系统,编辑器可以控制布局的某些部分,而无需与 div 标签或片段纠缠。
从 http://github.com/nathansmith/960-Grid-System/zipball/master 下载文件 reset.css、text.css 和 960.css 并将它们添加到您的样式表中。
在您的模板目录中,创建一个名为 container-12.html
... other stuff goes here <div class="container_12"> {% placeholder "Container Content" %} </div> ... more stuff goes here
并将其添加到您的 CMS_TEMPLATES 元组中。
在您的模板目录中,创建另一个名为 grid.html
<div class="{{ grid_class }} {{extra_classes}}"> {{ body|safe }} </div>
并将其添加到不同的配置中,您的 CMS_TEXT_WRAPPERS 元组中
CMS_TEXT_WRAPPERS = ( ('Grid 3', { 'render_template': 'grid.html', 'extra_context': {'grid_class': 'grid_3'} }), ('Grid 6', { 'render_template': 'grid.html', 'extra_context': {'grid_class': 'grid_6'} }), ('Grid 12', { 'render_template': 'grid.html', 'extra_context': {'grid_class': 'grid_12'} }), ... and more ... ) CMS_TEXT_WRAPPER_CLASSES = ('alpha', 'omega',)
现在,在 CMS 管理后端选择类型为 Text 的插件后,将添加两个附加字段。第一个是一个名为 Wrap into 的下拉框,编辑器可以从中选择一个网格。第二个是复选框列表,每个包装器类一个。
版本历史
0.5:最终发布版本,可无缝替换 cmsplugin-text。
0.6:添加了 MultipleSelectField 以向包装器添加额外的类。
text-plugin-ng
从 https://github.com/KristianOellegaard/cmsplugin-text-ng 下载。
text-plugin-ng 不打算替换默认文本插件。它是 Django CMS 一起提供的文本插件的附加组件,并且与它不兼容。因此,编辑器可以选择两种文本插件:Django CMS 一起提供的文本插件和 cmsplugin-text-ng。然后,对于每个占位符,他必须从这两个中选择一个。
此外,编辑器还必须维护两个额外的表格,用于命名模板。
django-cms-columns
从https://github.com/philomat/django-cms-columns下载
django-cms-columns提供了对网格系统[YAML](http://www.yaml.de/en/documentation/practice/subtemplates.html)和[Blueprint](http://www.blueprintcss.org/)的支持,形式为内置模板。
看起来不再受到支持了。
项目详情
cmsplugin-text-wrapper-0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5558f1bb3a35bd29f279c46ae93b2645972cf1a76062d5f101f8fdb9390e7718 |
|
MD5 | 116fb74389c5b6dd4a2d4656a7e75c5e |
|
BLAKE2b-256 | 7562471ada3bab6195953a4fc6e2637d1ce92ec565b2eda566f40cd14f06c674 |