diff --git a/lib/Cake/View/Helper/HtmlHelper.php b/lib/Cake/View/Helper/HtmlHelper.php
index fb53cf340..194bc31c3 100644
--- a/lib/Cake/View/Helper/HtmlHelper.php
+++ b/lib/Cake/View/Helper/HtmlHelper.php
@@ -681,6 +681,11 @@ class HtmlHelper extends AppHelper {
* similar to HtmlHelper::getCrumbs(), so it uses options which every
* crumb was added with.
*
+ * ### Options
+ * - 'separator' Separator content to insert in between breadcrumbs, defaults to '»'
+ * - 'firstClass' Class for wrapper tag on the first breadcrumb, defaults to 'first'
+ * - 'lastClass' Class for wrapper tag on current active page, defaults to 'last'
+ *
* @param array $options Array of html attributes to apply to the generated list elements.
* @param string|array|boolean $startText This will be the first crumb, if false it defaults to first crumb in array. Can
* also be an array, see `HtmlHelper::getCrumbs` for details.
@@ -688,6 +693,12 @@ class HtmlHelper extends AppHelper {
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#creating-breadcrumb-trails-with-htmlhelper
*/
public function getCrumbList($options = array(), $startText = false) {
+ $defaults = array('firstClass'=>'first', 'lastClass'=>'last', 'separator' => '');
+ $options += $defaults;
+ $firstClass = $options['firstClass'];
+ $lastClass = $options['lastClass'];
+ $separator = $options['separator'];
+ unset($options['firstClass'], $options['lastClass'], $options['separator']);
$crumbs = $this->_prepareCrumbs($startText);
if (!empty($crumbs)) {
$result = '';
@@ -701,9 +712,12 @@ class HtmlHelper extends AppHelper {
$elementContent = $this->link($crumb[0], $crumb[1], $crumb[2]);
}
if ($which == 0) {
- $options['class'] = 'first';
+ $options['class'] = $firstClass;
} elseif ($which == $crumbCount - 1) {
- $options['class'] = 'last';
+ $options['class'] = $lastClass;
+ }
+ if (!empty($separator) && ($crumbCount - $which >= 2)) {
+ $elementContent .= $separator;
}
$result .= $this->tag('li', $elementContent, $options);
}