1

Я использую Django для создания сайта, который предоставляет отдельный веб-интерфейс для сортировки производителей и потребителей. Оба пользовательских интерфейса (или «подсайты») имеют разные макеты, меню и графику. Однако они получают доступ к одной и той же базе данных и моделям, только с разных сторон (производитель и потребитель ...). Все они размещаются под одним доменом, а дифференциация пользовательского интерфейса выполняется с помощью URL-адресов.CMS subsites с Django

Проблема возникает, когда я хочу интегрировать CMS в эту систему, чтобы заботиться о структурах меню и текстовом контенте. Как мне обращаться с двумя различными меню для разных пользовательских интерфейсов? Я взглянул на django-cms и django-page-cms, и они, похоже, поддерживают только одну иерархию меню.

Любые идеи?

Одним из грязных растворов является добавление, например, другой префикс для каждого элемента меню пользовательского интерфейса в CMS и взломать код CMS, чтобы он только вставлял элементы меню для правильного интерфейса (заданного в качестве параметра тега шаблона show_menu).

Лучше всего было бы, если бы имелось несколько экземпляров приложения CMS, так что каждый из них имел свои собственные таблицы базы данных. Но возможно ли это с джанго и, например, django-cms или django-page-cms?

Некоторые дополнительные ограничения:

  • КМВ должны поддерживать локализации
  • Я предпочел бы запустить один экземпляр Django, чтобы сохранить конфигурацию и тестирование простых

ответ

0

Я не использовал Джанго -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. Создайте страницы потребителей и производителей с их соответствующим идентификатором (расширенный набор полей, внизу формы страницы), а затем начните создавать иерархию страниц для каждого из них.

Затем в шаблонах используются теги:

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

 Смежные вопросы

  • Нет связанных вопросов^_^