Django CMS 限制某些组的 placeholders/plugins 视图

Django CMS restrict view of placeholders/plugins for certain groups

我想知道是否有 django-cms 内置方法 show/not 为用户显示占位符或插件,具体取决于他们的相关组。

例如:我有一个电子商务网站,我想在产品页面的侧边栏占位符中显示一个特价插件,仅供属于 'subscribers' 组的用户使用,这样用户不是它的一部分将不会在侧边栏中看到该插件

我应该在模板中使用 making 条件来做到这一点,以便根据组显示不同的占位符,还是有更好的方法?

假设您的特价商品插件是您编写的自定义插件,您可以简单地覆盖插件的 render 方法。

class SpecialOffers(CMSPluginBase):
    ...

    def render(self, context, instance, placeholder):
        context = super(SpecialOffers, self).render(context, instance, placeholder)
        # grab user from context
        request = context.get('request', None)
        user = request and request.user
        # check user related group condition
        context['show_special_offers'] = False
        if user and user.in_right_group():
            context['show_special_offers'] = True
        return context

然后,您可以使用特价插件模板中的show_special_offers,以确定是否应呈现特价插件的内容。