• ru
  • Language: en
  • 3.7.x
  • Documentation version: 3.9

9. 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.

9.1. Basic installation

First, we need to install the app into our virtual environment from PyPI:

pip install aldryn-newsblog

9.2. Django settings

9.2.1. 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',
'parler',
'sortedm2m',
'taggit',

# and you will probably find the following already listed:
'easy_thumbnails',
'filer',

9.2.2. THUMBNAIL_PROCESSORS

One of the dependencies is Django Filer. It provides a special feature that allows more sophisticated image cropping.

 THUMBNAIL_PROCESSORS = (
     'easy_thumbnails.processors.colorspace',
     'easy_thumbnails.processors.autocrop',
     'filer.thumbnail_processors.scale_and_crop_with_subject_location',
     'easy_thumbnails.processors.filters',
 )

If THUMBNAIL_PROCESSORS is not defined in your settings.py or has different entries, just copy and paste the code above.

9.2.3. 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'

9.2.4. 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.

9.2.5. 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',
                 ],
             },
         },
     ]

9.3. Migrate the database

We’ve added a new application so we need to update our database:

python manage.py migrate

Start the server again.

9.4. 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.)

9.5. 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.