1

我使用Django来创建一个网站,提供了一个单独的网络用户界面的各种制片人消费者。这两个UI(或“子网站”)具有不同的布局,菜单和图形。然而,他们只是从不同的角度访问相同的数据库和模型(生产者或消费者...)。它们都在一个域中托管,UI差异化是通过URL完成的。CMS子网站与Django

问题出现在我想将CMS集成到此系统中时,照顾菜单结构和文本内容。我应该如何处理不同UI的两个不同菜单?我看了一下django-cms和django-page-cms,他们似乎只保留一个菜单层次结构。

任何想法?

一个脏兮兮的解决方案是添加例如为CMS中每个UI的菜单项添加不同的前缀,并且破解CMS代码,以便它仅插入正确UI(作为show_menu模板标签的参数给出)的菜单项。

一个更好的方法是,如果可能有多个CMS应用程序实例,以便每个实例都有自己的数据库表。但是,这可能与django和例如django-cms或django-page-cms?

一些进一步的限制:

  • CMS必须支持本地化
  • 我宁愿运行一个Django的情况下,保持配置和测试简单

回答

0

我没有使用过的Django -cms,所以这只是我的头顶。

有一部分文档叫做Extending the menu,看起来很有希望。可能不幸的是,他们的配置如此之多在settings.py,因为它看起来像你可以操纵他们的CMS_TEMPLATES,为不同的用户使用不同的基本模板(等)。解决这个问题的一种方法(假设没有更直接的路线)是向UserProfile添加一些内容,将用户标识为消费者/制作人。然后在你的base.html你做:

{% if user.get_profile.consumer %} 
... 
{% else %} 
... 
{% endif %} 

这有效地为您提供了两种完全不同的外观/感觉基于用户类型的选项。我还会注意到{% extends %}可以使用一个字符串常量一个字符串变量,因此您可以使用context_processor来设置您要扩展的模板的名称。

0

你需要什么是show_menu_below_id django-cms的标签。使用各自的ID创建页面使用者和生产者(高级字段集,位于页面底部),然后开始为每个页面生成页面层次结构。

在模板中

然后使用标签:

<ul> 
    {% if user.get_profile.consumer %} 
    {% show_menu_below_id "consumer" %} 
    {% else %} 
    {% show_menu_below_id "provider" %} 
    {% endif %} 
</ul>