如何循环遍历 django cms 3.5.3 中模板上的自定义插件数据
How to loop over custom plugin data on the template in django cms 3.5.3
我正在尝试实现一个使用 RSS 源的网站。
我的用例是能够一次显示一个 RSS 提要,然后可能在 5 秒后循环到下一个。这些 RSS 提要需要显示在同一个占位符上。
我是 django cms 的新手,如果您需要更多信息,请告诉我。
我用谷歌搜索了很多,但我只能看到如何从前端添加插件,它们都会自动显示在占位符内。
或者修改自定义插件class的render方法来显示你想要的。
但是我想以连续的方式一次显示除一个以外的所有内容
@plugin_pool.register_plugin
class ExternalArticlePlugin(CMSPluginBase):
model = ExternalArticle
name = _("External article")
render_template = "external_article.html"
cache = False
def render(self, context, instance, placeholder):
context = super(ExternalArticlePlugin, self).render(
context, instance, placeholder
)
return context
我希望在我的占位符中一次显示一个 RSS 提要。
这些提要是指向包含更多信息的实际网页的链接。
一种方法是在 ExternalArticle 模型中编写一个函数 random_rss_feed_url()
,它呈现一个随机 rss 实例。
model.py
class ExternalArticle(models.Model):
def random_rss_feed_link(self):
return ExternalArticle.objects.order_by('?')[0].link
然后你在插件中做 external_article.html:
{{ instance.random_rss_feed_link }}
已编辑:
如果您想在不重新加载页面的情况下自动更改,那么您需要在模板的 javascript 中使用类似的内容:
var rss_links = ['link_1', 'link_2', 'link_3'];
setInterval(function() {
// take random rss link
var random_link = rss_links[Math.floor(Math.random()*rss_links.length)];
// change the link
document.getElementById('rss_link_element').href = random_link;
}, 5000);
我正在尝试实现一个使用 RSS 源的网站。 我的用例是能够一次显示一个 RSS 提要,然后可能在 5 秒后循环到下一个。这些 RSS 提要需要显示在同一个占位符上。 我是 django cms 的新手,如果您需要更多信息,请告诉我。
我用谷歌搜索了很多,但我只能看到如何从前端添加插件,它们都会自动显示在占位符内。 或者修改自定义插件class的render方法来显示你想要的。 但是我想以连续的方式一次显示除一个以外的所有内容
@plugin_pool.register_plugin
class ExternalArticlePlugin(CMSPluginBase):
model = ExternalArticle
name = _("External article")
render_template = "external_article.html"
cache = False
def render(self, context, instance, placeholder):
context = super(ExternalArticlePlugin, self).render(
context, instance, placeholder
)
return context
我希望在我的占位符中一次显示一个 RSS 提要。 这些提要是指向包含更多信息的实际网页的链接。
一种方法是在 ExternalArticle 模型中编写一个函数 random_rss_feed_url()
,它呈现一个随机 rss 实例。
model.py
class ExternalArticle(models.Model):
def random_rss_feed_link(self):
return ExternalArticle.objects.order_by('?')[0].link
然后你在插件中做 external_article.html:
{{ instance.random_rss_feed_link }}
已编辑:
如果您想在不重新加载页面的情况下自动更改,那么您需要在模板的 javascript 中使用类似的内容:
var rss_links = ['link_1', 'link_2', 'link_3'];
setInterval(function() {
// take random rss link
var random_link = rss_links[Math.floor(Math.random()*rss_links.length)];
// change the link
document.getElementById('rss_link_element').href = random_link;
}, 5000);