Как присвоить класс странице, в зависимости от URL?

Определенной странице можно присвоить класс таким кодом
<?php if ($_SERVER["REQUEST_URI"] == '/catalog') { ?> class="catalogpage" <?php }  ?>


Можно ли как-то сделать, чтобы класс присваивался всем подстраницам каталога, т.е. страницам с url /catalog/1, /catalog/2, /catalog/1/1, /catalog/2/1 и т.д.?
  • Вопрос задан
  • 2792 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
if( preg_match('/^\/catalog/i', $_SERVER['REQUEST_URI'])) { ... }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Первое что пришло в голову это разбить URL по слэшу и заменить например на тире:

<?php if ( stripos($_SERVER["REQUEST_URI"], '/catalog') ) {
   $aCatalogURL = explode('/', $_SERVER["REQUEST_URI"]);
?> class="<?=implode('-', $aCatalogURL)?>-page" <? } ?>


Но будьте внимательны, вам нужно будет очистить URL (строку, или массив, полученный после explode от лишнего мусора), то есть у вас например URL yourdomain.com/content/catalog/1/2/?sort=price&ord... то нужно чтобы URL стал таким catalog/1/2, только потом разбивать на массив.

В итоге классы получатся такими:

URL: catalog
Класс: catalog-page

URL : catalog/1/2
Класс: catalog-1-2-page

UPD: Если нужно чтобы у всех подкатегорий был один класс, то тогда еще проще, код будет такой:

<?php if ( stripos($_SERVER["REQUEST_URI"], '/catalog') ) { ?> class="catalogpage" <?php }  ?>
Ответ написан
Комментировать
Boberdober
@Boberdober Автор вопроса
Кажется, чуть не правильно вопрос задал. Нужно чтобы у всех подкатегорий был один класс
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы