Sluggable Behavior - Generate Unique Slug In CakePHP
On the web, “slug” is a short text used in a URL to identify and describe a resource. Sluggable behavior is cakephp model behaviors that allow us to generate unique slug. Sluggable Behavior who created by eberfreitas is a simpler version of Mariano Iglesias’ Sluggable Behavior with a few add-ons. It’s basically the same thing but instead of implementing all the slug logic on the behavior, it just uses Cake’s Inflector::slug() method. With CakePHP 1.3, this method is really powerful and flexible.
To use it, just place the behavior file on the proper place (/app/models/behaviors/)and call it on the model you want to “slugify”:
var $actsAs = array('Sluggable');
To use it, just place the behavior file on the proper place and call it on the model you want to “slugify”: var $actsAs = array(‘Sluggable’); By default, this will automatically create slugs from a field named “title” and place it under a field named “slug”. If you want, you can customize everything. Checkout the configuration keys:
var $actsAs = array( 'Sluggable' => array( 'fields' => 'title', 'scope' => false, 'conditions' => false, 'slugfield' => 'slug', 'separator' => '-', 'overwrite' => false, 'length' => 256, 'lower' => true ) );
Source: http://eberfreitas.virb.com/blog/text/12619608
2 Comments
Jon L
01.18.2011
I wasn’t aware another sluggable behavior existed. Do you think I should change or it doesn’t matter. Also, do you know how to use this behavior to make pretty urls? Thank you
Mufti Ali
01.18.2011
Hi Jon, this behaviour allow You to create unique slug, you can also setting the maximum slug length. To implement this plugin is pretty simple. Put this behaviour in your behaviours folder (/app/models/behaviours/), and put this code to your model, eg user.php
var $actsAs = array(
'Sluggable' => array(
'fields' => 'title',
'scope' => false,
'conditions' => false,
'slugfield' => 'slug',
'separator' => '-',
'overwrite' => false,
'length' => 256,
'lower' => true
),
'Containable'
);
There are no trackbacks to display at this time.