Следующая функция PHP добавляет class= "active" к текущей открытой странице.
<?php #add class .active to current page
$directoryURL = $_SERVER['REQUEST_URI'];
$path = parse_url($directoryURL, PHP_URL_PATH);
$components = explode('/', $path);
$currentPage = preg_replace("/\\.[^.\\s]{3,4}$/", "", end($components));
if ($currentPage == "") {
$currentPage = "index";
}
function href($url) {
global $currentPage;
$path = explode('/', $url);
$page = preg_replace("/\\.[^.\\s]{3,4}$/", "", end($path));
echo 'href="' . $url . '"';
if ($page == $currentPage) {
echo 'active';
}
}
?>
Вот пункты меню:
<li><a class="icon-glass"<?php href('index.php');?>>Home</a></li>
<li><a <?php href('about.php');?>>About</a></li>
Проблема в том, что эта функция работает только с элементами меню, которые не объявлены class= "", то есть:
<li><a <?php href('about.php');?>>About</a></li>
И это не работает для этого:
<li><a class="icon-glass"<?php href('index.php');?>>Home</a></li>
Я считаю, что это связано с этой частью скрипта:
if ($page == $currentPage) {
echo 'class="active"';
}
Вопрос: как мне его заставить делать то, что он делает сейчас, добавляя class=""
когда он еще не добавлен, но также просто добавьте бит .active
внутри уже существующего класса (если он найден)?
Я пытался использовать только echo 'active';
но это не сработало.
Попробуйте этот формат с существующим php-кодом
<li><a class="icon-glass <?php href('index.php');?>">Home</a></li>
<li><a class="<?php href('about.php');?>">About</a></li>
Это означает, что вы должны эхо-класс активировать внутри класса двойные кавычки класса "".
Заменить функцию href на
function href($url) {
global $currentPage;
$path = explode('/', $url);
$page = preg_replace("/\\.[^.\\s]{3,4}$/", "", end($path));
if ($page == $currentPage) {
echo ' active " ';
}else{
echo ' " ';
}
echo ' href="' . $url . '" ';
}
И этот html
<li><a class="icon-glass"<?php href('index.php');?>>Home</a></li>
<li><a <?php href('about.php');?>>About</a></li>
с
<li><a class="icon-glass <?php href('index.php');?>>Home</a></li>
<li><a class="<?php href('about.php');?>>About</a></li>
return
вместоecho