简短版本:我希望使用相同类型的cmsplugin在不同的占位符中使用不同的模板。这可能吗?或者,我应该去制作我的自定义插件吗?
长版:使用Django和Django-CMS并使用cmsplugin-video-youtube
插件,我在主页上有两个youtube视频,它们使用Foundation 4的网格系统进行样式设置,然后在其下方堆叠一个,然后再覆盖另一个在浏览器宽度的某个“突破点”,它们将是并排的。这一切都运作良好。
现在,我想在不同的placeholder
中添加一些不限数量的YouTube视频,这些视频位于不同的页面中,这是不同的模板。我希望它们在前者之下呈现一个,依此类推,在浏览器宽度的某个“断点”上,它们将是水平并排对,一对低于前者,依此类推。
由于这些YouTube视频元素是无限制的,而非预定义的数字,因此我无法使用网格系统。我想我会使用block grid系统。这让我在<li>
元素中创建了<u>
个元素。这要求我更改cmsplugin-video-youtube
元素的模板,以在YouTubes周围呈现这些<li>
元素。这个问题是,如果我覆盖这个插件的模板,通过提供templates/cmsplugin-video-youtube/embed.html
,它也会覆盖它并为主页中的这个插件的实例改变它。而且我喜欢它们。
所以我认为,只为特定的placeholder
覆盖一个插件的模板是有益的。这样我就可以在我的其他页面中的特定placeholder
中指定YouTube的渲染,而不会影响我的主页中此插件的实例,我喜欢它们。
是否有这样的选项 - 覆盖特定placeholder
的插件模板?
否则,我认为这可能需要一个基于现有cmsplugin-video-youtube
的自定义插件,也许是它的一个子类,我认为,那将有我需要的模板,{{ 1}}元素,用于其他页面。
另一种方法是尝试迭代插件实例的实例,并逐个呈现它们周围的整个<li>
事物。 I've inquired about this approach根据我得到的一些答案,它似乎不是最简单的路线。
请问您的方法是什么?
我还没有收到回复。拜托,即使指针也是如此!
答案 0 :(得分:2)
我知道这个问题很老了。但希望任何有相同问题的人都会觉得这很有用。
查看CMSPluginBase的源代码:
https://github.com/divio/django-cms/blob/develop/cms/plugin_base.py
context['placeholder'] = placeholder
占位符在render方法中作为上下文传递。
因此,在模板中,您可以使用它来呈现不同的输出。一个很好的例子: