1

Краткая версия: Я хотел бы иметь такой же тип cmsplugin, чтобы использовать разные шаблоны в разных заполнителях. Это возможно? Или я должен пойти и сделать свой собственный плагин?Render Django-CMS плагины по-разному на разных сайтах/шаблонах

Длинная версия: с использованием Django и Django-CMS и с использованием плагина cmsplugin-video-youtube у меня есть два видеоролика на домашней странице, и они стилизованы с использованием сетчатой ​​системы Foundation 4, которая будет складываться одна, а затем другая под ней и на определенном «точка прерывания» ширины браузера, они будут бок о бок. Все это хорошо работает.

Теперь я хотел бы добавить неограниченное количество видео YouTube в другом placeholder, который находится на другой странице, которая отличается от другого шаблона. И я хотел бы, чтобы они отображали один ниже первого и так далее и на определенной «точке разлома» ширины браузера, они будут горизонтальными бок о бок, одна пара ниже первой и так далее.

Поскольку эти видеоэлементы YouTube имеют неограниченный, не предопределенный номер, я не могу использовать сетку. Я решил, что воспользуюсь системой block grid. Это позволило мне создать элементы как <li> элементов внутри элемента <u>. Для этого нужно изменить шаблон для элемента cmsplugin-video-youtube, чтобы отобразить те элементы <li> вокруг YouTubes. Проблема в том, что если я переопределю шаблон для этого плагина, предоставив templates/cmsplugin-video-youtube/embed.html, он также переопределит его и изменит его для экземпляров этого плагина, которые находятся на домашней странице. И я люблю их такими, какие они есть.

Так что я думал, что было бы полезно иметь способ переопределить шаблон для плагина только для определенного placeholder. Это позволит мне указать рендеринг YouTube в определенном placeholder на моей другой странице и не повлиять на экземпляры этого плагина на моей домашней странице, которые мне нравятся, как они есть.

Есть ли такая опция - переопределить шаблон плагина для определенного placeholder?

В противном случае, я думал, что это может потребовать пользовательский плагин, который основан на существующем cmsplugin-video-youtube, возможно, подкласс этого, я бы предположить, что бы тогда шаблон, который я требую, с <li> элементов, для этого другой страница.

Другой подход состоял бы в том, чтобы попытаться выполнить итерацию по экземплярам экземпляра плагина и поочередно отображать их вокруг объекта <ul><li>. I've inquired about this approach и согласно некоторым ответам, которые я получил, это, казалось бы, не самый простой маршрут.

Каким будет ваш подход к этому, пожалуйста?

Я еще не получил ответа. Пожалуйста, даже указатель был бы чем-то!

ответ

2

Я знаю, что этот вопрос очень старый. но мы надеемся, что любой человек с такой же проблемой найдет это полезным.

Глядя на исходный код для CMSPluginBase:

https://github.com/divio/django-cms/blob/develop/cms/plugin_base.py

context['placeholder'] = placeholder 

Заполнитель передается в качестве контекста в методе визуализации.

Итак, в шаблоне вы можете использовать это для рендеринга различных выходных данных. Хорошим примером может служить:

https://github.com/stefanfoulis/cmsplugin-filer/blob/develop/cmsplugin_filer_image/templates/cmsplugin_filer_image/plugins/image/default.html