/** * Get the subnavigation html * syntax: {{ getsubnavigation($type, $parentId, $startdepth, $enddepth, $excludeIds-splitted-by-dash, $template) }} * * NOTE: When supplying more than 1 ID to exclude, the single quotes around the dash-separated list are mandatory. * * @param string $type The type of navigation, possible values are: page, footer. * @param int $pageId The parent wherefore the navigation should be build. * @param int $startDepth The depth to start from. * @param int $endDepth The maximum depth that has to be build. * @param string $excludeIds Which pageIds should be excluded (split them by -). * @param string $template The template that will be used. * * @return string */ public static function getSubNavigation($type = 'page', $pageId = 0, $startDepth = 1, $endDepth = null, $excludeIds = null, $template = '/Core/Layout/Templates/Navigation.html.twig') { // build excludeIds if ($excludeIds !== null) { $excludeIds = (array) explode('-', $excludeIds); } // get info about the given page $pageInfo = Navigation::getPageInfo($pageId); // validate page info if ($pageInfo === false) { return ''; } // split URL into chunks $chunks = (array) explode('/', $pageInfo['full_url']); // remove language chunk $hasMultiLanguages = FrontendModel::getContainer()->getParameter('site.multilanguage'); $chunks = $hasMultiLanguages ? (array) array_slice($chunks, 2) : (array) array_slice($chunks, 1); if (count($chunks) == 0) { $chunks[0] = ''; } // init var $parentURL = ''; // build url for ($i = 0; $i < $startDepth - 1; ++$i) { $parentURL .= $chunks[$i] . '/'; } // get parent ID $parentID = Navigation::getPageId($parentURL); try { // get HTML $return = (string) Navigation::getNavigationHTML($type, $parentID, $endDepth, $excludeIds, (string) $template); } catch (Exception $e) { return ''; } // return the var if ($return != '') { return $return; } // fallback return; }