Плагины¶
См.также
CMS Plugins - это многоразовые издатели контента, которые могут быть вставлены в страницы django CMS (или вообще в любой контент, который использует django CMS placeholders). Они позволяют публиковать информацию автоматически, без дополнительного вмешательства.
Это означает, что опубликованный вами веб-контент, каким бы он ни был, всегда поддерживается в актуальном состоянии.
Это как магия, только быстрее.
Если вам не посчастливится обнаружить, что ваши потребности могут быть удовлетворены встроенными плагинами или множеством доступных сторонних плагинов, вам придется написать свой собственный плагин для CMS.
*Зачем вам нужно писать плагин?¶
Плагин - это самый удобный способ интегрировать содержимое из другого приложения Django в страницу django CMS.
Например, предположим, вы разрабатываете сайт для звукозаписывающей компании на django CMS. Возможно, вы захотите разместить на главной странице сайта блок «Последние релизы».
Конечно, вы можете время от времени редактировать эту страницу и обновлять информацию. Однако разумная звукозаписывающая компания будет управлять своим каталогом и в Django, а это значит, что Django уже знает, какие новинки вышли на этой неделе.
Это прекрасная возможность использовать эту информацию, чтобы облегчить себе жизнь - все, что вам нужно сделать, это создать плагин django CMS, который вы можете вставить на свою домашнюю страницу, и оставить его выполнять за вас работу по публикации информации о последних релизах.
Плагины являются повторно используемыми. Возможно, ваша звукозаписывающая компания выпускает серию переизданий фундаментальных швейцарских панк-пластинок; на странице вашего сайта, посвященной этой серии, вы можете вставить тот же плагин, настроенный немного по-другому, который будет публиковать информацию о последних новых релизах в этой серии.
Компоненты плагина¶
Плагин django CMS фундаментально состоит из трех компонентов, которые соответствуют знакомой схеме Django «модель-представление-шаблон»:
Что |
Функция |
подкласс |
---|---|---|
модель (если требуется) |
конфигурация экземпляра плагина |
|
просмотреть |
логика отображения |
|
шаблон |
рендеринг |
– |
CMSPluginBase
¶
Плагин model, подкласс cms.models.pluginmodel.CMSPlugin
, является необязательным.
У вас может быть плагин, который не нужно настраивать, потому что он делает только одну вещь.
Например, у вас может быть плагин, который публикует информацию только о самой продаваемой записи за последние семь дней. Очевидно, что это не будет очень гибким - вы не сможете использовать тот же плагин для публикации информации о самом продаваемом релизе за последний месяц.
Обычно полезно иметь возможность конфигурировать свой плагин, а для этого требуется модель.
CMSPlugin
¶
cms.plugin_base.CMSPluginBase
фактически является подклассом django.contrib.admin.ModelAdmin
.
Поскольку CMSPluginBase
подклассы ModelAdmin
несколько важных ModelAdmin
опций также доступны разработчикам плагинов CMS. Эти опции часто используются:
exclude
fields
fieldsets
form
formfield_overrides
inlines
radio_fields
raw_id_fields
readonly_fields
Однако обратите внимание, что не все опции ModelAdmin
эффективны в плагине CMS. В частности, любые опции, которые используются исключительно ModelAdmin
’s changelist
“, не будут иметь никакого эффекта. К таким и другим заметным опциям, которые игнорируются CMS, относятся:
actions
actions_on_top
actions_on_bottom
actions_selection_counter
date_hierarchy
list_display
list_display_links
list_editable
list_filter
list_max_show_all
list_per_page
ordering
paginator
prepopulated_fields
preserve_fields
save_as
save_on_top
search_fields
show_full_result_count
view_on_site