我有一个HTMLField
的模型,可以在管理员中使用TinyMCE控件进行编辑。但是,我希望能够根据正在编辑的模型实例为TinyMCE提供不同的选项。我怎么能这样做?
(例如,如果用户正在编辑其slug为SimplePage
的{{1}}实例,我希望TinyMCE使用默认的CSS文件,但是如果它编辑technologies
其slug是SimplePage
,我想使用不同的CSS文件。)
答案 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,
...
});