Settings

Configuration options for djangocms-stories.

All settings are optional and have sensible defaults. Settings use the STORIES_ prefix. For backwards compatibility with djangocms-blog, BLOG_ prefixed settings are also accepted as fallbacks.

Django Settings

List of settings that can be set in project django settings.

STORIES_VERSIONING_ENABLED = True

Enable versioning for stories (defaults to True) - only effective if djangocms-versioning is installed.

STORIES_UNICODE_SLUGS = True

Allow unicode chars in auto-generated slugs.

STORIES_IMAGE_THUMBNAIL_SIZE = {'crop': True, 'size': '120x120', 'upscale': False}

Easy-thumbnail alias configuration for the post main image when shown on the post lists; it’s a dictionary with size, crop and upscale keys.

STORIES_IMAGE_FULL_SIZE = {'crop': True, 'size': '640x360', 'upscale': False}

Easy-thumbnail alias configuration for the post main image when shown on the post detail; it’s a dictionary with size, crop and upscale keys.

STORIES_META_IMAGE_SIZE = None

Easy-thumbnail alias configuration for the post meta image; it’s a dictionary with size, crop and upscale keys. Recommended values are {“size”: (1200, 630), “crop”: True, “upscale”: False}

STORIES_URLCONF = 'djangocms_stories.urls'

Standard Apphook URLConf.

STORIES_PAGINATION = 20

Number of post per page.

STORIES_LATEST_POSTS = 5

Default number of post in the Latest post plugin.

STORIES_POSTS_LIST_TRUNCWORDS_COUNT = 100

Default number of words shown for abstract in the post list.

STORIES_ALLOW_UNICODE_SLUGS = True

Typically slugs can contain unicode characters. Set to False to only allow ASCII-based slugs.

STORIES_META_DESCRIPTION_LENGTH = 320

Maximum length for the Meta description field.

STORIES_META_TITLE_LENGTH = 70

Maximum length for the Meta title field.

STORIES_MENU_TYPES = (('complete', 'Categories and posts'), ('categories', 'Categories only'), ('posts', 'Posts only'), ('none', 'None'))
STORIES_MENU_EMPTY_CATEGORIES = True
STORIES_TYPE = 'Article'

Generic type for the post object.

STORIES_TYPES = (('Article', 'Article'), ('Website', 'Website'))

Choices of available blog types.

Available values are defined in to META_OBJECT_TYPES defined in django-meta settings.

STORIES_FB_TYPE = 'Article'

Open Graph type for the post object.

STORIES_FB_TYPES = (('Article', 'Article'), ('Website', 'Website'))

Choices of available blog types.

Available values are defined in to META_FB_TYPES defined in django-meta settings.

STORIES_FB_APPID = ''

Facebook Application ID.

Default from FB_APPID defined in django-meta settings.

STORIES_FB_PROFILE_ID = ''

Facebook profile ID of the post author.

Default from FB_PROFILE_ID defined in django-meta settings.

STORIES_FB_PUBLISHER = ''

Facebook URL of the blog publisher.

Default from FB_PUBLISHER defined in django-meta settings.

STORIES_FB_AUTHOR_URL = 'get_author_url'

Facebook profile URL of the post author.

STORIES_FB_AUTHOR = 'get_author_name'

Facebook profile URL of the post author.

STORIES_TWITTER_TYPE = 'summary'

Twitter Card type for the post object.

STORIES_TWITTER_TYPES = (('summary', 'Summary Card'), ('summary_large_image', 'Summary Card with Large Image'), ('product', 'Product'), ('photo', 'Photo'), ('player', 'Player'), ('app', 'App'))

Choices of available blog types for twitter.

Default from TWITTER_TYPES defined in django-meta settings.

STORIES_TWITTER_SITE = ''

Twitter account of the site.

Default from TWITTER_SITE defined in django-meta settings.

STORIES_TWITTER_AUTHOR = 'get_author_twitter'

Twitter account of the post author.

STORIES_SCHEMAORG_TYPE = 'Blog'

Schema.org type for the post object.

STORIES_SCHEMAORG_TYPES = (('Article', 'Article'), ('Blog', 'Blog'), ('WebPage', 'Page'), ('WebSite', 'WebSite'), ('Event', 'Event'), ('Product', 'Product'), ('Place', 'Place'), ('Person', 'Person'), ('Book', 'Book'), ('LocalBusiness', 'LocalBusiness'), ('Organization', 'Organization'), ('Review', 'Review'))

Choices of available Schema.org types.

Default from SCHEMAORG_TYPES defined in django-meta settings.

STORIES_SCHEMAORG_AUTHOR = 'get_author_schemaorg'

Google+ account of the post author (deprecated).

STORIES_ENABLE_COMMENTS = True

Whether to enable comments by default on posts

While djangocms_stories does not ship any comment system, this flag can be used to control the chosen comments framework.

STORIES_USE_ABSTRACT = True

Use an abstract field for the post.

If False no abstract field is available for posts.

STORIES_USE_PLACEHOLDER = True

Post content is managed via placeholder

If False a HTMLField is provided instead.

STORIES_MULTISITE = True

Add support for multisite setup.

STORIES_AUTHOR_DEFAULT = True

Use a default if not specified:

  • True: the current user is set as the default author;

  • False: no default author is set;

  • any other string: the user with the provided username is used;

STORIES_ADMIN_POST_FIELDSET_FILTER = False

Callable function to change (add or filter) fields to fieldsets for admin post edit form.

See admin_filter_function for more details.

STORIES_DEFAULT_OBJECT_NAME = 'Article'

Default label for Blog item (used in django CMS Wizard).

STORIES_AUTO_SETUP = True

Enable the blog auto_setup feature.

STORIES_AUTO_HOME_TITLE = 'Home'

Title of the home page created by auto_setup.

STORIES_AUTO_BLOG_TITLE = 'Blog'

Title of the blog page created by auto_setup.

STORIES_AUTO_APP_TITLE = 'Blog'

Title of the BlogConfig instance created by auto_setup.

STORIES_AUTO_NAMESPACE = 'blog'

Namespace of the BlogConfig instance created by auto_setup.

STORIES_SITEMAP_PRIORITY_DEFAULT = '0.5'

Default priority for sitemap items.

STORIES_SITEMAP_CHANGEFREQ = (('always', 'always'), ('hourly', 'hourly'), ('daily', 'daily'), ('weekly', 'weekly'), ('monthly', 'monthly'), ('yearly', 'yearly'), ('never', 'never'))

List for available changefreqs for sitemap items.

STORIES_SITEMAP_CHANGEFREQ_DEFAULT = 'monthly'

Default changefreq for sitemap items.

STORIES_ABSTRACT_EDITOR_CONFIG = True

Configuration for the CKEditor of the abstract field.

See https://github.com/divio/djangocms-text-ckeditor/#customizing-htmlfield-editor for details.

STORIES_POST_TEXT_EDITOR_CONFIG = True

Configuration for the CKEditor of the post content field.

See https://github.com/divio/djangocms-text-ckeditor/#customizing-htmlfield-editor for details.

STORIES_CURRENT_POST_IDENTIFIER = 'djangocms_postcontent_current'

Current post identifier in request.

Name of the request attribute used in djangocms_stories.cms_toolbars.BlogToolbar to detect if request match a post detail.

STORIES_CURRENT_NAMESPACE = 'djangocms_post_current_config'

Current post config identifier in request.

Name of the request attribute used in djangocms_stories.cms_toolbars.BlogToolbar to detect the current apphook namespace.

STORIES_ENABLE_THROUGH_TOOLBAR_MENU = False

Show djangocms-blog toolbar in any page, even when outside the blog apphooks.

STORIES_PLUGIN_MODULE_NAME = 'Posts'

Name of the djangocms-blog plugins module (group).

STORIES_LATEST_ENTRIES_PLUGIN_NAME = 'Latest Blog Articles'

Name of the plugin showing the list of latest posts.

STORIES_LATEST_ENTRIES_PLUGIN_NAME_CACHED = 'Latest Blog Articles - Cache'

Name of the plugin showing the list of latest posts (cached version).

STORIES_AUTHOR_POSTS_PLUGIN_NAME = 'Author Blog Articles'

Name of the plugin showing the list of blog posts authors.

STORIES_AUTHOR_POSTS_LIST_PLUGIN_NAME = 'Author Blog Articles List'

Name of the plugin showing the list of posts per authors.

STORIES_TAGS_PLUGIN_NAME = 'Tags'

Name of the plugin showing the tag blog cloud.

STORIES_CATEGORY_PLUGIN_NAME = 'Categories'

Name of the plugin showing the list of blog categories.

STORIES_ARCHIVE_PLUGIN_NAME = 'Archive'

Name of the plugin showing the blog archive index.

STORIES_FEED_CACHE_TIMEOUT = 3600

Cache timeout for RSS feeds.

STORIES_FEED_INSTANT_ITEMS = 50

Number of items in Instant Article feed.

STORIES_FEED_LATEST_ITEMS = 10

Number of items in latest items feed.

STORIES_FEED_TAGS_ITEMS = 10

Number of items in per tags feed.

STORIES_PLUGIN_TEMPLATE_FOLDERS = (('plugins', 'Default template'),)

(Sub-)folder from which the plugin templates are loaded.

The default folder is plugins.

See plugin_templates for more details.

STORIES_USE_FALLBACK_LANGUAGE_IN_URL = False

When displaying URL, prefer URL in the fallback language if an article or category is not available in the current language.

STORIES_WIZARD_CONTENT_PLUGIN = 'TextPlugin'

Name of the plugin created by wizard for the text content.

STORIES_WIZARD_CONTENT_PLUGIN_BODY = 'body'

Name of the plugin field to add wizard text.

get_setting(name)

Get setting value from django settings with fallback to globals defaults.

Per-Apphook Configuration

Many settings can be overridden per apphook instance via the StoriesConfig model in the Django admin. These include:

  • Permalink structure

  • Placeholder vs. rich text content

  • Abstract field usage

  • Related posts

  • Default author

  • Pagination

  • Template prefix

  • Menu structure

  • Sitemap changefreq and priority

  • Social meta defaults (Open Graph, Twitter, Schema.org)

class StoriesConfig(*args, **kwargs)

Class representing a stories configuration.

This class inherits from TranslatableModel.

type

Represents the type of the stories config.

Type:

models.CharField

namespace

Represents the namespace of the instance.

Type:

models.CharField

translations

Represents the translated fields of the stories config.

Type:

TranslatedFields

default_image_full

Represents the default size of full images.

Type:

models.ForeignKey

default_image_thumbnail

Represents the default size of thumbnail images.

Type:

models.ForeignKey

url_patterns

Represents the structure of permalinks.

Type:

models.CharField

use_placeholder

Represents whether to use placeholder and plugins for article body.

Type:

models.BooleanField

use_abstract

Represents whether to use abstract field.

Type:

models.BooleanField

use_related

Represents whether to enable related posts.

Type:

models.SmallIntegerField

urlconf

Represents the URL config.

Type:

models.CharField

set_author

Represents whether to set author by default.

Type:

models.BooleanField

paginate_by

Represents the number of articles per page for pagination.

Type:

models.SmallIntegerField

template_prefix

Represents the alternative directory to load the stories templates from.

Type:

models.CharField

menu_structure

Represents the menu structure.

Type:

models.CharField

menu_empty_categories

Represents whether to show empty categories in menu.

Type:

models.BooleanField

sitemap_changefreq

Represents the changefreq attribute for sitemap items.

Type:

models.CharField

sitemap_priority

Represents the priority attribute for sitemap items.

Type:

models.DecimalField

object_type

Represents the object type.

Type:

models.CharField

og_type

Represents the Facebook type.

Type:

models.CharField

og_app_id

Represents the Facebook application ID.

Type:

models.CharField

og_profile_id

Represents the Facebook profile ID.

Type:

models.CharField

og_publisher

Represents the Facebook page URL.

Type:

models.CharField

og_author_url

Represents the Facebook author URL.

Type:

models.CharField

og_author

Represents the Facebook author.

Type:

models.CharField

twitter_type

Represents the Twitter type field.

Type:

models.CharField

twitter_site

Represents the Twitter site handle.

Type:

models.CharField

twitter_author

Represents the Twitter author handle.

Type:

models.CharField

gplus_type

Represents the Schema.org object type.

Type:

models.CharField

gplus_author

Represents the Schema.org author name abstract field.

Type:

models.CharField

type

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

namespace

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

translations

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

default_image_full

Default size of full images

default_image_thumbnail

Default size of thumbnail images

url_patterns

Structure of permalinks (get_absolute_url); see AVAILABLE_PERMALINK_STYLES

use_placeholder

USE_PLACEHOLDER)

Type:

Use placeholder and plugins for article body (default

use_abstract

USE_ABSTRACT)

Type:

Use abstract field (default

use_related

USE_RELATED)

Type:

Enable related posts (default

set_author

AUTHOR_DEFAULT)

Type:

Set author by default (default

paginate_by

PAGINATION)

Type:

When paginating list views, how many articles per page? (default

template_prefix

“”)

Type:

Alternative directory to load the stories templates from (default

menu_structure

MENU_TYPE_COMPLETE, see MENU_TYPES)

Type:

Menu structure (default

menu_empty_categories

MENU_EMPTY_CATEGORIES)

Type:

Show empty categories in menu (default

sitemap_changefreq

SITEMAP_CHANGEFREQ_DEFAULT, see: SITEMAP_CHANGEFREQ)

Type:

Sitemap changefreq (default

sitemap_priority

SITEMAP_PRIORITY_DEFAULT)

Type:

Sitemap priority (default

object_type

TYPE, see TYPES)

Type:

Object type (default

og_type

FB_TYPE, see FB_TYPES)

Type:

Facebook type (default

og_app_id

FB_PROFILE_ID)

Type:

Facebook application ID (default

og_profile_id

FB_PROFILE_ID)

Type:

Facebook profile ID (default

og_publisher

FB_PUBLISHER)

Type:

Facebook page URL (default

og_author_url

FB_AUTHOR_URL)

Type:

Facebook author URL (default

og_author

FB_AUTHOR)

Type:

Facebook author (default

twitter_type

TWITTER_TYPE)

Type:

Twitter type field (default

twitter_site

TWITTER_SITE)

Type:

Twitter site handle (default

twitter_author

TWITTER_AUTHOR)

Type:

Twitter author handle (default

gplus_type

SCHEMAORG_TYPE)

Type:

Schema.org object type (default

gplus_author

SCHEMAORG_AUTHOR)

Type:

Schema.org author name abstract field (default

send_knock_create

Send notifications on post update. Requires channels integration

send_knock_update

Send notifications on post update. Requires channels integration

get_app_title()
save(*args, **kwargs)

Delete menu cache upon safe

delete(*args, **kwargs)

Delete menu cache upon delete

property schemaorg_type

Compatibility shim to fetch data from legacy gplus_type field.

exception DoesNotExist
exception MultipleObjectsReturned
app_title

Descriptor for translated attributes.

This attribute proxies all get/set calls to the translated model.

authorentriesplugin_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

default_image_full_id
default_image_thumbnail_id
featuredpostsplugin_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

genericblogplugin_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

get_use_related_display(*, field=<django.db.models.fields.SmallIntegerField: use_related>)
id

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

latestpostsplugin_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

object_name

Descriptor for translated attributes.

This attribute proxies all get/set calls to the translated model.

post_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

postcategory_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

Example Configuration

# djangocms-stories settings
STORIES_PAGINATION = 20
STORIES_USE_ABSTRACT = True
STORIES_USE_PLACEHOLDER = True
STORIES_USE_RELATED = True
STORIES_ALLOW_UNICODE_SLUGS = True

# SEO optimization
STORIES_META_DESCRIPTION_LENGTH = 320
STORIES_META_TITLE_LENGTH = 70

# Feed settings
STORIES_FEED_CACHE_TIMEOUT = 3600
STORIES_FEED_LATEST_ITEMS = 10
STORIES_FEED_TAGS_ITEMS = 10

# Plugin templates
STORIES_PLUGIN_TEMPLATE_FOLDERS = (
    ('plugins', _('Default template')),
)

# Versioning (requires djangocms-versioning)
STORIES_VERSIONING_ENABLED = True