2016-09-19 9 views
1

django-cmsは、関連グループに応じてプレースホルダやプラグインを表示/非表示にする方法がありますか?Django CMSは特定のグループのプレースホルダー/プラグインの表示を制限します

例:私は電子商取引のウェブサイトを持っています。商品ページには、サイドバーのプレースホルダに 'サブスクライバ'グループに属するユーザー専用の特別提供プラグインを表示したいので、その一部にはサイドバーのプラグインが表示されません

テンプレートに条件を入れて、グループに応じて異なるプレースホルダを表示するか、より良い方法がありますか?

答えて

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を使用することができます。

関連する問題