закладки

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

Аватар пользователя Splinter Splinter 5 июня 2008 в 19:39

Помогите с реализацией такой задачи: есть список автошкол, каждая автошкола имеет одни и теже пункты меню (о нас, автомобили, экзамены и тд) так вот как сделать так чтобы, при выборе одной из автошкол, появлялось дополнительное горизонтальное меню сверху контента!
Какими модулями можно это реализовать? пробовал quick Tabs, но почему то на закладку нельзя поставить отображение простой страницы, которую можно было бы создать через меню "создать материал", а только вид созданый через views или отображение иерархии меню!

Комментарии

Аватар пользователя SaBoNim SaBoNim 5 июня 2008 в 20:12

Создайте древовидное меню. Потом укажите его в настройках как основное и второстепенное. А в теме выводите основное как primary_links, а второстепенное как secondary_links. Подробнее здесь.

Аватар пользователя edhel edhel 5 июня 2008 в 20:37

Да, надо делать разделы и подразделы и просто выводить secondary_links в нужном месте в теме (в page.tpl.php перенести кусок).

Аватар пользователя Splinter Splinter 5 июня 2008 в 22:37

всем огромное спасибо за помощь, но это маленько не то!
У меня primary используются уже, поэтому при выборе secondary, где ставлю "автошколы" появляется просто список автошкол с ссылками на соответствующие разделы!

С Panels весьма интересно получилось, хотя опять же не подходит!:( но есть свои плюсы, разобрался в модуле, понял преемущества, буду юзать его в дальнейшем!

Возможно ли создание меню "автошколы" и в дальнейшем размещать его в макете дизайна, аналогично primary и secondary меню?

Аватар пользователя cardina1 cardina1 6 июня 2008 в 10:07

Можно создать в меню навигации такую структуру:

Навигация
-Автошколы
--Автошкола 1
---о нас
---автомобили
---экзамены
--Автошкола 2
---о нас
---автомобили
---экзамены
--Автошкола 3
---о нас
---автомобили
---экзамены

Для этого в меню навигации надо руками создать такую структуру:

Навигация
-Автошколы

Затем в нодах описывающих школу N в разделе «Настройки меню» указать родительский пункт Навигация -> Автошколы. Аналогично в нодах «о нас» и т.п. указывать родительский пункт «Автошкола N».

После этого создать блок с таким ПХП кодом

<?= menu_tree(menu_get_active_nontask_item())?>

(не забудьте сменить «Формат ввода» на PHP code)

Этот код будет выводить всех потомков пункта меню указанного в текущем ноде. Т.е. для нода Автошкола 1 выведет "о нас", "автомобили", "'экзамены". После этого выводить этот блок только на страницах с автошколами.

Аватар пользователя Splinter Splinter 6 июня 2008 в 21:53

cardina1, пример отличный, но есть серъёзный минус, при нажатии на кнопку "о нас" или любой другой, блок перестанет отображать подменю конкретной школы!:(

Аватар пользователя cardina1 cardina1 7 июня 2008 в 10:21

Это можно поправить. Для этого зафиксируем уровень вложенности отображаемого меню:
0 – Навигация,
1 – Автошколы,
2 – конкретная автошкола (то, что нужно)

Код блока изменится так:
<?
$active_level = 2;
// _menu_get_active_trail() body part (a little changed)
$trail = array();
$mid = menu_get_active_nontask_item();
while ($mid && ($item = menu_get_item($mid)))
{
array_unshift($trail, $mid);
$mid = $item['pid'];
}
// _menu_get_active_trail() end
echo menu_tree($trail[$active_level]);
?>

Здесь $active_level это номер закрепляемого уровня. Можно было использовать функцию _menu_get_active_trail() чтобы получить всех предков активного узла (массив $trail), однако эта функция не документирована, а значит, может исчезнуть или измениться от версии к версии, поэтому лучше ручками.

Аватар пользователя Splinter Splinter 7 июня 2008 в 23:41

cardina1. всё супер, огромное спасибо!
Вот только последняя партия вопросов:
1. как сделать чтобы вывод был в строку, а не в столбец?
2. где надо копать чтобы блок с подменю выводился в самом верху контента? а то если добавить ноду на эту страницу, всё содержимое оказывается выше чем меню? page.tpl.php полностью перелопатил, там есть переменная content которая выводит и блоки и ноды в контенте, а вот где она формируется, чтобы её можно было изменить не понятно маленько!:(
3. вробовал реализовать второй пункт через panels, но стандартные виды меня не устраивают, как можно создать свой вид для модуля panels?
4. откуда ты знаешь стандартные переменные друпал? где можно взглянуть на весь список?

эх... пора учить и мне php!:)

Аватар пользователя cardina1 cardina1 8 июня 2008 в 18:07

Да если хотите друплом (да и любой PHP CMS) пользоваться всерьез то PHP знать нужно. Благо это простой язык и учится на раз Smile

Что касается ваших вопросов:
1 Надо задать стиль пункта меню (li) в CSS файле и в том числе написать в нем display:inline. Например, если у Вас код блока завернут в div с классом hMenu т.е.

<div class=«hMenu»>
...код блока...
</div>

то в CSS-файле темы (внизу) нужно прописать стиль

.hMenu ul li
{
display:inline;
}

2 для этого проще создать новый регион (http://drupal.org/node/29139) разместить его на шаблоне страницы перед контентом и поместить в него блок. Либо поместить блок в регион header.

4 http://drupal.org/phptemplate, http://api.drupal.ru/api/5

Аватар пользователя Гость Гость (не проверено) 8 июня 2008 в 3:16

Я приношу извенения что пишу сюда и не по теме просто не могу создать новую не удается зарегится...
Нужна очень срочная помощь
первый вопрос как обычную страницу htm pзагрузить а сайт друпала?
а второй вопрос както может создать модуль (бесплатно или за умеренную плату?)
очень нужно

плиз кто то откликнетесь
тут жзнь на волоске из за этого модуля висит.....
уже не знаю что делать (((
ну не умею я програмировать..... (((