Django CMS限制某些组的占位符/插件的视图

时间:2016-09-19 08:30:58

标签: django-cms

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

例如:我有一个电子商务网站,在产品页面中我想在侧边栏占位符中显示一个特殊优惠插件,仅适用于属于“订阅者”群组的用户,因此用户不属于它不会在侧栏中看到插件

我是否应该在模板中创建条件,以便根据组显示不同的占位符,或者有更好的方法?

1 个答案:

答案 0 :(得分:0)

假设您的特别优惠插件是您编写的自定义插件,您可以简单地覆盖插件的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作为特别优惠插件,以确定是否应该呈现特价优惠插件的内容。