Всем доброго дня!
Очень хочется понять, что я сделала не так или хотя бы в каком направлении двигаться.
Почему-то, если в меню напрямую прописать адрес сайта или же любую ноду (как node/6), но не указать синоним, то ссылка не будет генерироваться. Этот пункт меню считается с адресом "/" и будет перекидывать на главную страницу. И так до тех пор, пока не прописать любой синоним.
Как я понимаю, такого происходить не должно, а значит я где-то допустила ошибку или удалила лишнее.
Есть своё меню:
<div class="container">
<button aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler" data-target="#navbarsExampleDefault" data-toggle="collapse" type="button"><span class="navbar-toggler-icon"></span></button>
<?php
echo '<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">';
$main_menu_tree = menu_tree_all_data('main-menu');
foreach($main_menu_tree as $m) {
if($m == end($main_menu_tree)) {
echo'</ul></div><div><ul class="navbar-nav mr-auto ost-zaiavku">
<li class="nav-item">
<a class="nav-link ost-zaiavku-text" href="/'.drupal_lookup_path('alias',$m['link']['link_path']).'"><span><i class="material-icons"></i>'.$m['link']['link_title'].'</span></a>
</li>
</ul></div>';
}
else {
$children = '';
if($m['link']['has_children'] == 1) {
$children = 'yes';
}
if($children == 'yes') {
echo '<li class="nav-item dropdown">
<a href="#" aria-expanded="false" aria-haspopup="true" class="nav-link dropdown-toggle" data-toggle="dropdown" href="" id="dropdown01">'.$m['link']['link_title'].'</a>
<div aria-labelledby="dropdown01" class="dropdown-menu">';
foreach($m['below'] as $b) {
echo '<a class="dropdown-item" href="/'.drupal_lookup_path('alias',$b['link']['link_path']).'">'.$b['link']['link_title'].'</a>';
}
echo '</div>
</li>';
}
else {
echo '<li class="nav-item">
<a class="nav-link" href="/'.drupal_lookup_path('alias',$m['link']['link_path']).'">'.$m['link']['link_title'].'</a></li>';
}
}
}
?>
</div>
</nav>
Ссылки генерируются нормально, но на каком-то этапе что-то мешает работать со стандартным путём.
Скрин меню прилагается.
Вложение | Размер |
---|---|
![]() | 15.46 КБ |
Комментарии
Вам проще открыть какую-либо готовую тему с орга и посмотреть как там организован вывод меню.
В кратце:
Генерация ссылок с алиасом:
<?php
url('some/real/path');
?>
Путь
/
- это путь в корень сайта. Тут обычный HTML, никакого Drupal-волшебства.А для вывода ссылок - нужно использовать свою функцию темизации.
Спасибо. Сейчас попробую сделать по аналогии. Просто я использую на сайте bootstrup 4 версии, а в шаблонах только 3ка, поэтому не смотрела их.
Покопалась в коде. Если писать просто
echo '<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">';
$main_menu_tree = menu_tree(variable_get('menu_main_links_source', 'main-menu'));
foreach($main_menu_tree as $m) {
print drupal_render($main_menu_tree);
}
?>
то всё работает, однако тогда я не знаю как одеть это на свой дизайн.
Как я понимаю ошибка в генерации самой ссылки, где-то здесь:
Прочитала о функции drupal_lookup_path, но всё равно не понимаю что мне нужно написать. Видимо это из-за того, что я ещё новичок.. Может быть можете подсказать что-то по текущему коду или как тогда одеть моё меню на стандартный код? В каком файле и что я должна править?
Спасибо большое.
Писать нужно не "просто", а то что нужно.
Посмотрите как делают в готовых темах. При чем здесь версия бутстрапа?