我有一个数组,它保存我的导航结构(片段1),我想将其转换成's(带有li和a)。代码段2中的代码工作正常,它创建了一个完美的HTML结构。我现在唯一想要添加的是每个项目的.active类,它是当前页面的(父项)。
例如,当我在/ test / testtest页面上时,带有/ test的li和带有/ testtest的li(作为/ test的子级)都应该获得.active类。哦,$this->page->path
返回当前路径,在此示例中为/test/testtest
。
我希望这样清楚,这有点难以解释。
摘录1:
Array
(
[0] => /home
[1] => /test
[test] => Array
(
[0] => /test/testtest
[testtest] => Array
(
[0] => /test/testtest/3deep
)
[1] => /test/testtest2
)
[2] => /test2
[3] => /nieuws
)
摘录2:
private function generateStructure($array) {
foreach ( $array as $element ) {
if ( is_array($element) ) {
?>
<ul>
<?= $this->generateStructure($element) ?>
</ul>
</li>
<?php
} else {
$classArray = array();
$close = (is_array(next($array))) ? false : true;
// Active class
if ( $this->pages[$element]["path"] == $this->page->path ) array_push($classArray, "active");
$classes = "";
if ( !empty($classArray) ) {
$classes = 'class="';
foreach ( $classArray as $class ) {
$classes .= $class . " ";
}
$classes = trim($classes) . '"';
}
?>
<li <?= $classes ?>><a href="/ocms-dev<?= $this->pages[$element]["path"] ?>"><?= $this->pages[$element]["titleNav"] ?></a>
<?php
// Only close it when the current element has no subnav
if ( $close ) echo "</li>";
}
}
}
答案 0 :(得分:0)
好的,我已经对它进行了一些尝试,我可以尝试这样做: -
function generateStructure($array) {
foreach ( $array as $element ) {
if ( is_array($element) ) {
?>
<ul>
<?PHP generateStructure($element) ?>
</ul>
</li>
<?php
} else {
$classArray = array();
$close = (is_array(next($array))) ? false : true;
// Active class
if ( $element == '/test/testtest' ){
array_push($classArray, "active");
echo ("match found");
}
$classes = "";
if ( !empty($classArray) ) {
$classes = 'class="';
foreach ( $classArray as $class ) {
$classes .= $class . " ";
}
$classes = trim($classes) . '"';
}
?>
<li <?PHP echo $classes ?>><a href="/ocms-dev<?PHP echo $element ?>"><?PHP echo $element ?></a>
<?php
// Only close it when the current element has no subnav
if ( $close ) echo "</li>";
}
}
}
?>
我认为这主要取决于我在if比较中使用$元素切换$ this-&gt; pages [$ element] [“path”] ...这看起来是个问题。
答案 1 :(得分:0)
好的,我终于找到了解决问题的方法。
我决定引入一个level
变量($this->level
),然后我用它来比较数组的第n个子节点和两个网址的爆炸部分(循环中的当前元素和当前页面) )。