DjangoCMS добавить кнопку childplugin - PullRequest
0 голосов
/ 15 января 2019

У меня есть люди PeoplePlugin, которые могут иметь множество дочерних плагинов PersonPlugin. Я хочу добавить в режим редактирования кнопку (Добавить дочерний плагин) к шаблону PeoplePlugin, которая позволяет мне открывать модальное окно для создания нового PersonPlugin, так же, как на боковой панели инструментов. Это возможно? Спасибо.

enter image description here

1 Ответ

0 голосов
/ 16 января 2019

Django CMS предоставляет тег шаблона, позволяющий редактировать внешний вид ваших моделей, обычно интегрируемый через хуки приложений в CMS.

Когда речь идет о создании экземпляров модели, {% render_model_add my_model %} будет отображать значок + на странице ( документы ), например;

<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>
...