“cms.plugins.snippet”(来自djangocms)被克隆以使用一些工具扩展它
emencia-cms-snippet的Python项目详细描述
这是一个“cms.plugins.snippet”(来自djangocms)的克隆,可以用一些工具来扩展它。
原始代码来自原始的DjangoCMS插件。
更改原始代码
此克隆尝试更改尽可能少的原始代码,实际上它们的区别是:
- 添加模板标记以直接使用模板中的片段,而不仅仅是来自CMS页面;
- 为HTML编辑器添加djangocodemirror的用法;
- 添加一个slug字段;
需要
- django 1.4至1.6;
- DjangoCMS版本2.3.6到3.0.x;
- djangocodemirror0.9.x;
在管理员中,html内容将使用djangocodemirror编辑器进行编辑。
安装
唯一需要做的是替换DjangoCMS设置中的cms.plugins.snippet,如下所示:
INSTALLED_APPS = ( 'cms', # Plugins ... #'cms.plugins.snippet', 'snippet', # the snippet plugin clone 'djangocodemirror', # the editor ... )
然后添加:
CODEMIRROR_SETTINGS = { 'cms_snippet': { 'mode': {'name': "jinja2", 'htmlMode': True}, 'lineWrapping': True, 'lineNumbers': True, 'search_enabled': True, 'embed_settings': True, 'add_jquery': True, 'lib_buttons_path': 'djangocodemirror/snippet_buttons.js', }, }
因为代码只是从一些插件中克隆出来的,所以所有的CMS都应该和原来的插件一样工作,你甚至应该把它添加到现有的安装中,而不丢失数据库,也不需要任何SycDB。
用法
模板标记
在模板中使用模板标记:
{% load snippet_tags %} {% snippet_fragment [Snippet ID or slug or instance] %}
像这样:
{% load snippet_tags %} {% snippet_fragment 42 %}
或者用鼻涕虫:
{% load snippet_tags %} {% snippet_fragment 'my-snippet' %}
第一个参数是必需的,您可以使用
- 代码段id;
- 片段slug;
- 代码段实例。
用作具有回退功能的模板块:
{% snippet_fragment 'my-snippet' or %} ... clumsy safe ... {% endsnippet_fragment %}
如果没有snippet instance/id/slug,将呈现回退模板。