Skip to content

Commit

Permalink
Framework-compatible breadcrumbs
Browse files Browse the repository at this point in the history
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
HaroldPutman committed Oct 2, 2012
1 parent ed2f701 commit 6f238a4
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions lib/Cake/View/Helper/HtmlHelper.php
Expand Up @@ -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 = '';
Expand All @@ -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);
}
Expand Down

0 comments on commit 6f238a4

Please sign in to comment.