渲染的Django-CMS插件不同在不同的splaceholders /模板(Render Djan

2019-10-19 03:36发布

短版:我想有同样的cmsplugin在不同占位符使用不同的模板。 这可能吗? 或者,我应该去让我的自定义插件?

龙版本:使用Django和Django的CMS和使用cmsplugin-video-youtube插件,我已经在主页上的两个YouTube视频和他们使用的基金会4的网格系统,以一个堆叠,然后又在其下方,并在一定的风格浏览器的宽度的“临界点”,他们将并排侧。 这一切运作良好。

现在,我想添加不同的YouTube视频,一些不限数量的placeholder这是在不同的页面,这是一个不同的模板。 我想有他们呈现一个低于前等,并在浏览器宽度的某种“断裂点”,他们将是水平并排侧对,低于前一对等。

由于这些YouTube视频的内容是无限的,而不是预定义的,数量的,我不能使用网格系统。 我想我会用块网格系统。 这具有我创建元素<li>一个内部元件<u>的元素。 这就要求更改的模板cmsplugin-video-youtube元件来呈现那些<li>围绕YouTubes元件。 这里的问题是,如果我重写了这个插件模板,通过提供templates/cmsplugin-video-youtube/embed.html ,它也将覆盖它,改变它是在主页上这个插件的实例。 我喜欢他们,因为他们是。

所以我的想法是,这将是有益的压倒一切的一个插件模板只为特定的方式placeholder 。 这将让我指定YouTube的特定呈现placeholder我在其他页面,不影响该插件的情况下,在我的主页,这是我喜欢的,因为它们。

有没有这样的选项-覆盖插件的模板特定placeholder

否则,我认为这可能需要基于现有的自定义插件cmsplugin-video-youtube ,也许它的一个子类,我会承担,那么这将有我需要的模板,用<li>元素,这个其他网页。

一种不同的方法是尝试遍历插件实例的实例,并使其与整个<ul><li>身边的事,一个接一个。 我询问了这种做法 ,并根据一些答案我得到了,这似乎是不是最简单的路线。

什么是你的方法这一点,好吗?

我还没有收到答案。 请,即使是指针会是这样!

Answer 1:

我知道这个问题已经很老了。 。但希望任何人以同样的问题会发现这个有用。

纵观源代码为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



文章来源: Render Django-CMS plugins differently on different splaceholders/templates