/** * Get the subnavigation html * syntax: {$var|getsubnavigation[:type[:parentId[:startdepth[:enddepth[:'excludeIds-splitted-by-dash']]]]]} * * NOTE: When supplying more than 1 ID to exclude, the single quotes around the dash-separated list are mandatory. * * @param string[optional] $var The variable. * @param string[optional] $type The type of navigation, possible values are: page, footer. * @param int[optional] $pageId The parent wherefore the navigation should be build. * @param int[optional] $startDepth The depth to strat from. * @param int[optional] $endDepth The maximum depth that has to be build. * @param string[optional] $excludeIds Which pageIds should be excluded (split them by -). * @return string */ public static function getSubNavigation($var = null, $type = 'page', $pageId = 0, $startDepth = 1, $endDepth = null, $excludeIds = null) { // build excludeIds if ($excludeIds !== null) { $excludeIds = (array) explode('-', $excludeIds); } // get info about the given page $pageInfo = FrontendNavigation::getPageInfo($pageId); // validate page info if ($pageInfo === false) { return ''; } // split URL into chunks $chunks = (array) explode('/', $pageInfo['full_url']); // init var $parentURL = ''; // build url for ($i = 0; $i < $startDepth - 1; $i++) { $parentURL .= $chunks[$i] . '/'; } // get parent ID $parentID = FrontendNavigation::getPageId($parentURL); try { // get HTML $return = (string) FrontendNavigation::getNavigationHtml($type, $parentID, $endDepth, $excludeIds); } catch (Exception $e) { return ''; } // return the var if ($return != '') { return $return; } // fallback return $var; }