подвечивание названия страницы при переходе
допустим у меня есть несколько файлов: main.php, about.php и header.php, в header у меня прописана шапка для всего сайта и подключена через <? php require "header.php" ?> на каждую страницу, в самой шапке идет по классике название каждой страницы, в данном случае "Главная" и "О нас". Как можно реализовать функцию, чтобы не меняя header.php, при переходе по страницам, подсвечивалось цветом текста название каждой из страниц?
Подключить js на каждую страницу отдельно и через получение определённых элементов с нужным классом менять стиль, это конечно вариант, но слишком много выйдет js файлов
Ответы (1 шт):
Не понял что Вы там хотели сделать с подключением кучи 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.