django CMS page extension to handle sitemap customization
Support Python version:
- Python 2.7, 3.5, 3.6, 3.7
Supported Django versions:
- Django 1.11 to 2.2
Supported django CMS versions:
- django CMS 3.6+
Note
djangocms-page-sitemap 0.8 has been relicensed with BSD license.
Note
djangocms-page-sitemap 0.7 dropped compatibility with django CMS < 3.6. 0.6.x releases will be made if necessary after 0.6 release.
- Support for changefreq and priority customisation per-page
- Option to exclude a page from the Sitemap
- Values are cached
- django CMS toolbar integration
- Available on Divio Cloud
Install djangocms-page-sitemap:
pip install djangocms-page-sitemap
Add to
INSTALLED_APPS
withdjango.contrib.sitemaps
:INSTALLED_APPS = [ ... 'django.contrib.sitemaps', 'djangocms_page_sitemap', ]
Add to the urlconf, eventually removing django CMS sitemap:
from djangocms_page_sitemap import sitemap_urls ... urlpatterns = [ url(r'^admin/', include(admin.site.urls)), ... url(r'^', include(sitemap_urls)), ... ]
Add the following snippets to the django CMS templates:
{% load robots_index %} ... <head> <!-- somewhere in the head tag --> {% page_robots %} </head> ...
If you need to provide a custom sitemap configuration (for example to add more sitemap classes to it, you can append the sitemap url explicitly:
from django.contrib.sitemaps.views import sitemap from djangocms_page_sitemap.sitemap import ExtendedSitemap from myapp.sitemaps import MySiteSitemap urlpatterns = patterns( '', ... url(r'^sitemap\.xml$', sitemap, {'sitemaps': { 'cmspages': ExtendedSitemap, 'myapp': MySiteSitemap, } }), )
Add the following snippets to the django CMS templates:
{% load robots_index %} ... <head> <!-- somewhere in the head tag --> {% page_robots %} </head> ...
After installing as above, you will be able to tune the sitemap setting for each page.
A new menu item Sitemap properties
will be available in the page toolbar.
For each page you will be able to set the following flags / values:
- Sitemap changefreq (default: the django CMS default)
- Sitemap priority (default: 0.5)
- Include page in sitemap (default:
True
) - Set
noindex
value to page robots meta tag - Set
noarchite
value to page robots meta tag - Provide any additional robots meta tag values
page_robots
meta tag accepts the following parameters:
page
: the page to render robots meta tag (default: current page). Can be any valid page lookupsite
: the current site id (default: current site).
- PAGE_SITEMAP_CHANGEFREQ_LIST: List of frequency changes
- PAGE_SITEMAP_DEFAULT_CHANGEFREQ: Default changefrequency (default: django CMS value -monthly-)
- PAGE_SITEMAP_CACHE_DURATION: Cache duration: same as django CMS menu cache)