[TYPO3] Breadcrumb as hierarchical <ul> [solved]
Xavier Perseguers
typo3 at perseguers.ch
Thu Jul 17 11:40:57 CEST 2008
>> I would like to get
>>
>> Home
>> level1
>> level2
>> current page
>>
>> that is
>>
>> <ul>
>> <li>Home
>> <ul>
>> <li>level1
>> <ul>
>> <li>level2
>> <ul>
>> <li>current page</li>
>> </ul>
>> </li>
>> </ul>
>> </li>
>> </ul>
>> </li>
>> </ul>
A working solution:
page.includeLibs.test = fileadmin/rootline.inc
lib.breadcrumb = HMENU
lib.breadcrumb {
special = userfunction
special.userFunc = user_menuFunc->makeMenuRootline
special.entryLevel = 3
1 = TMENU
1.noBlur = 1
1.wrap = <ul> | </ul>
1.NO {
stdWrap.field = title
ATagTitle.field = nav_title // title
wrapItemAndSub = <li> | </li>
}
2 < .1
3 < .1
4 < .1
5 < .1
6 < .1
7 < .1
8 < .1
}
<?php
class user_menuFunc {
// The backReference to the mother cObj object set at call time
var $cObj;
function makeMenuRootline($content, $conf) {
// Retrieve the UID of the updated page and the language
$data = $this->cObj->parentRecord['data'];
$uid = $data['uid'];
$language = $data['_PAGES_OVERLAY'] ? $data['_PAGES_OVERLAY'] : 0;
$entryLevel = intval($conf['entryLevel']);
// Get the rootline
$GLOBALS['TSFE']->sys_page =
t3lib_div::makeInstance('t3lib_pageSelect');
$rootline = $GLOBALS['TSFE']->sys_page->getRootLine($uid,'');
$menuRootline = array();
for ($i = count($rootline) - 1; $i >= $entryLevel; $i--) {
$item = $rootline[$i];
$page_uid = $item['uid'];
// Is there a translation to be found?
if ($language) {
$overlay =
$GLOBALS['TSFE']->sys_page->getPageOverlay($page_uid, $language);
if ($overlay) $item = array_merge($item, $overlay);
}
if (count($menuRootline)) {
$item['_SUB_MENU'] = array($menuRootline);
}
$menuRootline = $item;
}
return array($menuRootline);
}
}
?>
--
Xavier Perseguers
http://xavier.perseguers.ch/en/tutorials/typo3.html
More information about the TYPO3-english
mailing list