我有一个模型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,
...
});