【问题标题】:DjangoCMS add childplugin buttonDjangoCMS 添加子插件按钮
【发布时间】:2019-01-15 14:14:06
【问题描述】:

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

【问题讨论】:

  • 看看render_model_add,它允许你创建模型实例; docs.django-cms.org/en/latest/reference/…
  • 对此的另一个说明。 render_model_add 是您正在寻找的功能,但它不是为插件设计的。它适用于通过应用程序挂钩引入的您自己的模型。它为传统上通过后端编辑的应用程序带来了前端编辑。使用 CMS 插件,如果您正在查看父插件,您已经可以切换到编辑模式并访问占位符以相对轻松地添加子插件。
  • @markwalker_ 非常感谢!它对我有用!
  • 在这种情况下,我会写一个答案来解释它是如何工作的!

标签: python django django-cms


【解决方案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,它允许自定义标记形成添加表单的链接。

这对于应用程序中的模型来说是完美的,但如果用于插件可能会出现问题,因为这种简单的实现不会创建带有指向占位符的链接的插件,或者可能是您在通过占位符创建插件时获得的其他内容。

另一个为您的模型带来前端编辑的元素是{% 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>

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 2016-12-15
    • 2013-04-07
    • 1970-01-01
    • 2017-10-19
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多