【问题标题】:Django CMS place holder is not displayingDjango CMS 占位符未显示
【发布时间】:2015-03-16 07:01:36
【问题描述】:

我尝试在自定义 cms 插件中呈现占位符。由于某种原因,我可以看到在 DOM 中创建了占位符标记,但是当我切换到编辑模式时,我在任何地方都看不到占位符。我无法在该占位符中创建任何插件。

代码如下:

models.py

class TabItem(CMSPlugin):
    tab_name = models.CharField(max_length=8)
    place_holder = PlaceholderField("place_holder_name")

cms_plugins.py

class TabItemPlugin(CMSPluginBase):
    module = _("c2ms_module_information_tab")
    model = TabItem
    name = _("Tab Item")
    render_template = "c2ms_module_information_tab/tab.html"
    allow_children = True

    def render(self, context, instance, placeholder):
        context.update({
            'instance': instance,
            'placeholder': placeholder,
        })
        return context

模板:

{% load cms_tags staticfiles sekizai_tags placeholder_tags %}
<a href="#">{{ instance.tab_name|safe }}</a>
<div class="expanded">
    {% render_placeholder instance.place_holder "640" %}
</div>

【问题讨论】:

标签: python django django-cms


【解决方案1】:

我相信您的问题是您正在尝试将占位符创建为CMSPlugin。插件位于占位符中,但我从未见过插件包含占位符。

然后我假设您尝试做的是在基本模板上设置一个占位符,该模板设置为显示您的 TabItem 插件,而该插件又旨在呈现另一个占位符。

我没有写出来,但我相信你应该做的是这样的事情;

models.py;

from django.db import models

from cms.models import CMSPlugin
from cms.models.fields import PlaceholderField


class TabItem(models.Model):
    tab_name = models.CharField(max_length=8)
    placeholder = PlaceholderField("place_holder_name")


class TabPlugin(CMSPlugin):
    tab_name = models.CharField(max_length=8)

admin.py;

from django.contrib import admin

from cms.admin.placeholderadmin import PlaceholderAdmin

from .models import TabItem


class TabItemAdmin(PlaceholderAdmin):
    pass

admin.site.register(TabItem, TabItemAdmin)

您可以将自定义占位符添加到模板中,然后再呈现您的插件。至少这是我对文档的理解 - Placeholders outside the CMS

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 2013-12-28
    • 2017-12-24
    • 2013-10-08
    • 2012-11-02
    • 2013-08-25
    • 2019-08-17
    • 2015-05-20
    • 2014-08-31
    相关资源
    最近更新 更多