Django settings

Django CMS Приступая к работе - Настройка

21 August 2013 г. 14:57:38

В django CMS огромное количество настроек, который вы можете использовать чтобы сделать такую CMS которая Вам нужна.

3.1. Требуемые настройки

3.1.1. CMS_TEMPLATES

По умолчанию: () (Не корректное значение!)

Список шаблонов которые вы можете использовать на странице

Пример:

CMS_TEMPLATES = (
   ('base.html', gettext('default')),
   ('2col.html', gettext('2 Column')),
   ('3col.html', gettext('3 Column')),
   ('extra.html', gettext('Some extra fancy template')),
)

Замечание

Все шаблоны определенные в CMS_TEMPLATES должны содержать хотя бы  js и css  для sekizai, для получения большей информации посмотрите  Использования файлов с помощью sekizai.

Предупреждение

Django CMS  внутренне основывается на количестве шаблонов для корректного использования. Шаблоны должны находиться внутри директория шаблонов Вашей cms. Таким образом настоятельно рекомендуется избегать использования одного директория для всего проекта.

 

3.2. Базовая настройка

3.2.1. CMS_TEMPLATE_INHERITANCE

По умолчанию: True

Опционально включает наследование шаблонов родительской страницы.

Если опция включена, у страниц появляется дополнительная опция для наследования шаблона от ближайшего предка. Если это не корневая страница, то новые страницы по умолчанию используют этот параметр.

3.2.2. CMS_PLACEHOLDER_CONF

По умолчанию: {} Опционально

Используется для настройки плейсхолдеров. Если используется значение по умолчанию, то все плагины могут использоваться во всей плейсхолдерах.

Пример:

CMS_PLACEHOLDER_CONF = {
   'content': {
       'plugins': ['TextPlugin', 'PicturePlugin'],
       'text_only_plugins': ['LinkPlugin']
       'extra_context': {"width":640},
       'name':gettext("Content"),
   },
   'right-column': {
       "plugins": ['TeaserPlugin', 'LinkPlugin'],
       "extra_context": {"width":280},
       'name':gettext("Right Column"),
       'limits': {
           'global': 2,
           'TeaserPlugin': 1,
           'LinkPlugin': 1,
       },
   },
   'base.html content': {
       "plugins": ['TextPlugin', 'PicturePlugin', 'TeaserPlugin']
   },
}

Вы можете совмещать имена шаблонов с именами плейсхолдеров чтобы точно определить плагины которые отображаются в качестве содержания ‘’base.html

  • plugins

Список плагинов которые можно добавить в плейсхолдер. Все плагины могут быть выбраны, если значение не указано

  • text_only_plugins

Список дополнительных плагинов доступных только в TextPlugin,  эти плагины не могут быть добавлены прямо в плейсхолдер.

  • extra_context

Планины с дополнительным содержанием которые тотрые получит плейсхолдер

  • name

Имя, отображаемое в панели администратора. При использовании gettext, имя может быть переведено.

  • limits

Ограничение количества плагинов, которые могут быть использованы в плейсхолдере. В название ключей записывается имя плагина, а в значение соответствуюший предел. Особый случай: “global” - ограничение обсолютного количества плагинов в плейсхолдере независимо от типа (имеет приоритет над ограничениями по типам).

3.2.3. CMS_PLUGIN_CONTEXT_PROCESSORS

По умолчанию: []

Список контекстных процессоров плагинов. Контекстные процессоры плагинов  вызываются чтобы изменить все контексты плагинов до рендеринга страницы.

Больше информации можно найти в разделе Custom Plugins.

3.2.4. CMS_PLUGIN_PROCESSORS

По умолчанию: []

Список процессоров для плагинов. Процессоры плагинов вызываются чтобы изменить все вывод всех планинов после рендеринга.

Больше информации можно найти в разделе Custom Plugins.

 

3.2.5. CMS_APPHOOKS

По умолчанию: ()

Список путей для импорта подклассов  cms.app_base.CMSApp.

По умолчанию пустой список. Это означает что CMS приложение будет автоматически искать все приложения из INSTALLED_APPS пытаясь загрузить в иморт их  cms_app модуль.

Автоматический поиск выключен, если значение указано.

Пример:

CMS_APPHOOKS = (
   'myapp.cms_app.MyApp',
   'otherapp.cms_app.MyFancyApp',
   'sampleapp.cms_app.SampleApp',
)

3.2.6. PLACEHOLDER_FRONTEND_EDITING

По умолчанию: True

Если установлено в  False, то редактирование фронтенда не доступно для моделей использующих  cms.models.fields.PlaceholderField.

3.3. Настройки редактора

WYM-редактор из cms.plugins.text может содержать такую-же конфигурацию как vanilla Wymeditor. Таким образом Вам надо научиться его конфигурировать. Лучший способ это сделать  это рассмотреть страницу примеров Wymeditor  examples page и понять как он работает.

Плагины cms.plugins.text представляют собой несколько переменных начинающихся с WYM_*. Простейший путь начать с нимиработать это пойти в cms/plugins/text/settings.py и скопировать переменные WYM_*  и вы увидете что они один в один совпадают с Wym-редактором.

В настоящее время доступны следующие переменные:

  • WYM_TOOLS

  • WYM_CONTAINERS

  • WYM_CLASSES

  • WYM_STYLES

  • WYM_STYLESHEET

3.4. I18N и L10N

3.4.1. CMS_LANGUAGES

По умолчанию:  Значение LANGUAGES сконвертировано в этот фармат

Определяет языки доступные в django CMS.

Пример:

CMS_LANGUAGES = {
   1: [
       {
           'code': 'en',
           'name': gettext('English'),
           'fallbacks': ['de', 'fr'],
           'public': True,
           'hide_untranslated': True,
           'redirect_on_fallback':False,
       },
       {
           'code': 'de',
           'name': gettext('Deutsch'),
           'fallbacks': ['en', 'fr'],
           'public': True,
       },
       {
           'code': 'fr',
           'name': gettext('French'),
           'public': False,
       },
   ],
   2: [
       {
           'code': 'nl',
           'name': gettext('Dutch'),
           'public': True,
           'fallbacks': ['en'],
       },
   ],
   'default': {
       'fallbacks': ['en', 'de', 'fr'],
       'redirect_on_fallback':True,
       'public': False,
       'hide_untranslated': False,
   }
}

 

 

Замечание

Убедитесь что вы используете языки которые определены в LANGUAGES.

 

CMS_LANGUAGES содержит различные настройки с помощью которых Вы можете точно определить поведение различные языков в CMS.

В первом уровне Вы можете определить SITE_ID и задать им значения по умолчанию. В примере выше первый сайт содержит 3 языка (английский, немецкий и французский), а второй сайт содержит только нидерландский. Значение default

определяет поведение по умолчанию для всех языков. Вы можете переписать значения по умолчания специфическими свойствами для какого-нибудь языка. Например мы определим hide_untranslated  = False глобально. И английский язык переопределит это поведение. Каждый язык должен содержать хотя бы и свойства code и name, значение свойства  code заполняется кодом iso 2 code для этого языка, а name - полное название языка.

Замечание

При помощи лямбда функции gettext() вы можете сделать перевод Ваших языков. Для этого добавьте gettext = lambda s: s  в начала файла настроек  settings.py. Хотя возможно вы захотите оставить названия языков как есть.

Так какие-же свойства есть у языков?

3.4.1.1. code

Строка. RFC5646 код языка.

Например: "en".

Замечание

Требуется для каждого языка.

3.4.1.2. name

Строка.  Полное название языка.

Замечание

Требуется для каждого языка.

3.4.1.3. public

Является ли этот язык доступным в интерфейсе? Например Вы захотели добавить новый язык на ваши страницы, но пока не готовы показать его миру.

Тип: Boolean По умолчанию: True

3.4.1.4. fallbacks

Список языков, которые будут использованы если страница еще не переведена. Язык выбирается по порядку.

Например: ['de', 'fr'] По умолчанию: []

3.4.1.5. hide_untranslated

Должны ли не переведенные страницы быть скрытыми в меню?

Тип: Boolean По умолчанию: True

3.4.1.6. redirect_on_fallback

Если страница недоступна, должно ли быть перенаправление на страницу которая переведена, или должно быть переведено содержание на этой странице?

Тип: Boolean По умолчанию: True

3.4.2. Поддежка Unicode для чистых URL

Django CMS поддерживает автоматическую генерацию чистых url на основе заголовков страниц, которые содержат символы unicode  при помощи unihandecode.js.  Чтобы включить поддержку unihandecode.js, параметры CMS_UNIHANDECODE_HOST и CMS_UNIHANDECODE_VERSION должны быть настроены.

3.4.2.1. CMS_UNIHANDECODE_HOST

По умолчанию: None

Параметр должен указывать на URL где вы храните файл unihandecode.js. Из-за лицензирования, django CMS не включает файл unihandecode.js.

Если параметр по умолчанию установлен в None, unihandecode.js  не и спользуется.

Замечание

Unihandecode.js это очень большая библиотека, особенно когда используется поддержка японского языка. Поэтому очень важно использовать на сервере сжатие gzip. К тому же, убедитесь что этот файл может кешироваться браузером на длительное время.

3.4.2.2. CMS_UNIHANDECODE_VERSION

По умолчанию: None

Должен быть указан номер версии которую Вы хотите использовать (например '1.0.0'). Эта настройка, совместно с CMS_UNIHANDECODE_HOST, для построения URL к javascript файлу. URL создается таким образом: <CMS_UNIHANDECODE_HOST>-<CMS_UNIHANDECODE_VERSION>.<DECODER>.min.js.

3.4.2.3. CMS_UNIHANDECODE_DECODERS

По умолчанию: ['ja', 'zh', 'vn', 'kr', 'diacritic']

Если вы используете дополнительные декодировщики в  CMS_UNIHANDECODE_HOST`, вы можете добавить их в эту настройку.

3.4.2.4. CMS_UNIHANDECODE_DEFAULT_DECODER

По умолчанию: 'diacritic'

Декодировщик по умолчанию используется когда поддержка unihandecode.js включена, но данный язык не представлен в настойке CMS_UNIHANDECODE_DECODERS. Если установлено в None, то и язык не найден в списке декодировщиков, то unihandecode.js не будет использоваться для данного языка.

3.5. Настройки MEDIA

3.5.1. CMS_MEDIA_PATH

По умолчанию: cms/

Путь из MEDIA_ROOT к медиа файлам в  cms/media/

3.5.2. CMS_MEDIA_ROOT

По умолчанию: MEDIA_ROOT + CMS_MEDIA_PATH

Путь к корневому директорию где храняться медиа файлы CMS

.

3.5.3. CMS_MEDIA_URL

по умолчанию: MEDIA_URL + CMS_MEDIA_PATH

Адрес медиа файлов, которые находятся в cms/media/cms/

3.5.4. CMS_PAGE_MEDIA_PATH

По умолчанию: 'cms_page_media/'

Для хранения медиа файлов, django CMS по умолчанию создает директорий под названием cms_page_media в директории для статических файлов. Медиа файлы хранятся в поддиректориях номера которых соответствуют идентификаторам страниц.

Вам необходимо позаботиться о том, чтобы этот директорий был доступен для записи для пользователя от имени которого будет запускаться Django.

3.6. URL

3.6.1. CMS_URL_OVERWRITE

По умолчанию: True

Добавляет в дополнительные настройки страницы (“advanced settings”) новое поле “url overwrite”. При помощи этого поля вы можете переписать относительные ссылки страницы.

3.6.2. CMS_MENU_TITLE_OVERWRITE

По умолчанию: False

Добавит новое поле “menu title” после поля заголовка страницы.

С помощью этого поля вы можете переписать значение заголовка которое отображается в меню

Для доступа к заголовку в шаблонах  воспользуйтесь:

{{ page.get_menu_title }}

3.6.3. CMS_REDIRECTS

По умолчанию: False

Добавляет в дополнительные настройки страницы (“advanced settings”) новое поле “redirect”. Вы можете указать url куда будет перенаправлен пользователь когда перейдет на страницу.

Замечание:

Не используйте слишком много, django.contrib.redirects гораздо более гибкий и удобный инструмент, предназначенный для этих целей.

3.6.4. CMS_SOFTROOT

По умолчанию: False

Добавляет в дополнительные настройки страницы (“advanced settings”) новое поле “softroot”. Если страница отмечена как “softroot” меню будет отображать элементы пока не найдет  “softroot”.

Используя “softroot” Вы можете отображать часть меню, если у вас большой сайт

3.7. Дополнительные настройки

3.7.1. CMS_PERMISSION

По умолчанию: False

Если настройка включена появятся 3 новые модели в панели администратора.

  • Pages global permissions

  • User groups - page

  • Users - page

В режиме редактирования страниц Вы сможете назначать пользователей и наделять их правами. В “Pages global permissions” Вы можете указать права доступа для пользователей глобально. Если пользователи наделены правами для создания новых пользователей теперь могут это делать в “Users - page”. Но он сможет видеть только тех пользователей, которых создал. Созданные пользователи так-же могут наследовать права, которыми он наделен. Поэтому если у него есть права только на редактирование конкретной страницы, то все созданные пользователи смогут редактировать только эту страницу. Естественно он сможет ограничить права пользователей в будущим, позволяя им видеть только подмножество страниц к которым сам имеет доступ.

3.7.2. CMS_RAW_ID_USERS

По умолчанию: False

Настройка используется только в том случае если CMS_PERMISSION  установлена в  True

Просмотр ограничений (“view restrictions”) и права доступа (“page permissions”) встраивается в cms.models.Page. Изменение форм может вызвать проблемы с производительностью, когда для  многих тысяч пользователей используются простые выпадающие списки. Если установлено положительное число, эта настройка

заставляет встраивать на страницу стандартный виджет  Django для ввода сырого ID вместо выпадающего списка, если количество пользователей больше заданного числа, что значительно повышает производительность.

 

Замечание

Использование полей воода ID  в комбинации с  limit_choices_to  может вызывать ошибку связанную с длинной URL (если у вас тысячи пользователей все первичные ключи включаются в  URL всплывающего окна). Для этого случая, мы применяем это ограничение только для случаев если количество пользователей не велико (менее 500). Если количество пользовотелей, которое нам надо ограничить больше, то мы используем обычное поле ввода если пользователь является суперпользователем и в этом случае мы обходим ограничение. К сожалению это значит что не суперпользователи не увидят никакой выгоды от этой настройки.

 

3.7.3. CMS_PUBLIC_FOR

По умолчанию: all

Указывается является ли станица без каких либо ограничений поубличной или только для персонала. Возможные значения: all или staff.

3.7.4. CMS_SHOW_START_DATE & CMS_SHOW_END_DATE

По умолчанию: False для обеих

Эти настройки добавляют 2 новых поля  DateTimeField в дополнительные настройки (“advanced settings”) страниц. При помощи этих настоек вы можете ограничить временной интервал для опубликованных страниц.

3.7.5. CMS_SEO_FIELDS

По умолчанию: False

Добавляет новые поля для SEO в панель администратора. В них Вы можете указать заголовок (“Page Title”), ключевые слова (Meta Keywords) и описание (Meta Description).

В шаблонах эти поля используются следующим образом:

{% load cms_tags %}
<head>
   <title>{% page_attribute page_title %}</title>
   <meta name="description" content="{% page_attribute meta_description %}"/>
   <meta name="keywords" content="{% page_attribute meta_keywords %}"/>
   ...
   ...
</head>

3.7.6. CMS_CACHE_DURATIONS

Этот словарь используется для  различных настройках длительности кэша.

This dictionary carries the various cache duration settings.

3.7.6.1. 'content'

По умолчанию: 60

Время хранения (в секундах)  для тэгов  show_placeholder и page_url в шаблонах.

Замечание

Эта настройка ранее называлась CMS_CONTENT_CACHE_DURATION

3.7.6.2. 'menus'

По умолчанию: 3600

Время хранения (в секундах) для дерева меню.

Замечание

Эта настройка ранее называлась MENU_CACHE_DURATION

 

 

3.7.6.3. 'permissions'

По умолчанию: 3600

Время хранения (в секундах) для представлений прав доступа.

3.7.7. CMS_CACHE_PREFIX

По умолчанию: cms-

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

Например:

CMS_CACHE_PREFIX = 'mysite-live'

Замечание

Django 1.3 предоставляет собственный префикс кэша. Подробнее смотрите в документации cache key prefixing

 

3.7.8. CMS_MAX_PAGE_PUBLISH_REVERSIONS

По умолчанию: 25

 

Если установлен django-reversion, то все изменения в плагинах будут сохранены в ревизию. В панели администратора есть кнопка с историей чтобы откатиться на предыдущую ревизий. Затем, через некоторое время, мы получаем проблему с огромной базой данных из-за таблицы ревизий. Чтобы это исправить, все ревизии, которые не были опубликованы, будут удалены когда вы публикуете страницу. Таким образом эта настройка указывает количество опубликованных ревизий которые сохраняются в базе данных. По умолчанию сохраняются 25 последних ревизий, а все остальные будут удалены, когда вы публикуете страницу. Если вы укажете 0 то все ревизии будут сохранены, но Вам самостоятельно нужно будет следить на размером таблицы ревизий.

 


Оставьте свой комментарий

comments powered by Disqus
Меню

Cult of digits 2014 Яндекс.Метрика