django-tinymce:为不同实例使用不同选项
我有一个模型里面有一个 HTMLField
,可以在管理后台用 TinyMCE 编辑。不过,我想根据正在编辑的模型实例,给 TinyMCE 提供不同的选项。我该怎么做呢?
(比如说,如果用户正在编辑那个 slug 是 technologies
的 SimplePage
实例,我希望 TinyMCE 使用默认的 CSS 文件;但如果是编辑 slug 是 ticker
的 SimplePage
,我就想用一个不同的 CSS 文件。)
1 个回答
1
我猜你在你的ModelAdmin里有一个Media
类,里面包含了额外的JavaScript和CSS,用于管理后台(就像这里所示)。不过,你的JavaScript并不知道当前对象的slug,我们来解决这个问题。
首先,在你的模板目录中创建以下目录结构之一:如果是一个应用,就用"admin/你的应用
";如果是特定模型,就用"admin/你的应用
/你的模型
"(详细信息可以查看Django文档)。
然后在这个目录下创建一个名为"change_form.html"的文件,并在里面放入类似下面的内容:
{% extends "admin/change_form.html" %}
{% block extrahead %}
<script type="text/javascript" charset="utf-8">
var MYAPP_objectSlug = "{{ original.slug|escapejs }}";
</script>
{{ block.super }}
{% endblock %}
这样做会扩展管理后台的常规"change_form.html",并在extrahead
区块中设置一个JavaScript变量,用于你的对象slug(original
就是你的对象)。
接下来,调整那个执行tinyMCE.init
的JavaScript文件,让它根据JavaScript变量MYAPP_objectSlug
使用不同的CSS文件。
if (MYAPP_objectSlug == "ticker"){
var MYAPP_cssFile = "../css/special.css"; // change to your path
} else {
var MYAPP_cssFile = "../css/default.css"; // change to your path
}
tinyMCE.init({
...
content_css : MYAPP_cssFile,
...
});