django-tinymce:为不同的实例使用不同的选项

时间:2010-02-22 12:37:38

标签: python django tinymce django-tinymce

我有一个HTMLField的模型,可以在管理员中使用TinyMCE控件进行编辑。但是,我希望能够根据正在编辑的模型实例为TinyMCE提供不同的选项。我怎么能这样做?

(例如,如果用户正在编辑其slug为SimplePage的{​​{1}}实例,我希望TinyMCE使用默认的CSS文件,但是如果它编辑technologies其slug是SimplePage,我想使用不同的CSS文件。)

1 个答案:

答案 0 :(得分:1)

我猜您的ModelAdmin中有一个Media类,其中包含管理员(like here)的其他JavaScript和CSS。你的JavaScript不知道当前对象的slug,让我们改变它。

首先在模板目录中创建以下目录结构之一:“admin / your-app”表示应用程序或“admin / your-app / your-model”仅适用于特定型号( see the Django documentation)。

然后在该目录中创建一个文件“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块以使用对象slug设置JavaScript变量(original是您的对象)。

现在调整执行tinyMCE.init的JavaScript文件以使用不同的CSS文件  关于JavaScript变量MYAPP_objectSlug

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,
    ...
});