подвечивание названия страницы при переходе

допустим у меня есть несколько файлов: main.php, about.php и header.php, в header у меня прописана шапка для всего сайта и подключена через <? php require "header.php" ?> на каждую страницу, в самой шапке идет по классике название каждой страницы, в данном случае "Главная" и "О нас". Как можно реализовать функцию, чтобы не меняя header.php, при переходе по страницам, подсвечивалось цветом текста название каждой из страниц?

Подключить js на каждую страницу отдельно и через получение определённых элементов с нужным классом менять стиль, это конечно вариант, но слишком много выйдет js файлов


Ответы (1 шт):

Автор решения: Simon

Не понял что Вы там хотели сделать с подключением кучи JS файлов. Ну допустим, можете создать массив с страницами и их заголовками:

<?php
$pages = [
    'index.php'   => 'Главная',
    'about.php'   => 'О нас',
    'contact.php' => 'Контакты'
];

$current = basename($_SERVER['REQUEST_URI']);
?>
<div id="navigation">
    <ul>
        <?php foreach($pages as $page => $title) : ?>
            <li <?php if($page === $current) : ?>class="active"<?php endif; ?>>
                <a href="<?php echo $page; ?>">
                    <?php echo $title; ?>
                </a>
            </li>
        <?php endforeach; ?>
    </ul>
</div>

Ну и для active пропишите необходимые Вам стили.

Давайте теперь проясним.

  • Мы создаем массив с страницами, и их заголовками. Ключем будет название php файла на который совершается переход, а значением её заголовок.
  • Далее мы получаетм текущую страницу из переменной $_SERVER которая является массивом и обратимся к ключу REQUEST_URI. REQUEST_URI -- URI, который был предоставлен для доступа к этой странице. Например, '/about.php'. И получим последний компонент имени из указанного пути при помощи функции basename().
  • При помощи перебора массива выведем необходимые нам данные в меню, такие как заголовок страницы и href по которому и будем переходить.
  • Для того чтобы когда необходимо выводить класс active мы проверим равенство $page === $current.
→ Ссылка