3

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

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

4

1 回答 1

1

我猜你Media的 ModelAdmin 中有一个类,为管理员提供了额外的 JavaScript 和 CSS(就像这里)。你的 JavaScript 不知道当前对象的 slug,让我们改变它。

首先在您的模板目录中创建以下目录结构之一:“admin/ your-app”用于应用程序或“admin// your-appyour-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,
    ...
});
于 2010-02-25T20:57:37.073 回答