[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