【发布时间】:2017-01-26 20:59:50
【问题描述】:
我想知道是否有 django-cms 内置的方式来为用户显示/不显示占位符或插件,具体取决于他们的相关组。
例如:我有一个电子商务网站,在产品页面中,我想在侧边栏占位符中显示一个特别优惠插件,仅适用于属于“订阅者”组的用户,因此不属于“订阅者”组的用户它不会在侧边栏中看到插件
我应该在模板中使用制造条件,以便根据组显示不同的占位符,还是有更好的方法?
【问题讨论】:
标签: django-cms
我想知道是否有 django-cms 内置的方式来为用户显示/不显示占位符或插件,具体取决于他们的相关组。
例如:我有一个电子商务网站,在产品页面中,我想在侧边栏占位符中显示一个特别优惠插件,仅适用于属于“订阅者”组的用户,因此不属于“订阅者”组的用户它不会在侧边栏中看到插件
我应该在模板中使用制造条件,以便根据组显示不同的占位符,还是有更好的方法?
【问题讨论】:
标签: django-cms
假设您的特价插件是您编写的自定义插件,您可以简单地覆盖该插件的 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,以确定是否应该渲染特价插件的内容。
【讨论】: