jQuery 菜单未加载 PHP child 类别
jQuery menu not loading PHP child categories
我们有一个自定义 jQuery 菜单,它在我们的 OpenCart 商店中运行良好。然而,第 2 级 child 类别将不会显示,PHP 在更改后的菜单或原始菜单上都不正确。任何具有 2 或更多深度的类别都不会显示。
所以我们有一个 2 深类别
http://ocart.site/opencart/index.php?route=product/category&path=25_29_59
但是你看它不会显示在主菜单中
http://ocart.site/opencart
如果我在原来的默认菜单的默认部分重新添加,它实际上会使菜单中断。您可以在以下位置查看新旧菜单的比较
http://ocart.site/defaultmenutoJQ.html
有什么东西阻碍了某处的显示负载,有什么想法吗?
这是 JSFiddle 中的所有相关代码 https://jsfiddle.net/mtq5khz0/
<?php if ($categories) { ?>
<div id="cssmenu">
<ul>
<?php foreach ($categories as $category) { ?>
<li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php for ($i = 0; $i < count($category['children']);) { ?>
<ul>
<?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
<?php for (; $i < $j; $i++) { ?>
<?php if (isset($category['children'][$i])) { ?>
<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
<?php } ?>
<?php } ?>
</ul>
<?php } ?>
<?php } ?>
</li>
</ul>
</div>
<?php } ?>
OpenCart 的完整 header 代码 - 编辑代码 https://jsfiddle.net/v5vmLbjj/
OpenCart 默认安装的完整 header 代码 https://jsfiddle.net/tneqy2qt/
(类别下拉菜单代码,靠近代码块页脚)
这里是 JQuery 菜单代码 PHP 与 https://jsfiddle.net/ezhnnbsg/
一起工作
你的内部循环代码看起来很奇怪。按照代码,它看起来可以工作,但它可能容易出错。所以我稍微重写了一下:
if ($categories) {
echo '<div id="cssmenu">';
echo ' <ul>';
foreach ($categories as $category) {
echo ' <li><a href="' . $category['href'] .'">' . $category['name'] . '</a>';
if (count($category['children']) > 0) {
$columns = array_chunk($category['children'], ceil(count($category['children']) / $category['column']));
foreach ($columns as $children) {
echo ' <ul>';
foreach ($children as $child) {
echo ' <li><a href="' . $child['href'] . '">' . $child['name'] . '</a></li>';
}
echo ' </ul>';
}
}
}
echo ' </li>';
echo ' </ul>';
echo '</div>';
}
您在单引号内使用了双引号
试试这个
<?php
if ($categories) {
echo "<div id='cssmenu'>";
echo " <ul>";
foreach ($categories as $category) {
echo " <li><a href='".$category['href']."'>".$category['name']."</a>";
if (count($category['children']) > 0) {
$columns = array_chunk($category['children'], ceil(count($category['children']) / $category['column']));
foreach ($columns as $children) {
echo ' <ul>';
foreach ($children as $child) {
echo " <li><a href='" . $child['href'] ."'>" . $child['name'] . "</a></li>";
}
echo " </ul>";
}
}
}
echo " </li>";
echo " </ul>";
echo "</div>";
}
?>
如果我对你的理解是正确的,那么通过查看你的代码,有几件事对我来说很突出。
首先,您只循环遍历 $categories
和每个 $category['children']
。
要到达“第 2 级”children,您需要进行另一个循环。例如:
if(!empty($category['children'][$i]['children'])) {
echo '<ul>';
foreach($category['children'][$i]['children'] as $children2) {
echo '<li/>';
}
echo '</ul>';
}
我看到的第二个问题是关于你的 fiddle css。
你有这个:
#cssmenu ul ul li a {
font-size: 12px;
font-weight: 400;
z-index: 9999;
width: 250px;
padding: 11px 15px;
text-decoration: none;
color: #000;
border-bottom: 1px solid rgba(150, 150, 150, .15);
background: #ddd;
webkit-font-size: 11.5px;
}
和
#cssmenu .submenu-button {
position: absolute;
z-index: 99;
top: 0;
right: 0;
display: block;
width: 46px;
height: 32px;
cursor: pointer;
border-left: 1px solid rgba(120, 120, 120, .2);
}
#cssmenu .submenu-button
是触发下拉菜单的 class,因此它需要 #cssmenu ul ul li a
上方的 z-index
所以改成这样:
#cssmenu ul ul li a {
font-size: 12px;
font-weight: 400;
z-index: 98;
width: 250px;
padding: 11px 15px;
text-decoration: none;
color: #000;
border-bottom: 1px solid rgba(150, 150, 150, .15);
background: #ddd;
webkit-font-size: 11.5px;
}
注意 z-index: 98;
而不是 z-index: 9999;
?
希望这有助于解决您的问题。
我们有一个自定义 jQuery 菜单,它在我们的 OpenCart 商店中运行良好。然而,第 2 级 child 类别将不会显示,PHP 在更改后的菜单或原始菜单上都不正确。任何具有 2 或更多深度的类别都不会显示。
所以我们有一个 2 深类别 http://ocart.site/opencart/index.php?route=product/category&path=25_29_59
但是你看它不会显示在主菜单中 http://ocart.site/opencart
如果我在原来的默认菜单的默认部分重新添加,它实际上会使菜单中断。您可以在以下位置查看新旧菜单的比较 http://ocart.site/defaultmenutoJQ.html
有什么东西阻碍了某处的显示负载,有什么想法吗?
这是 JSFiddle 中的所有相关代码 https://jsfiddle.net/mtq5khz0/
<?php if ($categories) { ?>
<div id="cssmenu">
<ul>
<?php foreach ($categories as $category) { ?>
<li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php for ($i = 0; $i < count($category['children']);) { ?>
<ul>
<?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
<?php for (; $i < $j; $i++) { ?>
<?php if (isset($category['children'][$i])) { ?>
<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
<?php } ?>
<?php } ?>
</ul>
<?php } ?>
<?php } ?>
</li>
</ul>
</div>
<?php } ?>
OpenCart 的完整 header 代码 - 编辑代码 https://jsfiddle.net/v5vmLbjj/
OpenCart 默认安装的完整 header 代码 https://jsfiddle.net/tneqy2qt/
(类别下拉菜单代码,靠近代码块页脚)
这里是 JQuery 菜单代码 PHP 与 https://jsfiddle.net/ezhnnbsg/
一起工作你的内部循环代码看起来很奇怪。按照代码,它看起来可以工作,但它可能容易出错。所以我稍微重写了一下:
if ($categories) {
echo '<div id="cssmenu">';
echo ' <ul>';
foreach ($categories as $category) {
echo ' <li><a href="' . $category['href'] .'">' . $category['name'] . '</a>';
if (count($category['children']) > 0) {
$columns = array_chunk($category['children'], ceil(count($category['children']) / $category['column']));
foreach ($columns as $children) {
echo ' <ul>';
foreach ($children as $child) {
echo ' <li><a href="' . $child['href'] . '">' . $child['name'] . '</a></li>';
}
echo ' </ul>';
}
}
}
echo ' </li>';
echo ' </ul>';
echo '</div>';
}
您在单引号内使用了双引号 试试这个
<?php
if ($categories) {
echo "<div id='cssmenu'>";
echo " <ul>";
foreach ($categories as $category) {
echo " <li><a href='".$category['href']."'>".$category['name']."</a>";
if (count($category['children']) > 0) {
$columns = array_chunk($category['children'], ceil(count($category['children']) / $category['column']));
foreach ($columns as $children) {
echo ' <ul>';
foreach ($children as $child) {
echo " <li><a href='" . $child['href'] ."'>" . $child['name'] . "</a></li>";
}
echo " </ul>";
}
}
}
echo " </li>";
echo " </ul>";
echo "</div>";
}
?>
如果我对你的理解是正确的,那么通过查看你的代码,有几件事对我来说很突出。
首先,您只循环遍历 $categories
和每个 $category['children']
。
要到达“第 2 级”children,您需要进行另一个循环。例如:
if(!empty($category['children'][$i]['children'])) {
echo '<ul>';
foreach($category['children'][$i]['children'] as $children2) {
echo '<li/>';
}
echo '</ul>';
}
我看到的第二个问题是关于你的 fiddle css。
你有这个:
#cssmenu ul ul li a {
font-size: 12px;
font-weight: 400;
z-index: 9999;
width: 250px;
padding: 11px 15px;
text-decoration: none;
color: #000;
border-bottom: 1px solid rgba(150, 150, 150, .15);
background: #ddd;
webkit-font-size: 11.5px;
}
和
#cssmenu .submenu-button {
position: absolute;
z-index: 99;
top: 0;
right: 0;
display: block;
width: 46px;
height: 32px;
cursor: pointer;
border-left: 1px solid rgba(120, 120, 120, .2);
}
#cssmenu .submenu-button
是触发下拉菜单的 class,因此它需要 #cssmenu ul ul li a
所以改成这样:
#cssmenu ul ul li a {
font-size: 12px;
font-weight: 400;
z-index: 98;
width: 250px;
padding: 11px 15px;
text-decoration: none;
color: #000;
border-bottom: 1px solid rgba(150, 150, 150, .15);
background: #ddd;
webkit-font-size: 11.5px;
}
注意 z-index: 98;
而不是 z-index: 9999;
?
希望这有助于解决您的问题。