Table of Contents
Django-cms project
Installing django-cms
reference: http://docs.django-cms.org/en/2.2/getting_started/tutorial.html
User virtualenv and pip to avoid dependency problems.
$ yum install python2.6 python-setuptools python-imaging $ virtualenv mysite-env $ source mysite-env/bin/activate (env)$ pip install django==1.3.1 django-cms south (env)$ django-admin.py startproject mycmsproject
Starting project may issue error PIL (python image lib) not installed. Installing PIL requires python-devel to compile PIL:
$ sudo yum install python-devel (env)$ pip search PIL (env)$ pip install PIL (env)$ pip install django-filer cmsplugin-filer (env)$ pip install django-reversion
settings.py
Installed apps
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'django.contrib.staticfiles',
'cms',
'menus',
'mptt',
'south',
'filer',
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_image',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
'cms.plugins.text',
## disabled due to filer
#'cms.plugins.picture',
#'cms.plugins.file',
##
'cms.plugins.link',
'cms.plugins.snippet',
'cms.plugins.googlemap',
'sekizai',
# cmsplugin-blog
'cmsplugin_blog',
'simple_translation',
#'staticfiles',
'tagging',
'missing',
'guardian', # optional
)
Middleware classes
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'cms.middleware.multilingual.MultilingualURLMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cmsplugin_blog.middleware.MultilingualBlogEntriesMiddleware',
)
TEMPLATECONTEXTPROCESSORS:
TEMPLATECONTEXTPROCESSORS = (
'django.contrib.auth.context_processors.auth', 'django.core.context_processors.i18n', 'django.core.context_processors.request', 'django.core.context_processors.media', 'django.core.context_processors.static', 'cms.context_processors.media', 'sekizai.context_processors.sekizai',
)
urls.py
1 from django.conf.urls.defaults import *
2 from django.contrib import admin
3 from django.conf import settings
4
5 admin.autodiscover()
6
7 urlpatterns = patterns('',
8 url(r'^admin/', include(admin.site.urls)),
9 url(r'^', include('cms.urls')),
10 )
11
12 if settings.DEBUG:
13 urlpatterns = patterns('',
14 url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
15 {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
16 url(r'', include('django.contrib.staticfiles.urls')),
17 ) + urlpatterns
18
templates
CMS_TEMPLATES setting:
CMS_TEMPLATES = (
('template_1.html', 'Template One'),
('template_2.html', 'Template Two'),
)
templates files
Inside folder pjs_root/templates
base.html
{% load cms_tags sekizai_tags %}
<html>
<head>
{% render_block "css" %}
</head>
<body>
{% placeholder base_content %}
{% block base_content%}{% endblock %}
{% render_block "js" %}
</body>
</html>
template_1.html
{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder template_1_content %}
{% endblock %}
Template for cmsplugin-blog must contain a 'content' block
{% placeholder content %}
as seen in cmspluginblog/templates/cmspluginblog/entry_detail.html
13 {% with object.placeholders|choose_placeholder:"content" as content %}
14 {% render_placeholder content %}
15 {% endwith %}
static files
At the moment static files in dev mode do not work quite 'out of the box'. Sometime when a site is openned, the runserver console says it can not find a certain js or css files. The best way for now is to collect all static files and add their folder to static file settings.
collect all static files
Use staticfiles modul to copy all static files in STATIC_ROOT dir, in this case the 'static' folder. This is normally done when the site is deployed.
./manage.py collectstatic
then
mv static static_dev
Now add the static_dev to settings
76 77 STATICFILES_DIRS = ( 78 os.path.join(PROJECT_DIR, 'static_dev'), 79 ) 80
Installing cmsplugin-blog
Customizing template
some free template
customizing a template
Django-cms-themes
Using themes form www.djangocmsthemes.com
User can use an app to download themes from the website and upload/apply them using 'admin' interface. It does not work properly at the moment
http://www.djangocmsthemes.com/getting-started
install the django-cms-themes pluggable django app. The best way to do this is to use the command “pip install django-cms-themes” (if you are using pip).
Add 'cmsthemes' to INSTALLEDAPPS in your settings file.
Make sure you have a setting in your settings.py file called PROJECTDIR, which should point to the root of your project in the filesystem, i.e. PROJECTDIR = os.path.abspath(os.path.dirname(file))
Run “python manage.py syncdb” (or “python manage.py migrate” if you have south installed).
Making your own themes based on www.djangocmsthemes.com
download and extract themes
Themes for the website are installed to 'themes' folder inside your webroot. CSS links and images are configured with this default path.
[td@localhost vfoss_cms]$ tree themes
themes
├── simple
│ ├── static
│ │ ├── css
│ │ │ └── style.css
│ │ └── images
│ │ ├── bullet.png
│ │ ├── graphic.png
│ │ ├── paperclip.png
│ │ └── pattern.png
│ └── templates
│ └── index.html
└── summer
├── static
│ ├── css
│ │ └── styles.css
│ ├── images
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── body-bg.jpg
│ │ ├── tabs_1.gif
│ │ └── tabs_2.gif
│ └── js
│ ├── jquery-1.3.2.min.js
│ ├── jquery.cycle.all.min.js
│ ├── script.js
│ └── superfish.js
└── templates
├── content.html
└── index.html
Edit settings.py to make these themes available as templates
-------- settings.py ------------
...
100 CMS_TEMPLATES = (
101 ('example.html', 'Example Template'),
102 ('template_1.html', 'Template 1'),
103 ('template_2.html', 'Template 2'),
104 ('summer/templates/index.html', 'summer'), <===== make index.html a template.
105 )
106
107 ROOT_URLCONF = 'urls'
108
109 TEMPLATE_DIRS = (
110 os.path.join(PROJECT_DIR, 'templates'),
111 os.path.join(PROJECT_DIR, 'themes'), <==== add template dir.
112 )
113
...
Error & solution
js & css files under /static/ can't be found
Problem:
Cause: django dev-enviroment doesn't serve static file. Before deployment python manage.py collectstatic must be run so that all static files are copied to “settings.STATIC_ROOT” by python-staticfiles. See python-staticfiles documentation.
Solution: move all static files to 'static-dev' and add 'os.path.join(PROJECTPATH, “static-dev/jquery/”),' to 'settings.STATICFILESDIRS'.