Integrating a third-party application
We’ve already written our own django CMS plugins and apps, but now we want to extend our CMS with a third-party application, Aldryn News & Blog.
Basic installation
First, we need to install the app into our virtual environment from PyPI:
pip install aldryn-newsblog
Django settings
INSTALLED_APPS
Add the application and any of its requirements that are not there already to INSTALLED_APPS
in settings.py
. Some will be already present; it’s up to you to check them because you need to avoid duplication:
# you will probably need to add:
'aldryn_apphooks_config',
'aldryn_boilerplates',
'aldryn_categories',
'aldryn_common',
'aldryn_newsblog',
'aldryn_people',
'aldryn_reversion',
'djangocms_text_ckeditor',
'parler',
'sortedm2m',
'taggit',
# and you will probably find the following already listed:
'easy_thumbnails',
'filer',
'reversion',
THUMBNAIL_PROCESSORS
One of the dependencies is Django Filer. It provides a special feature that allows more sophisticated image cropping. For this to work it needs its own thumbnail processor (filer.thumbnail_processors.scale_and_crop_with_subject_location
) to be listed in settings.py
in place of easy_thumbnails.processors.scale_and_crop
:
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
# 'easy_thumbnails.processors.scale_and_crop', # disable this one
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters',
)
ALDRYN_BOILERPLATE_NAME
Aldryn News & Blog uses aldryn-boilerplates to provide multiple sets of templates and static files for different CSS frameworks. We’re using the Bootstrap 3 in this tutorial, so let’s choose bootstrap3
by adding the setting:
ALDRYN_BOILERPLATE_NAME='bootstrap3'
STATICFILES_FINDERS
Add the boilerplates static files finder to STATICFILES_FINDERS
, immediately before django.contrib.staticfiles.finders.AppDirectoriesFinder
:
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'aldryn_boilerplates.staticfile_finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
If STATICFILES_FINDERS
is not defined in your settings.py
just copy and paste the code above.
TEMPLATES
Important
In Django 1.8, the TEMPLATE_LOADERS
and TEMPLATE_CONTEXT_PROCESSORS
settings are rolled into the TEMPLATES
setting. We’re assuming you’re using Django 1.8 here.
TEMPLATES = [
{
# ...
'OPTIONS': {
'context_processors': [
# ...
'aldryn_boilerplates.context_processors.boilerplate',
],
'loaders': [
# ...
'aldryn_boilerplates.template_loaders.AppDirectoriesLoader',
],
},
},
]
Migrate the database
We’ve added a new application so we need to update our database:
python manage.py migrate
Start the server again.
Create a new apphooked page
The News & Blog application comes with a django CMS apphook, so add a new django CMS page (call it News), and add the News & Blog application to it just as you did for Polls.
For this application we also need to create and select an Application configuration.
Give this application configuration some settings:
Instance namespace
: news (this is used for reversing URLs)Application title
: News (the name that will represent the application configuration in the admin)Permalink type
: choose a format you prefer for news article URLs
Save this application configuration, and make sure it’s selected in Application configurations
.
Publish the new page, and you should find the News & Blog application at work there. (Until you actually create any articles, it will simply inform you that there are No items available.)
Add new News & Blog articles
You can add new articles using the admin or the new News menu that now appears in the toolbar when you are on a page belonging to News & Blog.
You can also insert a Latest articles plugin into another page - like all good django CMS applications, Aldryn News & Blog comes with plugins.