Django CMS:仅在顶级插件的占位符中获取位置?

Django CMS:仅在顶级插件的占位符中获取位置?,django,django-cms,Django,Django Cms,我刚刚发现可以通过实例在占位符标记中获取插件的位置。在django cms模板中的占位符中获取位置() 但是,似乎如果这些插件有子插件,那么它们也会被计入位置。例如: placeholder -- plugin # pos: 1 -- child_plugin # pos: 2 -- child_plugin # pos: 3 -- plugin # pos: 4 -- child_plugin # pos: 5 -- plugin # pos: 6 pl

我刚刚发现可以通过
实例在占位符标记中获取插件的位置。在django cms模板中的占位符中获取位置()

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

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
  -- 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\u plugin plugin%}
呈现

django cms版本是3.1.3

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


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

这很奇怪,因为人们可能会想到以下几点:

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\u plugin
定义的一个问题?获得正确位置的my child插件要么以
TextPlugin
的形式呈现,要么以forloop的形式呈现,如下图所示(在
plugin\u的模板中,包含了\u children
):

我怀疑你的孩子不是真正的孩子


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

如何呈现您的子插件?它们是否嵌入到文本插件或“真实”子插件中,并使用
{%render\u plugin%}
render\u plugin标签呈现?在我的测试中,你想要的
#忽略的
得到了他们自己的,基于1的索引/位置?另外,使用了django cms版本??感谢你的帮助,我刚刚用信息更新了问题。我以完全相同的方式呈现它们(使用forloop)。所以这可能是
child\u插件的定义有问题吗?在这个定义中有什么我需要做(或不需要做)的特定事情吗?如果您使用{%render_plugin%}标记呈现它,子插件就是其中之一。所以我猜他们是真正的孩子,但你的数据库可能会弄乱。你从3.0更新了吗?(见下图,修复mptt)不,我没有升级。但我还是会重建这棵树,我希望这会有所帮助:)