Замена тега <a> на <p> или <span> с помощью JS или PHP

104
07 апреля 2021, 05:10

Ситуация: создал шаблон страницы на php. На ней реализовано навигационное меню, (циклом вытягивает необходимые параметры из БД + если id страницы и id вытягиваемго элемента совпадают, то добавляется класс "active", с помощью которого можно убрать свойства ссылки чтобы на нее нельзя было нажать и т.д.) Все бы ничего, но в коде страницы естественно остается URL адрес этой-же страницы, который ведет сам на себя (что очень плохо для SEO).

<div class="sidenav-service">
  <a class="" href="/service.php?id=1">Ананас</a>
  <a class="active" href="/service.php?id=2">Апельсин</a>
  <a class="" href="/service.php?id=3">Лимон</a>
  <a class="" href="/service.php?id=4">Яблоко</a>
</div>

Необходимо: сделать так, что-бы при добавлении класса "active" ссылка убиралась или просто происходила замена тега a на p или span с помощью JS или PHP.

Собственно код:

<div class="sidenav-service">
  <?php
    $singles = get_singles_all();
    foreach ($singles as $single): ?>
      <a class="<?php if($_GET['id'] == $single['id']) { echo 'active';} ?>" href="/service.php?id=<?php echo $single["id"]; ?>">
        <?php echo $single["title"]; ?>
      </a>
    <?php endforeach; ?>
</div>
Answer 1

Вариант на jQuery

$("a.active").click(function(event) {
    event.preventDefault();
});

или

$("a.active").attr("href", "#");
Answer 2

Как вариант на PHP

<div class="sidenav-service">
  <?php
    $singles = get_singles_all();
    foreach ($singles as $single): ?>
      if ($_GET['id'] == $single['id']) {
        ?>
        <span class="active"><?php echo $single["title"]; ?></span>
        <?php
        continue;
      }
      ?>
      <a href="/service.php?id=<?php echo $single["id"]; ?>">
        <?php echo $single["title"]; ?>
      </a>
  <?php endforeach; ?>
</div>
READ ALSO
Поиск по файлам на PHP [закрыт]

Поиск по файлам на PHP [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

92
Почему комментарии не отображаются на конкретной странице, а на всех?

Почему комментарии не отображаются на конкретной странице, а на всех?

Комментарии на сайте отображаются благодаря следующему коду:

111
export import laravel

export import laravel

Не могу импортировать файл взятый с экспорта csvПроблема в кодировке

78
Как правильно сделать foreach?

Как правильно сделать foreach?

Сразу извиняюсь если вопрос глупый, возможно я не так гуглил

103