Задать вопрос
@sobik

Как добавить класс к ссылке открытой страницы плюс с пагинацией?

Доброго дня!

Есть блок меню, написан на PHP, на выходе имеет вот такой HTML-код (примерно):

<div class="tag_menu">
<ul class="dop_product_tag">
<li><a href="https://test.ru/primer1" class="primer1">Пример1</a></li>
<li><a href="https://test.ru/primer2" class="primer2">Пример2</a></li>
<li><a href="https://test.ru/primer3" class="primer3">Пример3</a></li>
<li><a href="https://test.ru/primer4" class="primer4">Пример4</a></li>
<li><a href="https://test.ru/primer5" class="primer5">Пример5</a></li>
</div>


Мне нужно подсветить ссылку открытой страницы, то есть добавить дополнительный класс к элементу.
Я это сделал через JavaScript:
document.addEventListener("DOMContentLoaded", function() {
  var currentPage = window.location.pathname;
  var menuLinks = document.querySelectorAll(".dop_product_tag a");
  for (var i = 0; i < menuLinks.length; i++) {
    if (menuLinks[i].pathname === currentPage) { 
      menuLinks[i].classList.add("active");
    }
  }
});


Всё работает, он к элементу открытой странице добавляет класс active например:
<li><a href="https://test.ru/primer2" class="primer2 active">Пример2</a></li>

Но когда я дописываю скрипт на проверку пагинации, он не работает: (пагинация в виде: https://test.ru/primer2/page/2/)
я дописываю в if || is_paged()
if (menuLinks[i].pathname === currentPage || is_paged())

а далее функцию (соответственно после всего кода)
document.addEventListener("DOMContentLoaded", function() {
  var currentPage = window.location.pathname;
  var menuLinks = document.querySelectorAll(".dop_product_tag a");
  for (var i = 0; i < menuLinks.length; i++) {
    if (menuLinks[i].pathname === currentPage || is_paged()) { 
      menuLinks[i].classList.add("active");
    }
  }
});
function is_paged() {
  return window.location.pathname.includes("/page/");
}


класс не добавляется и соответственно ссылка не подсвечивается.
также есть фильтр товаров в виде /?filter_type_test=test45

какой код для фильтра писать, чтобы добавлялся класс я не знаю.

Подскажите пожалуйста, может поможет кто решить?

Спасибо!
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
szQocks
@szQocks
Но когда я дописываю скрипт на проверку пагинации, он не работает

function is_paged() {
  return window.location.pathname.split("/").includes('page')
}


какой код для фильтра писать, чтобы добавлялся класс я не знаю.

function isFilter(){
  return window.location.pathname.split("/").some(n => n.split('=').includes('?filter_type_test'))
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы