【问题标题】:Django-CMS: get_position_in_placeholder in top-level plugins only?Django-CMS:仅顶级插件中的 get_position_in_placeholder?
【发布时间】:2015-12-07 17:21:39
【问题描述】:

我刚刚发现可以通过 django-cms 模板 (thanks to this question) 中的 instance.get_position_in_placeholder 获取插件在占位符标记中的位置。

但似乎如果这些插件有子插件,那么它们也被计入该位置。示例:

placeholder
  -- plugin  # pos: 1
    -- child_plugin # pos: 2
    -- child_plugin # pos: 3
  -- plugin # pos: 4
    -- child_plugin # pos: 5
  -- plugin # pos: 6

我正在寻找的是一个计数器,它只计算占位符直接子级的插件。示例:

placeholder
  -- plugin  # pos: 1
    -- child_plugin # ignored
    -- child_plugin # ignored
  -- plugin # pos: 2
    -- child_plugin # ignored
  -- plugin # pos: 3

我使用占位符标签来呈现插件:

{% placeholder general_content %}

子插件使用{% render_plugin plugin %} 渲染。

django-cms 版本是 3.1.3。

这是 DOM 中不需要的行为的屏幕截图(2 和 4 是子插件):

django-cms 模板中有这样的方法或属性吗?

【问题讨论】:

  • 你如何渲染你的子插件?它们是否嵌入在 TextPlugin 或“真正的”子插件中,使用 {% render_plugin plugin %} render_plugin 标签呈现?在我的测试中,你想要的 # ignored 获得自己的、基于 1 的索引/位置?
  • 还有,用的django-cms版本??
  • 感谢您与我们联系,我刚刚用信息更新了问题。

标签: django django-cms


【解决方案1】:

这很奇怪,正如人们所期望的那样:

placeholder
  -- plugin_with_children # pos: 1
    -- child_plugin # pos: 1
    -- child_plugin # pos: 2
  -- plugin_with_children # pos: 2
    -- child_plugin # pos: 1
  -- plugin # pos: 3

我可以确认这对我有用,如上所示,使用 django-cms 3.1.3 和 3.2。那么,这可能是child_plugin 定义的问题?我获得正确位置的子插件要么在TextPlugin 中呈现,要么在forloop 中呈现,如下所示(在plugin_with_children 的模板中):

{% for plugin in instance.child_plugin_instances %}
    {% render_plugin plugin %}
{% endfor %}

我怀疑你的孩子不是真正的孩子? ;-)

如果是:有一个管理命令,它修复了旧 MPTT 插件/页面树的问题(您是从 3.0 更新的吗?),也许错误就在那里。 “位置”在数据库中,因此您可能需要直接检查您的数据库。此外,重新添加内容可能会有所帮助(只是为了确定,请注意数据库等...)。

【讨论】:

  • 我以完全相同的方式渲染它们(使用 forloop)。所以这可能是child_plugin 定义的问题?在该定义中,我需要做什么(或不做什么)?
  • 如果你使用 {% render_plugin %} 标签渲染它,一个子插件就是一个。所以我猜他们是真正的孩子,但你的数据库可能搞砸了。你是从3.0更新的吗? (见docs.django-cms.org/en/develop/upgrade/3.1.html,底部,fix-mptt)
  • 不,我没有升级。但无论如何我都会重建这棵树,我希望这会有所帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2014-11-25
  • 2018-03-28
  • 2015-09-16
  • 2021-01-11
  • 2013-09-09
  • 2011-06-23
相关资源
最近更新 更多