8 окт. 2009 г.

Django CMS 2.0 – божественно

Поставил и использую django cms 2.0. Кайф. прям из коробки она умеет большую часть того, что нужно простой и удобной CMS.

Приятней всего для меня была возможность использования placeholder’ов. Суть в настройках прописываете “места размещения” кусков контента на страницах, прописываете их же в шаблоне (которые тоже можно выбирать для каждой страницы) и наслаждаетесь возможностью подставлять в страницу разные плагины (текст, видео, ссылка и пр.). Естественно, плагинов может быть несколько в одном плейсхолдере.

Про многосайтовость и разделение прав на уровне пользователей/групп/ролей я вообще молчу. Экземпляр django-cms 2 скоро буду использовать для всех своих поделок в Concepter’е

В общем, очень хочется написать об этой ЦМС по больше, но не знаю чего именно. Давайте так, пишите в комменты вопросы по ЦМСке, а я буду на них отвечать и апдейтить статью. Каждый 10 комментарий получит денежное вознаграждение по webmoney.

UPD1. Django-CMS 2.0, на сколько мне известно, форк с django-cms. Удивительный факт: форк этот - не единственный, и далеко не последний. feincms– новая CMS, использующая все теже требования, что и предыдущие 2. Лично я, не осилил понять как и зачем работать Feincms… Про сравнение разных django CMS я уже писал

UPD2. Конфиг-файл:


# -*- coding: utf8 -*-

import os

PROJECT_DIR= os.path.abspath(os.path.dirname(__file__))



DEBUG = True

TEMPLATE_DEBUG = DEBUG



ADMINS = (

    ('Ivan Markeyev''markeyev@concepter.ru'),

)



MANAGERS = ADMINS



TEST_DATABASE_CHARSET = "utf8"

TEST_DATABASE_COLLATION = "utf8_general_ci"

DATABASE_SUPPORTS_TRANSACTIONS = True

TIME_ZONE = 'Asia/Yekaterinburg'

SITE_ID = 1

USE_I18N = True

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')

#ADMIN_MEDIA_ROOT = os.path.join(PROJECT_DIR, '../admin_media/')

MEDIA_URL = '/media/'

ADMIN_MEDIA_PREFIX = '/adminmedia/'

FIXTURE_DIRS = [os.path.join(PROJECT_DIR, 'fixtures')]

SECRET_KEY = '+++'

TEMPLATE_LOADERS = (

    'django.template.loaders.filesystem.load_template_source',

    'django.template.loaders.app_directories.load_template_source',

#     'django.template.loaders.eggs.load_template_source',

)



TEMPLATE_CONTEXT_PROCESSORS = (

    "django.core.context_processors.auth",

    "django.core.context_processors.i18n",

    "django.core.context_processors.debug",

    "django.core.context_processors.request",

    "django.core.context_processors.media",

    "cms.context_processors.media",

)



INTERNAL_IPS = ('127.0.0.1',)



MIDDLEWARE_CLASSES = (

    'django.contrib.sessions.middleware.SessionMiddleware',

    'django.middleware.locale.LocaleMiddleware',

    'django.middleware.common.CommonMiddleware',

    'django.contrib.auth.middleware.AuthenticationMiddleware',

    'django.middleware.doc.XViewMiddleware',



    #'django.contrib.csrf.middleware.CsrfMiddleware',

    'cms.middleware.user.CurrentUserMiddleware',

    'cms.middleware.page.CurrentPageMiddleware',

    'cms.middleware.multilingual.MultilingualURLMiddleware',

    #'debug_toolbar.middleware.DebugToolbarMiddleware',

    

)



ROOT_URLCONF = 'urls'



TEMPLATE_DIRS = (

    os.path.join(PROJECT_DIR, 'templates'),

)

LOCALE_PATHS = (

    os.path.join(PROJECT_DIR, 'i18n''locale'),

)

INSTALLED_APPS = (

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.admin',

    'django.contrib.sites',

    'tagging',



    'django.contrib.sitemaps',



    'cms',

    'publisher',



    'cms.plugins.text',

    'cms.plugins.picture',

    'cms.plugins.file',

    'cms.plugins.flash',

    'cms.plugins.link',

    'cms.plugins.snippet',

    'cms.plugins.googlemap',

    'cms.plugins.teaser',

    'cms.plugins.video',

    'cms.plugins.twitter',

    'mptt',

    'reversion',

    #'example.categories',

    #'debug_toolbar',

    'south',

    # sample application

    'sampleapp',

    #'store',

    'rosetta',

)



LANGUAGE_CODE = "ru"



gettext = lambda s: s



LANGUAGES = (

    ('ru', gettext('Russian')),

#    ('fr', gettext('French')),

#    ('de', gettext('German')),

    ('en', gettext('English')),

#    ('pt-br', gettext("Brazil")),

)



CMS_LANGUAGE_CONF = {

    'ru':['en'],

    'en':['ru'],

}



CMS_TEMPLATES = (

    ('index.html', gettext('default')),

    ('nice.html', gettext('nice one')),

    ('cool.html', gettext('cool one')),

    ('long-folder-long/long-template-name.html', gettext('long')),

    

)



CMS_SOFTROOT = True

CMS_MODERATOR = True

CMS_PERMISSION = True

CMS_REDIRECTS = True

CMS_SEO_FIELDS = True

CMS_MENU_TITLE_OVERWRITE = True

CMS_HIDE_UNTRANSLATED = True





try:

    from local_settings import *

except ImportError:

    pass


80 комментариев:

  1. эх, погонять бы где-нибудь демо-версию

    ОтветитьУдалить
  2. Запускать пока не запускал, читаю код :) Список возможностей радует.

    PS. Риторический вопрос: "Почему же все Django-cms кастомайзят родную админку?"

    ОтветитьУдалить
  3. Очевидный вариант ответа - родная админка не подходит для управления конентом, к которому привык избалованный пользователь.
    Примеров тому масса - гранулированные разрешения (то есть по экземплярам объектов) в коробочной джанге не предусмотрены, а для CMS это важно.
    Далее, древовидная структура страниц - собственно вокруг нее все django-cms и построены, ну правда, ещё важны визуальные редакторы и SEO...
    Ответил на вопрос?

    ОтветитьУдалить
  4. Emacs, специально для вас и будущих клиентов концептера торжественно клянусь :) за выходные настроить "демонстрационную" django-cms 2.
    По сути, она не в открытом доступе пока только потому, что у меня не было времени допереводить админку на русский.
    Напишу, как закончу.

    ОтветитьУдалить
  5. Демо-версия джанго cms 2.0 будет доступна через 4-6 часов (когда ДНС обновятся) по адресу demo.concepter.ru. Логин/пароль от админки (demo.concepter.ru/admin): admin/admin.
    Просьба не писать на страницах слова х*й, пи*да и пр. - демо сайт будут смотреть и другие...

    ОтветитьУдалить
  6. Прошу прощения, за неудобства с DNS. Прям щас демка доступна по адресу: http://base.concepter.ru/ и http://base.concepter.ru/admin/ соответственно.

    ОтветитьУдалить
  7. Во флеш-чате не получилось...

    1) Перевод. Будешь коммитить его в ГИТ? Можно присоединиться к переводу? Посмотреть на то, что уже есть? Я перевёл процентов 35. Маловато и кривовато... :-(

    2) Подробнее бы где-нибудь (у тебя?) глянуть про плейсхолдеры, что за конструкции вида "extra_context": {"theme":"16_16"},
    "extra_context": {"theme":"16_5"},
    Что эти числа обозначают?
    Документация довольно лаконична, исходники объёмны :-)

    3) Что за "Level [0 1 0-1] navigation"? Что это будет в реальном примере? Уровни чего?

    А так - очень пользительная CMS-ка. Тоже начал ковырять FeinCMS, но эта - более проработанная. Фейн - скорее фреймворк для ЦМСок.

    ОтветитьУдалить
  8. Перевод - трудная штука :-(

    "Выберите страница для изменения"
    "Изменить страница"
    "Добавить страница"

    может перевести как "страницы"?

    SLUG - в byteflow.su просто кальку использовали. Слаг. Может так же?

    ОтветитьУдалить
  9. По третьему пункту - понял. По второму лишь частично.

    Что по первому?

    ОтветитьУдалить
  10. Сорь, что долго не отвечал. По третьему: на сколько я понимаю, это ур-ни навигации которые будут показаны. Первые 2 цыфры - урни основной навигации, вторые 2 - экстра навигация.
    Экстра навигация - это навигация относительно текущего элемента, то есть, например, на сайте demo.conepter.ru "экстра" навигация включена только в пункте "Navigation with only 1 active extra level". И там честно отображается только один уровень вложенность относительно главной страницы "demo".

    ОтветитьУдалить
  11. Обновил перевод в http://demo.concepter.ru

    ОтветитьУдалить
  12. в демке не грузится admin media

    ОтветитьУдалить
  13. О, точно! Спасибо. Поправил.
    Проблема была связана с недавним обновлением django'о.

    ОтветитьУдалить
  14. > Проблема была связана с недавним обновлением django'о.

    Что-то я потерял нить перемен :-) Что там изменилось?
    А то у меня тоже проблемы с админкой, но я что-то в ступоре сегодня....

    ОтветитьУдалить
  15. Там не так давно вышла 1.1.1 с баг и сикуре фиксами, но у нас проблема была не совсем в этом.
    Дениска (http://vden.concepter.ru/) боролся за правильность пакетов. Как выяснилось в дебиан новая версия django сильно отстает, но удаление пакета не влечет удаления симлинка в site-packeges. В итоге, некоторое время на сервере присутствовали крайне не адекватные пути, в том числе и к media админского контриба.

    ОтветитьУдалить
  16. А многосайтовость как поддерживается? Нужно один сервер запускать или для каждого сайта свой?

    ОтветитьУдалить
  17. Многосайтовость настоящая - на одном проекте, много доменов. Для каждой страницы можно указать сайт (из контриба сайтов), все страницы-потомки этой страницы будут автоматически на том же домене.

    ОтветитьУдалить
  18. Здравствуйте, меня интересует такой момент как вывод контена при помощи placeholder, а точнее в примере указано:
    % placeholder content-type-name page-object widget-name %}
    что за виджет, и с чем его едят? есть ли возможность писать свои виджеты?

    ОтветитьУдалить
  19. Готовые виджеты можно посмотреть тут: http://www.django-cms.org/en/extensions/.

    В самой CMS они лежат в cms\plugins.

    Начинать писать свой можно с переписывания одно из встроенных плагинов.

    ОтветитьУдалить
  20. Только начал изучать эту ЦМС ... ну прикольно, тока есть некоторые недопилы ...
    1) Плагины внутри плагина текст не работают. Как с этим бороться?

    2) TinyMCE как обещано автоматически не подхватывается.

    ОтветитьУдалить
  21. 1) Плагины внутри плагина текст не работают. Как с этим бороться?

    Мало информации. Может быть права на папку с медиа контентом, может не подключили что-то. Не известно.

    2) TinyMCE как обещано автоматически не подхватывается.

    то же самое. Хоть что в логах то?

    ОтветитьУдалить
  22. >1) Плагины внутри плагина текст
    >не работают. Как с этим бороться?
    >
    >Мало информации. Может быть права
    >на папку с медиа контентом, может
    >не подключили что-то. Не известно.

    А так у Вас на демо сайте тоже не работает ) вот попробуй те внутрь текста вставить ссылку (не через html естественно :))

    В IE 7 выдает ошибку при клике, но как всегда ошибка неинформативна

    > 2) TinyMCE как обещано
    >автоматически не подхватывается.

    >то же самое. Хоть что в логах то?

    Из опыта прикручивания Tiny к админке, надо перегружать дефолтные шаблоны админки и добавлять кучу страшного кода на JS типа как тут http://www.openmanual.ru/article/17/?ref=list

    Но это все равно не работает, остается обычный текст ареа.

    ОтветитьУдалить
  23. Ха! стоило только ругнуться на Tiny, как удалось его заставить работать ) только вот link пока заставить работать не удалось

    Могу сказать, что надо перегрузить темплейт админки /admin/templates/base.html (ну или base_site.html) своим внутри проекта джанги, вписав туда подключение JS от Tiny и

    tinyMCE.init({
    // General options
    mode : "textareas",
    theme : "advanced",
    //plugins : НЕ ВКЛЮЧАЙТЕ, работать не будет... там ошибка JS вылазит, конфликт наверное
    theme_advanced_toolbar_location : "top",
    });

    ну остальное вроде можно загуглить

    ОтветитьУдалить
  24. > А так у Вас на демо сайте тоже не работает ) вот попробуй те внутрь текста вставить ссылку (не через html естественно :))

    Строки отсюда http://www.reddit.com/r/django/comments/9nlr3/new_django_cms_website/:

    lots of people ask why clicking the "add plugin" button inside a text plugin does nothing: turn off popup blocking, or whitelist your django server - это возможно, у Вас. А у меня 500 ошибка в ответ на ajax запрос.
    В логах пусто. Буду дальше смотреть.

    ОтветитьУдалить
  25. Ммм... действительно окно блокируется.

    Эффекты такие:
    FF - молча сьедает окно
    Chrome - уведомляет и дает возможность разрешить
    IE 7 дает ошибку, типа какой-то там параметр не правильный в вашем JS ))

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

    ОтветитьУдалить
  26. Да, скорей всего в настройках. Ещё может быть из-за того, что была сперва версия старей, а потом обновление без миграции на 2.0.0-финал.

    ОтветитьУдалить
  27. На счёт TinyMCE...

    Я инициировал, как описано. Добавил в INSTALLED_APPS tinymce и на всякий случай CMS_USE_TINYMCE = True.
    Настройки задаются через TINYMCE_DEFAULT_CONFIG
    и поначалу там было только 'theme': "advanced",

    Теперь мне надо ещё добавить настроечных параметров, но они НЕ ВОСПРИНИМАЮТСЯ! Что бы я ни указывал - в админке джанго он вызывается ровно так же, как и всегда. Может в CMS-2 как-то нестандартно это должно быть....

    Помогите!

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

    ОтветитьУдалить
  29. Очевидно, да. Нужно поменять тут

    http://github.com/digi604/django-cms-2.0/blob/master/cms/admin/pageadmin.py#L1050

    позицию плагина.

    ОтветитьУдалить
  30. как можно посмотреть конфигурационные файлы демоверсии?

    ОтветитьУдалить
  31. На сервере - никак. Давайте положу в пост?
    Но, кстати, там нет ничего необычного.

    ОтветитьУдалить
  32. В пост будет здорово!
    А еще лучше куданить на спец.хостинг..
    Хотя для меня это уже не сильно актуально..
    Я пол-дня потратил на то, чтоб понять почему у меня {% placeholder "content" %} ошибку выдает.. Оказалось из-за того, что перед ним {% load cms_tags %} не добавил.. Внимательней надо быть! :)
    А ваши конфиги будут прекрасной демонстрацией возможностей show_menu, в которой разобраться без метода тыка не считаю возможным. :)

    ОтветитьУдалить
  33. Спасибо, за лестные слова, но на спец хостинг класть копию example проекта django-cms, наверное смысла нет. Давайте я Вам лучше помогу с show_menu в следующем своем посте разобраться.

    ОтветитьУдалить
  34. TinyMCE. Плагин "Изображение" в редакторе замечательно отработал - картинка загрузилась на сайт и вставилась в текст. Пришлось только с путями разобраться. И с правами на них.

    Вообще очень классная штука - эта CMS. Сделал проектик вообще без програмирование :-) Только settings.py и шаблоны. Хотя вру. Надо ещё плагинчик типа Каталога товаров написать.

    Кстати. Как получить прграммно ID текущей страницы (тот номер, который виден в админке)?

    ОтветитьУдалить
  35. Видимо, речь идет о

    from cms.admin.pageadmin import Page

    Page.reverse_id

    , так?

    ОтветитьУдалить
  36. ДА!

    А как всё просто...

    Спасибо.

    ОтветитьУдалить
  37. Хм... Вот ещё думаю...

    Надо мне сделать так, чтобы в футере была инфа, задаваемая из админки (внутренние ссылки, контакты), но так, чтобы она была видна на всех страницах (всех дочерних? всех с этим шаблоном?).

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

    ОтветитьУдалить
  38. Для решения такой задачи можно использовать снипеты ('cms.plugins.snippet'), но ИМХО если информация повторяется во всех шаблонах её надо добавлять именно в шаблон.

    Snippet - это такие куски html, которые можно выгружать на страницу, используя тэги для вызова. Точно не помню, но наверное так: {% snippet 'pk' %}

    ОтветитьУдалить
  39. > Точно не помню, но наверное так: {% snippet 'pk' %}

    Что-то не получилось. В settings.py добавил, syncdb сделал, простенький снипппет создал, в шаблон, где другие плагины работают вставил... И был послан на "Invalid block tag: 'snippet'"

    Что-то я в этой жизни не догоняю.... :-(

    ОтветитьУдалить
  40. Ой, прошу прощения! Я перепутал снипеты django-cms со снипетами, которые я делал для realtor-cms.

    Snipet в django-cms - это общий для всех, вызвавших его placeholder'ов кусок html'я.
    В моей realtor-cms снипеты работали (и работают), как я написал ранее.

    ОтветитьУдалить
  41. А! Ясно!

    Здесь сниппеты - это тип содержимого у плэйсхолдера! Я правильно понял?

    А своим типом сниппетов поделиться можешь?

    Заранее благодарен.

    ОтветитьУдалить
  42. Да, про снипеты в dj-cms - все верно.

    Вот мой вариант:
    http://markeev.labwr.ru/2009/12/debug.html

    ОтветитьУдалить
  43. а как сделать возможность комментировать страницы?

    ОтветитьУдалить
  44. http://docs.djangoproject.com/en/dev/ref/contrib/comments/

    ОтветитьУдалить
  45. Иван, как я вижу у тебя тоже дебуг_тулбар закомменчен - тоже сильно тормозит как у меня? Если да, то не пытался разобраться, в чём там засада?

    ОтветитьУдалить
  46. Нет, просто я его включаю только для профилирования SQL. Штука не вполне полезная в других случая, т.к. отличия от debug-страницы только в списке использованных шаблонов и профилировании SQL.

    ОтветитьУдалить
  47. Ну на дебаг-страницу надо ещё спецом попасть. Да и там у меня Werkzeug подцеплен.
    Но если у тебя оно быстро работает (а на сайтах без джанго-цмс оно у меня тоже работает быстро), то это повод задуматься по поводу косяков в моём приложении.

    ОтветитьУдалить
  48. Кончено, надо смотреть внутрь конкретного проекта. У меня процесс избавления от тормозов обычно начинается с сжимания всего, чего можно, а затем оптимизации запросов. В любом случае, сперва - диагноз, затем лечение :).

    ОтветитьУдалить
  49. Дак сжимать пока нечего, т.к. пока почти только голый джанго-цмс стоит, "мясо" на него ещё буду прикручивать. Но порядка десятка секунд просто на отображение страницы это стрёмно (а без тулбара "летает").

    ОтветитьУдалить
  50. Испытываю проблему...

    Не подгружаются картинки :(
    На приветственной страницы написано: If you don't see here the django-cms logo be sure that you linked the cms/media folder to your media files. и картинка логотипа кмс которая тоже не загружается.

    конфиг

    MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
    или
    MEDIA_ROOT = "D:/Aloy/work/dtest/dcms/media/"

    MEDIA_URL = '/media/'
    ADMIN_MEDIA_PREFIX = '/media/admin/'

    физический путь до прожекта
    D:\Aloy\work\dtest\dcms\
    далее пака media в самом прожекте dcms

    media
    --cms
    ----css
    ----images
    ----js
    ----jstree
    ----swf
    ----wymeditor

    лог сервера
    Django version 1.1.1, using settings 'dcms.settings'
    Development server is running at http://127.0.0.1:80/
    Quit the server with CTRL-BREAK.
    [24/Feb/2010 10:50:57] "GET / HTTP/1.1" 200 2243
    [24/Feb/2010 10:50:57] "GET /media/cms/images/logo.jpg HTTP/1.1" 301 0
    [24/Feb/2010 10:50:57] "GET /media/cms/images/logo.jpg/ HTTP/1.1" 404 1734
    [24/Feb/2010 10:50:57] "GET /favicon.ico/ HTTP/1.1" 404 1706
    Validating models...
    0 errors found

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

    Если кто может проконсультируйте в джаббер live@aloy.com.ua

    ОтветитьУдалить
  51. jabber добавил в контак-лист, но пока он не видим. Попробую здесь ответить:
    1. У вас подключен урл, который обслуживает media? В development сервере его нет по умолчанию и люди решают проблему так:
    # in urls.py:

    from django.conf import settings
    if settings.DEBUG:
    urlpatterns += patterns('',
    (r'^%s(?P.*)$'%settings.MEDIA_URL[1:], 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    }

    ОтветитьУдалить
  52. 2. Есть такая группа настроек:
    CMS_MEDIA_ROOT = os.path.join(MEDIA_ROOT, 'cms')
    CMS_MEDIA_PATH = "cms/"
    CMS_MEDIA_URL = "/media/cms/"

    ОтветитьУдалить
  53. Не успел демо посмотреть =(
    буквально 5 дней прошло.
    Что с ним произошло?

    ОтветитьУдалить
  54. Пришлось перевести сервер на слайстхост. Там пока что катастрофически не хватает ресурсов. В ближайшие пару дней подниму дему на другом сервере (где ресурсов много-много, а проектов почти нет).

    ОтветитьУдалить
  55. Вопрос такого плана:
    клиент хочет видеть статистику сайта, собранную в одном месте: количество картинок, страниц, других материалов, загруженных на сайт. Чтобы начальство могло видеть динамику, выраженную в цифрах.

    И ещё. Есть ли средство делать резервную копию сайта средствами самой джанги или хотябы управлять этим процессом из джанги? (Вроде спрашивал уже про это, но всё-таки...)

    Заранее благодарен.

    ОтветитьУдалить
  56. Как сделать статистику для моделей плагинов я объяснять не стану - это слишком просто.
    Бэкапы это тоже проторенная дорожка для django. Советую использовать manage команду dumpdata, которые можно вызывать и из веба.

    ОтветитьУдалить
  57. А как установить DjangoCMS под Windows? В частности что прописать в MEDIA_ROOT и MEDIA_URL?

    ОтветитьУдалить
  58. Создайте папку media или static в каталоге с Вашим проектом. Скопируйте внутрь неё каталог "cms" из папки "media" django-cms. Укажите полный путь до Вашего каталога "media" или "static" в настройке MEDIA_ROOT (т.е. например "c:\projects\mycoolpro\media"). Задайте MEDIA_URL = '/media/' (или что-нибудь вроде того).

    ОтветитьУдалить
  59. при добавлении картинки - в админке она не видна потому как ссылается на /ru/admin/cms/page/11/edit-plugin/59/media/cms_page_media/...картинка т.е. явно лишнее "/ru/admin/cms/page/11/edit-plugin/59/"

    на сайте она выводится как "/slug-страницы/media/cms_page_media/11/картинка/"

    если страница главаная - т.е. слуг ="" то отображается.

    какими настройками это победить?
    спмсибо.

    ОтветитьУдалить
  60. А мне кажется, что Вы что-то напутали с "/" в начале адреса картинки, т.к. медиа традиционно корневой кусок URI в адресе картинок...

    ОтветитьУдалить
  61. да. было MEDIA_URL = 'media/'
    надо MEDIA_URL = '/media/'

    ОтветитьУдалить
  62. А у меня выводит ошибку при создании таблиц:

    Traceback (most recent call last):
    File "manage.py", line 2, in ?
    from django.core.management import execute_manager
    ImportError: No module named django.core.management

    Что это может быть?

    ОтветитьУдалить
  63. Похоже у Вас не установлена django :)

    ОтветитьУдалить
  64. да в том то и прикол, что установлен в папку "Python2.5":
    /home/xxx/webapps/django/lib/python2.5/django/, а django-cms командой easy_install было установлено совсем по другому пути:
    /home/xxx/lib/python2.4/django_cms-2.1.0.beta3-py2.4.egg/cms
    Вот меня это страшно смущает...

    ОтветитьУдалить
  65. Ну значит питон не видит джангу. Джанго цмс в яйце, с ним все нормально.

    ОтветитьУдалить
  66. Сайт на django-cms сделан и сдан, но клиент попросил прикрутить RSS к нему. Что-то я так вот сходу не могу сообразить, как это сделать... Там довольно много страниц...

    ОтветитьУдалить
  67. У syndication framework довольно простая документация...

    http://docs.djangoproject.com/en/dev/ref/contrib/syndication/

    ОтветитьУдалить
  68. Надо было sitemap.xml сгенерить - сделал (это в доку к django-cms написано). Всё замечательно. Но надо ещё и визуальную карту сайта сделать - чтоб на сайте была страничка, где развёрнутым деревом вся структукра отражена. "Карта сайта". Чем и как такое сделать в django-cms? Я так понял, что django.contrib.sitemap не для этого малость....

    ОтветитьУдалить
  69. Это очень просто решить:
    1. url(r'^sitemap/$', 'direct_to_template', {'template': 'sitemap.html'}),
    2. В шаблоне sitemap.html:
    <ul>
    {% show_menu 0 100 100 100 %}
    </ul>

    Вот Вам и карта сайта!

    ОтветитьУдалить
  70. Смотрю - вроде всё понятно. Пытаюсь повторить - Увы :-(

    Request Method: GET
    Request URL: http://aquadril.ru/sitemap/
    Exception Type: TypeError
    Exception Value:
    'str' object is not callable
    Exception Location: /usr/lib/python2.5/site-packages/django/core/handlers/base.py in get_response, line 92

    ОтветитьУдалить
  71. Попробуйте написать вместо
    'direct_to_template',
    вот это значение
    'django.views.generic.simple.direct_to_template',

    ОтветитьУдалить
  72. А никто не пытался сравнивать django-cms с django-lfc?

    lfc - cmsка от создателя django-lfs - магазина. Все эти продукты (включая ещё и блог) отличает дополнительная админка, рассчитанная на обычного пользователя - товароведа, контент-менеджера, блоггера. В общем всё интересно. КМС, вроде, умеет и многоязычность (заказчику надо CMS и блог на двух, минимум, языках вести). На django-cms я проект делал, блог прикручивал, в общем представляю себе, что и как, а вот с LFC близко не сталкивался (только с магазином вожусь).

    Так что если что и как - откомментруйте комментарий :-)

    ОтветитьУдалить
  73. К сожалению я пока не смотрел ни на lfc-cms ни на собственно Light Fast Shop (стоит их вообще делить?). Как посмотрю, сможем подискутировать.

    ОтветитьУдалить
  74. По идее lfc и lfs - разные продукты, пусть и от одних создателей

    ОтветитьУдалить
  75. Беглый взгляд по django-lfc дает следущие ощущения:
    1) Yet-Another-Plone :)
    2) Ощущение монолитности, и что сторонние приложения туда не прикрутить просто так (если вообще возможно)

    Т.е. все преимущества Питона и Джанги не ощущаются для меня (как разработчика).

    ОтветитьУдалить
  76. Кстати, вы не в курсе, почему развитие Django-CMS как-то притормозилось? Вроде как в роадмапе летом обещали 2.2, а еще 2.1 зарелизить не могут.

    ОтветитьУдалить
  77. Сам в шоке :). Видимо, параллельное развитие нескольких одинаковых идей, как бы намекнуло разработчикам на тщетность их попыток. Надеюсь, что django-cms оживет, т.к. я использую этот продукт очень активно.

    ОтветитьУдалить