跳转到主要内容

一个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.csstext.css960.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 (14.5 kB 查看哈希值)

上传时间

由支持