Permalink
Browse files

Framework-compatible breadcrumbs

Add new options to getCrumbList to allow it to be used to make
breadcrumbs in Twitter Bootstrap or Zurb foundation. Follows the model
of PaginatorHelper
  • Loading branch information...
1 parent ed2f701 commit 6f238a40480e1d5de2e8471d2acd7f0adb865fcd @HaroldPutman HaroldPutman committed Oct 2, 2012
Showing with 16 additions and 2 deletions.
  1. +16 −2 lib/Cake/View/Helper/HtmlHelper.php
@@ -681,13 +681,24 @@ public function getCrumbs($separator = '»', $startText = false) {
* 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.
* @return string breadcrumbs html list
* @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 @@ public function getCrumbList($options = array(), $startText = false) {
$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);
}

0 comments on commit 6f238a4

Please sign in to comment.