[РЕШЕНО] Как в drupal 7 вывести только третий уровень меню программно.

Главные вкладки

Комментарии

Аватар пользователя elf39 elf39 23 сентября 2013 в 18:20

Спасибо конечно за ссылку, но в теме написано «программно» то есть с помощью шаблонов и кодов а не модулей.

Аватар пользователя elf39 elf39 23 сентября 2013 в 23:17

Спасибо, я всегда удивлялся некоторым людям на этом форуме. Не кому не в обиду сказано. Тут или в гугл отправляют или API читать, что там, что там был и после этого только задал вопрос. Я даже переводы этих ссылок по находил с разъяснениями, ну разъяснения уж очень скудные были, что больше запутали.

Аватар пользователя drupby drupby 24 сентября 2013 в 0:53

"elf39" wrote:
Спасибо, я всегда удивлялся некоторым людям на этом форуме. Не кому не в обиду сказано. Тут или в гугл отправляют или API читать, что там, что там был и после этого только задал вопрос. Я даже переводы этих ссылок по находил с разъяснениями, ну разъяснения уж очень скудные были, что больше запутали.

в таком случае 1 комментарий - ваш вариант

Аватар пользователя elf39 elf39 24 сентября 2013 в 9:14

"drupby" wrote:
в таком случае 1 комментарий - ваш вариант

Вот это ответ достойный уважения, где плюсануть.
А теперь пожалуйста подскажите тот кто на самом деле знает друпал, а не тот кто научился гуглом пользоваться, я так понимаю там всего то нужно какое то условие template.php переписать.

Аватар пользователя elf39 elf39 24 сентября 2013 в 19:04

Не когда не пойму некоторых людей. Нужно было то помочь тремя строками.

Для остальных, кому то да понадобится и цирк что бы заново не устраивать.

В page.tpl.php

<?php
$menu 
menu_build_tree('main-menu', array('min_depth'=>3));
$menu_items render(menu_tree_output($menu));
print 
$menu_items;
?>

Где 'min_depth'=>3 от какого уровня строить меню, так же можно в обратную сторону 'max_depth'

Аватар пользователя drupby drupby 24 сентября 2013 в 19:14

"elf39" wrote:
Не когда не пойму некоторых людей. Нужно было то помочь тремя строками.

Если хочешь помочь голодному, дай ему не рыбу, дай удочку.
я тебе дал ссылку на функцию ,которая строит дерево меню с заданными параметрами ,а как его потом отрендерить и куда вывести - это уже сам решай

Аватар пользователя elf39 elf39 24 сентября 2013 в 23:37

"drupby" wrote:
Если хочешь помочь голодному, дай ему не рыбу, дай удочку.

Спасибо конечно, но на эти ссылки я еще и до этого комента наткнулся. Проблема вся была $menu_items = render(menu_tree_output($menu)); вот на это я потратил 2 дня, нового нечего не узнал. Может подскажите еще одну вещь, как теперь сделать, что бы выводились подпункты активного пункта. То есть:

-Фрукт
--Яблоко
--Груша
--Слива
-Ягода
--Арбуз
--Малина
--Черника

Когда открыть пункт меню Фрукты, Яблоко, груша, слива то показывались только Яблоко, груша, слива, а остальные скрыты.

Аватар пользователя drupby drupby 25 сентября 2013 в 0:05

ну обычно выводят же к примеру только первый уровень ,а второй выводят только для активного пункта первого уровня и причем отдельно
а как вы хотите я честно не понял - покажите работающий пример

Аватар пользователя elf39 elf39 25 сентября 2013 в 2:25

"drupby" wrote:
только первый уровень ,а второй выводят только для активного пункта первого уровня и причем отдельно

Вот так мне и нужно. Я понимаю логику (если Уровень 1 меню активный, показать его детей), а вот как это реализовать на друпале не знаю.

Аватар пользователя drupby drupby 25 сентября 2013 в 3:30

ну как вариант использовать функцию menu_tree_page_data , которая возвращает массив с родительскими ссылками ,
у которых в подмассиве ,если пункт активный , в элементе bellow ,будут дочерние пункты меню
а у неактивных соответственно bellow будет empty
но я бы не изобретал велосипед из костылей , а все же воспользовался menu_block
ну или хотя бы посмотрел в код этого модуля

Аватар пользователя elf39 elf39 25 сентября 2013 в 12:23

"drupby" wrote:
воспользовался menu_block

Просто каждый модуль все больше и больше тормозит сайт, да и потом в дальнейшем этот модуль не подойдет, в дальнейшем планирую в зависимости от куда перешел пользователь, отображать разные меню, вот тут начнутся проблемы с этим модулем.

Аватар пользователя drupby drupby 25 сентября 2013 в 16:29

"elf39" wrote:
Просто каждый модуль все больше и больше тормозит сайт, да и потом в дальнейшем этот модуль не подойдет, в дальнейшем планирую в зависимости от куда перешел пользователь, отображать разные меню, вот тут начнутся проблемы с этим модулем.

ну тогда советую плотно подсесть вот сюда
там очень много интересного и нужного для решения подобных задач

Аватар пользователя elf39 elf39 25 сентября 2013 в 16:41

"drupby" wrote:
ну тогда советую плотно подсесть вот сюда

Спасибо буду тыкаться. Осталось самая малость, английский выучить.

Аватар пользователя oploshka oploshka 9 марта 2014 в 17:13

Возможно кому-то пригодится на будущее решение, хоть и статья старая. Через javascript скрываете, или просто вытаскиваете меню третьего уровня и браузер сделает все за вас. Другое решение (более сложное), выташить меню третьего уровня ручками и отрендерить его.