Что такое Djang-CMS
Django-CMS — это система управления контентом, написанная на Python, с использованием фреймворка Django. Она гибкая, настраиваемая, для неё создано много модулей. Помимо этого можно добавлять свои модули.
Установка
- Сделаем новый virtualenv
``` bash Запустите в шеле следующие комманды sudo aptitude install python2.6 python-setuptools python-imaging sudo easy_install pip sudo pip install django==1.3.1 django-cms south django-admin.py startproject mycmsproject cd mycmsproject rm settings.py rm urls.py wget https://gist.github.com/raw/1125918/settings.py wget https://gist.github.com/raw/1125918/urls.py mkdir templates cd templates wget https://gist.github.com/raw/1125918/example.html cd .. python manage.py syncdb --all python manage.py migrate --fake python manage.py runserver
### Настройка одного языка для django-cms 2.4.1
Так чтобы небыло префикса 'ru' в урлах
В файл settings.py
``` python
CMS_LANGUAGES = {
1: [
{
'code': 'ru',
'name': gettext('Russian'),
# 'fallbacks': [],
'public': True,
'hide_untranslated': True,
'redirect_on_fallback':False,
},
],
'default': {
'fallbacks': ['ru'],
'redirect_on_fallback':True,
'public': False,
'hide_untranslated': False,
}
}
DEFAULT_LANGUAGE = 0
LANGUAGE_CODE = 'ru-RU'
USE_I18N = True
USE_L10N = True
Повторение place_holder элементов на всех страницах
Часто требуется повторение элементов с главной страницы на всех страницах
Для этого нужно в расширенных свойствах страницы указать id страницы index
(к примеру)
И написать что-то вроде этого: {\% show_placeholder "teaser_right_bottom" "index" \%}
Новостной плагин для django-cms
hg clone ssh://hg@bitbucket.org/zerok/cmsplugin-news
Эти новости хорошие, только подправить navigation.py
#from cms.utils.navigation import NavigationNode
from menus.base import NavigationNode
Дальше кастомизировать шаблоны, предварительно скопировав их в папку templates проекта. Возможно вся кастомизация будет заключаться в прописвании {\% extends "base.html" \%} в начало каждого шаблона новостей.
Ещё для использования sqlite
easy_install pysqlite
Для моего проекта используются следующие модули, сделано командой pip freeze:
../../bin/pip freeze
Django==1.3.1
PIL==1.1.7
South==0.7.3
cmsplugin-contact==0.9.8
cmsplugin-filer==0.8.0
cmsplugin-filer-gallery==1.0.1.pre-alpha
cmsplugin-news==0.3b
django-appmedia==1.0.1
django-categories==0.8.5
django-classy-tags==0.3.4.1
django-cms==2.2
django-filer==0.8.5
django-filer-gallery==1.0.pre-alpha
django-mptt==0.4.2
django-polymorphic==0.4.2
django-sekizai==0.5
easy-thumbnails==1.0-alpha-20
html5lib==0.90
wsgiref==0.1.2
Если есть уже работающий на сервере проект, а его нужно запустить локально, то создаем виртуальную питоновскую среду, и кропотливо устанавливаем все зависимости. Иначе выйдет боком.
Использование Bootstrap
Я скачиваю с гитхаб zip архив bootstrap. Затем кладу в папку статических файлов папки из master-bootstrap: img, js, less
В папке less создаю файл style.less примерно такого содержания:
@inputHeight: 10px;
@import 'mixins.less';
header {
color: #000000;
// background-color: #666666;
// #gradient > .vertical(#D695B3, #666666);
// background-image: url(../img/maket_03.png);
// background-repeat: no-repeat;
// background-position: center;
}
body{
background-color: #666666;
color: #FEFCFD;
height: 100%;
}
.my_nav_bar{
font: bold 16px Arial;
}
article{
line-height: 25px;
background: url(../img/stroke.jpg) 100% 50% repeat-y transparent;
p{
margin-bottom: 30px;
margin-right: 40px;
padding-right: 10px;
}
}
.my_grad{
background-color: #666666;
#gradient > .vertical(#D695B3, #666666);
}
#myhr {
border-bottom: 2px solid #D594B2;
padding-bottom: 10px;
margin-bottom: 15px;
}
.footer_cups{
background-image: url(../img/bcups.jpg);
background-repeat: no-repeat;
background-position: right;
height: 100px;
a {
color: #FEFCFD;
text-decoration: underline;
}
a:hover {
color: #000;
}
}
.thumbnails {
text-align:center;
}
.thumbnails > li {
display: inline-block;
*display:inline; /* ie7 fix */
float: none; /* this is the part that makes it work */
}
//CUSTOM
.offers img{
margin: 10px;
}
aside img{
margin: 10px;
}
.plugin_yandexmap img{
max-width: none;
}
Дальше компилирую его командой, то как это настраивается можно почитать тут.
lessc style.less style.css
И соответственно в шаблоне уже ссылаемся на новый style.css
Ещё с главной страницы bootstrap качаем скомпилированный bootstrap.zip, копируем файлы в соответствующие папки