#drupal-7
Вопрос:
Я пытаюсь отобразить меню с помощью Bootstrap 5, но я застрял на этой работе, я очень плохо разбираюсь в Drupal…
Простые ссылки в меню отлично работают, но в выпадающем списке есть проблема. Я попытался создать функцию, которая изменит рендеринг, если это выпадающее меню, но не будет работать должным образом
Вот мой код меню в html:
lt;ul class="mb-2 mb-lg-0 me-lg-auto navbar-nav"gt; lt;li class="nav-item"gt; lt;a class="active nav-link px-lg-3 py-lg-4 text-light" aria-current="page" href="#"gt;Homelt;/agt; lt;/ligt; lt;li class="nav-item"gt; lt;a class="nav-link px-lg-3 py-lg-4 text-light" href="#"gt;Onelt;/agt; lt;/ligt; lt;li class="nav-item"gt; lt;a class="nav-link px-lg-3 py-lg-4 text-light" href="#"gt;Twolt;/agt; lt;/ligt; lt;li class="nav-item dropdown"gt; lt;a class="dropdown-toggle nav-link px-lg-3 py-lg-4 text-light" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"gt;Threelt;/agt; lt;div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"gt; lt;a class="dropdown-item" href="#"gt;Actionlt;/agt; lt;a class="dropdown-item" href="#"gt;Another actionlt;/agt; lt;a class="dropdown-item" href="#"gt;Something else herelt;/agt; lt;/divgt; lt;/ligt; lt;li class="nav-item"gt; lt;a class="nav-link px-lg-3 py-lg-4 text-light" href="#"gt;Fourlt;/agt; lt;/ligt; lt;/ulgt; lt;div class="ms-lg-3"gt; lt;a class="btn btn-outline-primary pe-3 ps-3" href="#"gt;Log inlt;/agt; lt;a class="btn btn-primary pe-3 ps-3" href="#" style="background-color: #ee545d;"gt;Registerlt;/agt; lt;/divgt;
template.php
function render_menu_tree($menu_tree) { print 'lt;ul class="mb-2 mb-lg-0 me-lg-auto navbar-nav"gt;'; foreach ($menu_tree as $link) { print 'lt;li class="nav-item"gt;'; $link_path = '#'; $link_title = $link['link']['link_title']; $target = ""; if($link['link']['link_path']) { $link_path = base_path() . drupal_get_path_alias($link['link']['link_path']); if($link['link']['link_path'] == 'lt;frontgt;'){ $link_path = "#43"; } } // detectar link externo if( (strpos($link['link']['link_path'], "http://") !== false) || (strpos($link['link']['link_path'], "https://") !== false) ) { $link_path = $link['link']['link_path']; $target = " target='_blank'"; } print 'lt;a class="nav-link px-lg-3 py-lg-4 text-light" href="' . $link_path . '"'.$target.'gt;' . mb_strtoupper($link_title) . 'lt;/agt;'; if(count($link['below']) gt; 0) { render_menu_tree_sub($link['below']); } print 'lt;/ligt;'; } print 'lt;/ulgt;'; } function render_menu_tree_sub($menu_tree) { print 'lt;li class="nav-item dropdown"gt;'; foreach ($menu_tree as $link) { print 'lt;a class="dropdown-item"gt;'; $link_path = '#'; $link_title = $link['link']['link_title']; $target = ""; if($link['link']['link_path']) { $link_path = base_path() . drupal_get_path_alias($link['link']['link_path']); if($link['link']['link_path'] == 'lt;frontgt;'){ $link_path = "#"; } } // detectar link externo if( (strpos($link['link']['link_path'], "http://") !== false) || (strpos($link['link']['link_path'], "https://") !== false) ) { $link_path = $link['link']['link_path']; $target = " target='_blank'"; } print 'lt;a class="nav-link px-lg-3 py-lg-4 text-light" href="' . $link_path . '"'.$target.'gt;' . mb_strtoupper($link_title) . 'lt;/agt;'; if(count($link['below']) gt; 0) { render_menu_tree($link['below']); } print 'lt;/agt;'; } print 'lt;/ligt;'; }
page.tpl.php
lt;div class="collapse navbar-collapse" id="navbarNavDropdown-4"gt; lt;?php $main_menu_tree = menu_tree_all_data('main-menu', null, 3); render_menu_tree($main_menu_tree); ?gt; lt;/divgt;