DjangoCMS添加childplugin按钮

时间:2019-01-15 14:14:06

标签: python django django-cms

我有人PeoplePlugin,可以有许多子插件PersonPlugin。我想在PeoplePlugin模板中添加一个按钮(添加子插件)到编辑模式,这使我可以打开模式以创建新的“ PersonPlugin”,方法与侧面工具栏中的方法相同。那可能吗?谢谢。

enter image description here

1 个答案:

答案 0 :(得分:1)

Django CMS提供了一个模板标记,旨在允许对模型进行前端编辑,通常通过CMS中的应用挂钩将其集成。

例如,在创建模型实例时,{% render_model_add my_model %}将在页面(docs)中呈现一个+图标;

<h3>
    <a href="{{ my_model.get_absolute_url }}">{{ my_model.title }}</a>
    {% render_model_add my_model %}
</h3>

这将呈现一个带有您的模型标题的h3,作为它的链接(假设它是局部视图)。然后是在编辑模式下的+,您可以双击以创建my_model的实例。如果您不喜欢+图标,也可以使用render_model_add_block,它允许自定义标记形成指向添加表单的链接。

这对于应用程序内的模型而言是完美的选择,但是如果用于插件,则可能会出现问题,因为这种简单的实现不会创建带有占位符链接或通过占位符创建插件时可能会获得的其他东西的插件。 / p>

将前端编辑带入模型的另一个元素是{% render_model my_model "attr" %}docs),它将在用户的上下文中呈现该模型实例的属性,如果您处于编辑模式,则允许您可以双击它来编辑对象。

这种联系方式的例子就是联系信息模型;

{% render_model_block contact_info %}
    <h2>{{ instance.contact_modal_heading }}</h2>
    <ul>
        <li>
            <strong>Phone:</strong> <a href="tel:{{ instance.phone }}">{{ instance.phone }}</a>
        </li>
        <li>
            <strong>Email:</strong> <a href="mailto:{{ instance.email }}">{{ instance.email }}</a>
        </li>
    </ul>
{% endrender_model_block %}

<div>
    {% render_placeholder contact_info.contact_content 500 %}
</div>