Skip to content
addon for Cockpit CMS to create unique slugs
Branch: master
Clone or download
raffaelj Merge pull request #2 from raffaelj/localize
wrong count fix and localize feature
Latest commit 4d2f660 Apr 24, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE added license file MIT Mar 25, 2019
README.md readme update Apr 24, 2019
bootstrap.php added optional unique check on user change/update, fixes #1 Apr 24, 2019

README.md

UniqueSlugs

Unique slugs for collections in Cockpit CMS

Installation

Copy this repository into /addons and name it UniqueSlugs or

cd path/to/cockpit
git clone https://github.com/raffaelj/cockpit_UniqueSlugs.git addons/UniqueSlugs

How to use

Add these options to cockpit/config/config.yaml to specify the collections and field names for slug generation:

unique_slugs:
    collections:
        pages     : title
        products  : name

all options:

# unique slugs
unique_slugs:
    slug_name      : slug        # default: "slug"
    placeholder    : page        # default: "entry"
    check_on_update: true        # default: false, unique checks on each update (if user changes slug by hand)
    delimiter      : |           # default: "|", is used for nested fields
    collections    :
        pages      : title
        products   : name
        something  :             # use multiple fields as fallbacks
            - title
            - name
            - image|meta|title   # use nested fields for slugs
    localize       :             # for localized fields, omitted if not set
        pages      : title       # field name without suffix ("_de")
        products   : name
        something  :             # use multiple fields as fallbacks
            - title
            - name
            - image|meta|title   # use nested fields for slugs

Notes:

Don't set slug_name: fieldname_slug if you also set {"slug": true} in the fieldname options for some reason. It should work, but it fails on multilingual setups (explanation).

Your collection can have a visible field named "slug", if you want to edit it by hand.

The builtin option to sluggify text fields via options {"slug": true} in the backend uses Javascript and leads to different results ("ä" becomes "a" instead of "ae") (fixed). If you want unique slugs, that option is not necessary anymore.

The code for this addon is inspired by a gist from fabianmu.

Thanks to fabianmu and aheinze

Changelog

0.4.2

  • rewrite to object oriented style
  • added support for localized fields
  • incremental count didn't work correctly in the past - fixed
  • added optional unique check on each update, e. g. if user changes slug by hand, enable it with check_on_update: true

2018-10-25

  • fixed error if nested key doesn't exist
  • added placeholder to avoid empty strings as slugs

2018-10-19

  • added ability to use multiple fields for slug generation
  • added nested fields for slug generation
  • config name separators were changed from dots to underscores
    • added check for backwards compatibility - will be removed in the future
You can’t perform that action at this time.