Skip to content

nephila/djangocms-page-sitemap

Repository files navigation

djangocms-page-sitemap

Join the Gitter chat Latest PyPI version Python versions Latest Travis CI build status Test coverage Code Climate License

django CMS page extension to handle sitemap customization

Support Python version:

  • Python 3.9, 3.10, 3.11

Supported Django versions:

  • Django 3.2, 4.1, 4.2

Supported django CMS versions:

  • django CMS 3.9, 3.11

Note

djangocms-page-sitemap 0.8 has been relicensed with BSD license.

Note

djangocms-page-sitemap 1.0 dropped compatibility with Python 2 and Django < 2.2

Features

  • 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

Quickstart

  • Install djangocms-page-sitemap:

    pip install djangocms-page-sitemap
    
  • Add to INSTALLED_APPS with django.contrib.sitemaps:

    INSTALLED_APPS = [
        ...
        "django.contrib.sitemaps",
        "djangocms_page_sitemap",
    ]
  • Load it into the urlconf, eventually removing django CMS sitemap:

    ...
    urlpatterns = [
        path("admin/", admin.site.urls),
        ...
        path("", include("djangocms_page_sitemap.sitemap_urls")),
        ...
    ]
  • Load robots_index templatetag and add it to the page in the head tag of the django CMS pages (or in a shared base template):

    {% 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 = [
        ...
        path("sitemap.xml", sitemap, {
            "sitemaps": {
                "cmspages": ExtendedSitemap, "myapp": MySiteSitemap,
            }
        ),
        ...
    ]

django-app-enabler support

django-app-enabler is supported.

You can either

  • Installation & configuration: python -mapp_enabler install djangocms-page-meta
  • Autoconfiguration: python -mapp_enabler enable djangocms_page_meta

Fully using this package will require some changes that cannot be modified by django-app-enabler:

  • Remove any existing sitemap declaration from urls.py;
  • Load robots tags in the page like outlined above;
  • Run migrations: python manage.py migrate

Check documentation above for details.

Usage

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 noarchive value to page robots meta tag
  • Provide any additional robots meta tag values

page_robots options

page_robots meta tag accepts the following parameters:

  • page: the page to render robots meta tag (default: current page). Can be any valid page lookup
  • site: the current site id (default: current site).

Settings

  • 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)