Я получил это меню навигации в HTML, и мне нужно преобразовать его в PHP. Я попытался с массивом php и foreach, но я застрял на подпунктах. Я сейчас не могу понять, что мне делать. Есть идеи?
Это то, что я делал до сих пор.
Создайте массив для родительских элементов.
//Nav Items
$navItems = array(
array(
slug => "index.php",
title => "Home"),
array(
slug => "cruise-partners.php",
title => "Cruise Partners"),
array(
slug => "destinations.php",
title => "Destinations"),
array(
slug => "cruise-deals.php",
title => "Cruise Deals"),
array(
slug => "cruise-type.php",
title => "Cruise Type"),
array(
slug => "river-cruise.php",
title => "River Cruise"),
array(
slug => "luxury.php",
title => "Luxury"),
array(
slug => "contact.php",
title => "Contacts")
);
?>
Используйте foreach и повторяйте их
<div class="containermargins clearfix">
<nav class="hmenu"data-responsive-menu="true"data-responsive-levels="">
<div class="responsivemenu collapse-button">
<div class="container-inner">
<div class="menuitem ">
<a data-toggle="collapse"data-target=".hmenu .collapse-button + .navbar-collapse"href="#"onclick="return false;"><span></span></a>
</div>
</div>
</div>
<div class="navbar-collapse collapse">
<div class="horizontalmenu clearfix">
<div class="container-inner">
<ul class="menu nav nav-pills nav-justified">
`<?php foreach ($navItems as $item) {
echo '<li class="menuitem submenu-icon-only toplevel-item"><a class="active" href=\"$item[slug]\">$item[title]</a></li>';
} ?>`
</ul>
</div>
</div>
Вот мое HTML-меню навигации.
<div class="containermargins clearfix">
<nav class="hmenu"data-responsive-menu="true"data-responsive-levels="">
<div class="responsivemenu collapse-button">
<div class="container-inner">
<div class="menuitem ">
<a data-toggle="collapse"data-target=".hmenu .collapse-button + .navbar-collapse"href="#"onclick="return false;"><span></span></a>
</div>
</div>
</div>
<div class="navbar-collapse collapse">
<div class="horizontalmenu clearfix">
<div class="container-inner">
<ul class="menu nav nav-pills nav-justified">
<li class="menuitem submenu-icon-only toplevel-item">
<aclass="active"title=" Direction - Tailor-made Holidays"href="./home.html">Home</a>
<div class="menu-popup ">
<ul class="menu no-margins">
<li class="menuitem sub-item sub-item">
<a title="About Us"href="./home/about-us.html">About Us</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="FAQ"href="./home/faq.html">FAQ</a>
</li>
</ul>
</div>
</li>
<li class="menuitem submenu-icon-only toplevel-item">
<a title=" Partners"href="./partners.html">Partners</a>
<div class="menu-popup ">
<ul class="menu no-margins">
<li class="menuitem sub-item sub-item">
<a title="Carnival"href="./partners/carnivals.html">Carnivals</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="Celebrity"href="./partners/Celebrity.html">Celebrity</a>
<div class="menu-popup ">
<ul class="menu no-margins">
<li class="menuitem sub-item sub-item">
<a title="Third Level 1"href="./partners/Celebrity/third-level-one.html">Third Level 1</a>
</li>
</ul>
</div>
</li>
<li class="menuitem sub-item sub-item">
<a title="Cunard"href="./partners/cunard.html">Cunard</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="Holland America Line"href="./partners/holland-america-line.html">Holland America Line</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="Norwegian"href="./partners/norwegian.html">Norwegian</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="Princess"href="./partners/princess.html">Princess</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="Star Clippers"href="./partners/star-clippers.html">Star Clippers</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="PO"href="./partners/p-and-o.html">PO</a>
</li>
<li class="menuitem sub-item sub-item">
<a title="Royal Caribbean"href="./partners/royal-caribbean.html">Royal Caribbean</a>
</li>
</ul>
</div>
</li>
<li class="menuitem toplevel-item">
<a title="Destinations"href="./destinations.html">Destinations</a>
</li>
<li class="menuitem toplevel-item">
<a title=" Deals"href="./deals.html"> Deals</a>
</li>
<li class="menuitem toplevel-item">
<a title=" Type"href="./type.html"> Type</a>
</li>
<li class="menuitem toplevel-item">
<a title="River "href="./river-.html">River </a>
</li>
<li class="menuitem toplevel-item">
<a title="Luxury"href="./luxury.html">Luxury</a>
</li>
<li class="menuitem toplevel-item">
<a title="Contacts"href="./contacts.html">Contacts</a>
</ul>
</div>
</div>
</div>
</nav>
Вы можете создать вложенный массив с подпунктами и перебрать его с помощью рекурсивная функция.
Таким образом, вы можете добавить столько подуровней, сколько вам нужно.
$navItems = array(
array(
"slug" => "index.php",
"title" => "Home"),
array(
"slug" => "cruise-partners.php",
"title" => "Cruise Partners",
"subitems" => array(
array(
"slug"=>"x.html",
"title"=>"sub-item.html")
)
),
array(
"slug" => "destinations.php",
"title" => "Destinations"),
array(
"slug" => "cruise-deals.php",
"title" => "Cruise Deals"),
array(
"slug" => "cruise-type.php",
"title" => "Cruise Type",
),
array(
"slug" => "river-cruise.php",
"title" => "River Cruise"),
array(
"slug" => "luxury.php",
"title" => "Luxury"),
array(
"slug" => "contact.php",
"title" => "Contacts")
);function drawMenu($items){
echo "<ul>";
foreach($items as $item){
echo "<li><a href='".$item['slug']."'>".$item['title']."</a>";
if(isset($item['subitems'])){
echo "<ul>";
drawMenu($item['subitems']);
echo "</ul>";
}
echo "</li>";
}
echo "</ul>";
}
drawMenu($navItems);
Вам нужно будет реструктурировать свой массив, чтобы включить подэлементы. Вы можете использовать Синтаксис короткого массива который я предпочитаю, когда много.
$navItems =
[
[
'title' => 'First Option'
'slug' => 'first-option'
'sub' => [
'title' => 'First Option Sub'
'slug' => 'first-option-sub'
],
[
'title' => 'First Option Sub 2'
'slug' => 'first-option-sub-2'
]
],
[
'title' => 'First Option'
'slug' => 'first-option'
'sub' => [
'title' => 'First Option Sub'
'slug' => 'first-option-sub'
]
]
]
Когда дело доходит до фактического отображения подэлементов, вам нужно перебрать $navItem
массив и проверить наличие «sub». Если он существует, просто переберите его таким же образом.
Мне было трудно понять ваш HTML, поэтому это может быть не совсем та же структура, но она должна дать вам идею.
<?php foreach ($navItems as $item) { ?>
<li class="menuitem submenu-icon-only toplevel-item">
<a class="active" href="/<?= $item['slug'] ?>">
<?= $item['title'] ?>
</a>
</li>
<?php if (isset($item['sub']) { ?>
<?php foreach($item['sub'] as $subItem) { ?>
<li class="sub-item>
<a href="/<? $subItem['slug'] ?>">
<?= $subItem['title'] ?>
</a>
</li>
<?php } ?>
<?php } ?>
<?php } ?>