Подскажите пожалуйста как вывести нужную часть {menu}:
пример - есть страницы
1 главная
2 контакты
3 каталог
3.1 масла
3.2 другая всячина
3.2.1 еще глубже
3.2.2 я здесь
3.2.2.1 ывапывап
3.3 вавпвап
3.3.1 вапрвапрва
3.3.2 ывапывап
хотелось чтоб при выборе страницы 3.2.2.1 или 3.2.2 выводились все из 3.2 включая дочерние, при выборе 3.3.1 или 3.3.2 выводилось все с дочерними из меню 3.3
Вывести дочерние и сестринские меню я уже узнал как, но как можно вывести родительский пункт меню или в идеале - узнать "номер иерархии" обрезать лишнее до требуемого уровня и вывести все что в нем или как то отследить наличие в дочерних элементах текущей страницы и вывести нужную часть. Буду очень благодарен ибо мало примеров в сети с извращениями по {menu}
Как вывести {menu} с нужной структурой?
Re: Как вывести {menu} с нужной структурой?
Вот оригинал, который позволяет получить алиас родительской страницы первого уровня.
А вот изменённый тег, позволяющий указать уровень родительской страницысоответственно вызовlevel=1, т.к. вам требуется 3.2 и 3.3. После получения алиаса страницы 3.2 или 3.3 можно вызвать
А вот изменённый тег, позволяющий указать уровень родительской страницы
Code: Select all
$manager = cmsms()->GetHierarchyManager();
if( !isset($params['level']) ) $params['level'] = 0;
$var = isset($params['assign']) ? $params['assign'] : 'root_page_alias';
$result = "NO RESULT";
$thisPage = $smarty->get_template_vars('content_id');
$currentNode = $manager->sureGetNodeById($thisPage);
while( isset($currentNode) && $currentNode->getLevel() >= $params['level'] )
{
$currentContent =& $currentNode->getContent();
$result = $currentContent->Alias();
$currentNode =& $currentNode->getParentNode();
}
$smarty->assign($var,$result);
Code: Select all
{get_root_page_alias assign=alias_page level=1}
Code: Select all
{menu start_page=$alias_page}