echo class «active» - если class = «» уже существует или нет.

0

Следующая функция 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'; но это не сработало.

  • 1
    попробуйте return вместо echo
  • 0
    Нет, не работал.
Показать ещё 6 комментариев
Теги:

2 ответа

0

Попробуйте этот формат с существующим php-кодом

<li><a class="icon-glass <?php href('index.php');?>">Home</a></li>
<li><a class="<?php href('about.php');?>">About</a></li>

Это означает, что вы должны эхо-класс активировать внутри класса двойные кавычки класса "".

  • 0
    Это сделало HTML похожим на: <a class="icon-glass href=" index.php"class="active" "=""> Home </a>
  • 0
    Попробуйте код ниже, я публикую
0

Заменить функцию 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>
  • 0
    Однако это хороший и надежный способ сделать это? как вы добавляете HREF внутри класса
  • 0
    Href не находится внутри класса, выходной класс уже закрыт, посмотрите @ this codeif ($ page == $ currentPage) {echo 'active "';} else {echo '"'; } класс всегда закрыт, если мы добавляем активный или нет с помощью if else.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню