[Решено] Опять про кастомизацию меню

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

Аватар пользователя oksale oksale 19 февраля 2009 в 19:14

Форум перечитала, но ответа на свой вопрос не нашла.

Итак, задача: переопределить вывод меню (убрать ... и т.д.).
С чем разобралась на данный момент: переопределила функции
phptemplate_menu_tree
phptemplate_menu_item
phptemplate_menu_item_link

Главная задача: переопределить вывод ТОЛЬКО для меню menu-top. Т.е. как мне идентифицировать, с каким меню я работаю?

И второй вопрос: как можно переопределить вывод меню через шаблон? Не могу ссылку найти.

PS:
Большая просьба-объясните с учетом того, что в Drupal я совсем новичек (с пхп проблем нет).

Комментарии

Аватар пользователя digital_sword digital_sword 19 февраля 2009 в 21:18

Нефига не понял. Объясните доступно, что вы хотите получить. Без терминов/
Например: Хочу чтобы только menu-top как-то по-другому работало. Или как-то выделялось

Аватар пользователя oksale oksale 20 февраля 2009 в 13:44

Ок. Хочу переопределить вывод одного меню, не троагая все остальные - для них оставить отображение по умолчанию. Переопределить не стилями, а именно хтмл-код изменить.

Аватар пользователя digital_sword digital_sword 20 февраля 2009 в 14:37

А вас там что, лабораторная работа: "Изменить html код меню друпала"?
Идея скорее всего решается стандартными методами, без изменения модуля меню. Вы напишите что хотите (сейчас так, хочу вот так вот и в этом месте), вам тут посоветуют.
А хтмл код везде стандартное

<ul>
 <li>..</li>
</ul>
Аватар пользователя oksale oksale 20 февраля 2009 в 14:53

У меня код выглядит таким образом:

<ul>
   <span id="thmr_85" class="thmr_call">  <li><span id="thmr_85" class="thmr_call">  <a href="node/1">First link</a></span> </li> </span>
   <span id="thmr_88" class="thmr_call">  <li><span id="thmr_87" class="thmr_call">  <a href="<front>">Second link</a></span> </li> </span>
</ul>

Нужно:

<ul>
<li><a class="hide" href="../ie/index.html">Node1</a>

<!--[if lte IE 6]>
<a href="">Node1
<table><tr><td>
<![endif]-->
        <ul>
        <li><a href="../ie/exampleone.html" title="example one">example one<span>Some span text</span></a></li>
        <li><a href="../ie/weft.html" title="example two">example two<span>Some span text</span></a></li>
        </ul>

<!--[if lte IE 6]>
</td></tr></table>
</a>
<![endif]-->

</li>
...
...

Аватар пользователя digital_sword digital_sword 20 февраля 2009 в 15:05

Это что, правда лабораторная работа?
У вас цель какая: получить именно такой html код, или чтобы для пользователя страница показывалась нужным образом?

Как переопределить одно меню: хз. Думаю, там есть другое простое решение. Если бы только огласили задачу не как программист, а как пользователь

Аватар пользователя oksale oksale 20 февраля 2009 в 15:13

Как пользователь - попробую.
Это не лаюлраторная работа, а моя первая неделя знакомства с друпалом. Время поджимает, а решение нейти все никак не могу Sad

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

Аватар пользователя digital_sword digital_sword 20 февраля 2009 в 15:19

В этих случаях используют другой модуль для меню под шапкой. Или, если меню не большое, просто пишут его код и запихивают в блок под шапкой.

Аватар пользователя oksale oksale 20 февраля 2009 в 15:28

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

Я максимально подробно объясню задачу именно с этим меню.
Меню 4-х уровневое. Первые два уровня выводятся под шапкой в виде горизонтального раскрывающегося меню. Остальные два уровня выводятся в зависимости от выбранного пункта основного меню в левом блоке в виде вертикального меню, тоже со своим дизайном, на каждой странице. Поэтому если я основное меню напишу руками, то как быть с левым меню?

Аватар пользователя digital_sword digital_sword 20 февраля 2009 в 17:03

"oksale" wrote:
Про другой модуль можно поподробнее?

http://drupal.ru/node/11082 . Там не все, остальные смотрите на орге. Может, найдете конкретно под ваш пример.

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

точно такую же задачу решал полтора года назад, на сайт florang.ru. На форуме решения не дали. Делал самописное горизонтальное меню, засунул в блок. Те подменю меню, что слева, раскидал по блокам. Каждому блоку в настройках видимости блока указывал тот адрес, в котором оно должно появляться. Например: подменю товаров: tovar/*.

Есть вариант: спрятать в левом меню первые 2 уровня с помощью CSS. Тогда по блокам раскидывать не придется. Будет показываться как раз только подменю 3го уровня.

Если хотите кастомизировать, гляньте http://www.drupal.ru/node/21578

Аватар пользователя oksale oksale 24 февраля 2009 в 14:53

digital_sword, спасибо за помощь.

"digital_sword" wrote:
Если хотите кастомизировать, гляньте http://www.drupal.ru/node/21578[/quote]
Сделала так как описано в этом топике - получилось.
Решила сделать основное меню таким образом как там написано, а для боковых меню использовать ваш алгоритм:
"digital_sword" wrote:
Те подменю меню, что слева, раскидал по блокам. Каждому блоку в настройках видимости блока указывал тот адрес, в котором оно должно появляться. Например: подменю товаров: tovar/*.

Соответственно, тоже с кастомизацией.