我有一个包含我的导航结构(片段 1)的数组,我想将其转换为 's(带有 li's 和 a's)。片段 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>";
}
}
}