madhouse/slugger

Hashes the Id of an entry when it is saved and replaces the slug.

Installs: 2 205

Dependents: 0

Suggesters: 0

Security: 0

Stars: 3

Watchers: 4

Forks: 2

Open Issues: 4

Type:craft-plugin

1.0.4 2021-03-19 14:48 UTC

README

Slugger is a Craft plugin that hashes the Id of an entry when it is saved and replaces the slug with the hash.

This plugin uses the Hashids library to generate the slugs.

This plugin copies heavily from Alec Ritson's Slugged plugin for Craft 2. Thanks, Alec. 😃 (The section override works in this version btw.)

Requirements

This plugin requires Craft CMS 3.0.0 or later.

Installation

Visit the Plugin Store in your Craft 3 control panel and install from there. Slugger costs nothing. Visit the Plugin Store in your Craft 3 control panel. It costs nothing.

Or...

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Then tell Composer to load the plugin:

     composer require madhouse/slugger
    
  3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Slugger.

Configuration

All configuration is done in the plugin settings page in the admin area.

Plugin settings

Salt
Set the salt to use when hashing

Default: Change me to something else

Default length
The length of the hash, this will be overwritten with any length defined for a section

Default: 8

Alphabet
The characters to use when generating the slug.

Default: abcdefghijklmnopqrstuvwxyz123456789

Sections
The only sections that will be listed are editable sections (no singles obvs). If you add a length to a section this will override the default set above. A section must be enabled for the hashing to happen, regardless of whether you add a length override or not.

Using Slugger

Enable your section in the settings. Make a new entry. Save it. Voila... hashed slug.

You can decode the hash using the decode template variable.

  {# get the hash value from the url #}
  {% set hash = craft.app.request.getSegment(2) %}
    
  {# use slugger’s decode method to get the ID #}
  {% set entryId = craft.slugger.decode(hash) %}

Support, issues, feedback

If you experience any problems please create a new issue here on the repo.

Brought to you by Madhouse