【问题标题】:CMS subsites with Django带有 Django 的 CMS 子站点
【发布时间】:2011-01-02 22:02:34
【问题描述】:

我正在使用 Django 创建一个网站,该网站为各种 生产者消费者 提供单独的 Web UI。两个 UI(或“子站点”)都有不同的布局、菜单和图形。然而,他们访问相同的数据库和模型,只是从不同的方面(生产者与消费者......)。它都托管在一个域下,UI 区分是通过 URL 完成的。

当我想将 CMS 集成到这个系统中以处理菜单结构和文本内容时,问题就来了。我应该如何处理不同 UI 的两个不同菜单?我查看了 django-cms 和 django-page-cms,它们似乎只维护一个菜单层次结构。

有什么想法吗?

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

如果可以有多个 CMS 应用程序实例,那么更好的方法是每个实例都有自己的数据库表。但这对 django 和 e.g. 来说是可能的吗? django-cms 还是 django-page-cms?

一些进一步的限制:

  • CMS 必须支持本地化
  • 我更喜欢运行单个 Django 实例,以保持配置和测试简单

【问题讨论】:

    标签: django localization content-management-system django-cms


    【解决方案1】:

    我没有使用过 django-cms,所以这只是我的想法。

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

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

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

    【讨论】:

      【解决方案2】:

      你需要的是 django-cms 的show_menu_below_id 标签。使用各自的 id(高级字段集,在页面表单的底部)创建页面消费者和生产者,然后开始为每个页面构建页面层次结构。

      然后在模板中使用标签:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-15
        相关资源
        最近更新 更多