Моя цель заключается в изменении выходного меню так, чтобы подменю ссылки анкеры родительского элемента:Drupal: Изменение ссылки детей меню для якорит
<ul class="menu">
<li>
<a href="page1">Page 1</a>
<ul class="submenu">
<li>
<a href="page1#section">Section</a>
</li>
</ul>
</li>
</ul>
Поскольку Drupal GUI не позволяет якорям в пунктах меню, мне нужно изменить функцию theme_link()
изменить все ребенок:
function MYTHEME_menu_link__menu_block__main_menu(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
foreach($element['#below'] as $child) {
$child['#href'] = str_replace(' ', '-', strtolower(render($child['#title'])));
}
$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";
}
Но Есть две проблем, которые являются результатом моего отсутствия опыта работы с Drupal функциями:
- Изменен
href
не передается на визуализированный HTMl. - Я получаю эту ошибку для строки 8:
Warning: Cannot use a scalar value as an array
.
Что нужно для исправления этой ошибки, и как я могу передать новый href
в ссылку для выхода из меню-детей?
EDIT: Я должен добавить, что я использую ссылку Entity Reference, чтобы вытащить узлы в одну суперстраницу, и на сайте есть три суперстраницы. Поэтому использование одностраничного решения не будет работать для меня.
Drupal сам по себе не является PHP, но может работать на PHP. –
@eyeLoveFiddle, вы правы. Я знаю, что Drupal - это не PHP, но в нем есть специальные функции, такие как тот, о котором я упоминал выше. – kylesimmonds
, тогда вы можете сделать это в HTML для выпадающего меню: http://jsfiddle.net/spliter/vWDvy/ –