Добрый день .
Необходимо заключить дополнительное меню в таблицу .
Нашел 2 функции относящиеся к нему .
<?php
function theme_menu_tree($variables) {
return '<ul class="menu clearfix">' . $variables['tree'] . '</ul>';
}
function
theme_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if (
$element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
?>
При замене тегов , они меняются у всех меню .
Как правильно записать обе функции чтобы обратится к определенному меню ?
Комментарии
В теме (template.php) ищем или добавляем
function template_preprocess_page(&$variables) { ...
...
$variables['secondary_menu'] = theme_get_setting('toggle_secondary_menu') ? menu_secondary_menu() : array();
Далее думаю понятно
Нет , если можно подробнее .
Используйте в template.php , ориентируйтесь по $variables['attributes']['id']
<?php
function theme_links($variables) {
...
}?>
Сложновато для меня пока .
Пытался добиться нужного эффекта вышеперечисленными мною функциями , но в табличные теги оборачиваются все меню на странице , да и верхние уровни тоже .
Всего 2 уровня меню .
Каждый элемент первого уровня необходимо расположить в ячейке td .
Третий день голову ломаю , пора уже спать , может завтра озарит .
в файле includes/theme.inc найдите функцию function theme_links($variables)скопируйте ее в template.php Вашей темы замените theme на название вашей темы, очистите кеш, в функции найдете ul и li которые Ваш надо менять , там же вставите условие проверки на то что это Secondary типа
<?php if($variables['attributes']['id'] == 'secondary-menu-links')?>
Дерзайте, спрашивайте, помогаю думающим и делающим.
Эта тема обсуждается тут , в чем различия ?
Господа-друпалеры,а как найти id своего меню?
Создал в админке своё меню с машинным именем category...
Однако,при добавлении условия
<?php if($variables['attributes']['id'] == 'menu-category')?>
(также пробовалось не 'menu-category',а 'category-menu-links','menu-category','menu_category','category' и прочие вариации с перестановкой слов местами и заменой тире на подчеркивание...)
Выдает ошибку:
Notice: Undefined index: attributes в функции mytheme_link() (строка 214 в файле /home/*****/****/*****/sites/all/themes/mytheme/template.php).
Вот моя функция полностью:
<?php
function mytheme_link($variables){
if($variables['attributes']['id'] == 'category'){
return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '><span></span>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>';}
else{
return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>';}
}
?>
214 строка и есть строка с if($variables['attributes']['id'] == 'category')
У меня тоже с этим условием проблемы были .
А так не пробовали ?
function имятемы_link__айдименю($variables){...}
Кстати , после того как создали меню , еще раз зайдите и увидите там префикс menu .
В вашем случае id меню будет menu_category .
Вот так вот попробовал:
<?php function mytheme_link__menu_category($variables){
return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '><span></span>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>';
} ?>
И без изменений..кеш 100 раз чистил!(((
Когда просто пишешь:
<?php function mytheme_link($variables){
return '<a href="' . check_plain(url($variables['path'], $variables['options'])) . '"' . drupal_attributes($variables['options']['attributes']) . '><span></span>' . ($variables['options']['html'] ? $variables['text'] : check_plain($variables['text'])) . '</a>'; ?>
Тогда всё в порядке - меню темизируется,но ВСЁ МЕНЮ НА САЙТЕ!
А мне моё меню категорий только надо темизировать.. (((
Вижу только пустой спан в отличии от оригинальной функции .
А какая у вас стоит задача ?
Да,там только span..
Там к span'у этому gif цепляется,а при наведении на ссылку он вращается..(такое вот ТЗ...)
Меню уже свёрстано в HTML/CSS,надо на Drupal теперь его прицепить.
Попробуйте
<?php
function имятемы_menu_link__айдименю(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if (
$element['#below']) {$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '><span></span>' . $output . $sub_menu . "</li>\n";
}
?>
А это сработало!!!!))))))))))))))))))))))
Надо только как то этим не для
<li></li>
,а<a></a>
вывести..Поясните задачу .
У вас разве ссылка не обернута в тег ?
Покажите скрин или исходный код из фаербага .
Саму ссылку.
Надо чтобы на выходе вот так получилось:
<li>
<a href="someurl"><span></span>Link</a>
...
</li>
</ul>
Вот так должно быть
Прежде не доводилось встречать подобных конструкций .
А для чего это вам ?
Расположить ссылку внутри спана для вас недопустимо ?
У меня вот такой CSS:
.region-header #block-menu-menu-category .content { padding:0;}
.region-header #block-menu-menu-category .content ul { margin:0}
.region-header #block-menu-menu-category .content li { background:url(../images/bg-li-categories.gif) bottom repeat-x;}
.region-header #block-menu-menu-category .content li a { color:#9fa4a8; font-size:12px; text-decoration:none; -webkit-transition:all .3s ease; -moz-transition:all .3s ease; padding:7px 0px 8px 9px; display:block}
.region-header #block-menu-menu-category .content li a:hover { background:#118dec; color:#fff}
.region-header #block-menu-menu-category .content li a span { display:inline-block; width:14px; height:13px; background:url(../images/a-categories.gif) no-repeat 0 0 #797979; -webkit-transition:all .6s ease; -moz-transition:all .6s ease; vertical-align:middle; margin-right:14px;}
.region-header #block-menu-menu-category .content li a:hover span { -moz-transform:rotate(360deg); -webkit-transform:rotate(360deg); transform:rotate(360deg); background:url(../images/a-categories.gif) no-repeat 0 0 #000}
Интересно и как он с помощью имятемы_menu_link__айдименю в таблицу поместит меню ?
Если вы про сплеша , то не совсем понимаю ваш вопрос , там потребуется другое .
"имятемы_menu_link__айдименю" - это я другому человеку предложил , для решения его задачи .
А вопрос мне ?