我有一个模型HTMLField
,可以在管理员中使用 TinyMCE 控件进行编辑。但是,我希望能够根据正在编辑的模型实例为 TinyMCE 提供不同的选项。我怎样才能做到这一点?
(例如,如果用户正在编辑SimplePage
其 slug 的实例technologies
,我希望 TinyMCE 使用默认的 CSS 文件,但如果它编辑SimplePage
其 slug的实例ticker
,我想使用不同的 CSS 文件。)
我有一个模型HTMLField
,可以在管理员中使用 TinyMCE 控件进行编辑。但是,我希望能够根据正在编辑的模型实例为 TinyMCE 提供不同的选项。我怎样才能做到这一点?
(例如,如果用户正在编辑SimplePage
其 slug 的实例technologies
,我希望 TinyMCE 使用默认的 CSS 文件,但如果它编辑SimplePage
其 slug的实例ticker
,我想使用不同的 CSS 文件。)
我猜你Media
的 ModelAdmin 中有一个类,为管理员提供了额外的 JavaScript 和 CSS(就像这里)。你的 JavaScript 不知道当前对象的 slug,让我们改变它。
首先在您的模板目录中创建以下目录结构之一:“admin/ your-app
”用于应用程序或“admin// your-app
”your-model
仅用于特定模型(请参阅 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
块以使用您的对象 slug(original
是您的对象)设置一个 JavaScript 变量。
现在调整执行该操作的 JavaScript 文件tinyMCE.init
以使用基于 JavaScript 变量的不同 CSS 文件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,
...
});