Как убрать "rel=canonical" в определенной категории и ее дочерних?

Добрый день! Есть ли вариант (в идеале без плагинов) убрать rel=canonical в определенной категории в магазине?

По стандарту выводится в index.html: {if !empty($canonical)}<link rel="canonical" href="{$canonical}"/>{/if}

11 ответов

  • 1

    {$excludedUrls = [ '/url1/', '/url2/', etc ]} {$currentUrl = $wa->currentUrl()} {if !empty($canonical) && !$currentUrl|in_array:$excludedUrls}<link rel="canonical" href="{$canonical}"/>{/if}

    Как-то так по идеи.

    $excludedUrls - массив c урлами, где каноникал не нужен.

    • +1
      Axex Yexel Axex Yexel 23 сентября 2020 16:47 #

      Благодарю! Все работает! 

      Не подскажите еще, каким правилом выводятся урлы пагинации: ?page=2, ?page=3, ?page=4.? 

      Нужно в одной категории оставить canonical, а в пагинациях его скрыть. Что бы в массиве $excludedUrls не перечислять все возможные ?page=...

      • +1
        replicant replicant 23 сентября 2020 17:21 #

        Страницы пагинации в шаблонах достаются вот так

        {if waRequest::get('page')} ... {/if}
        
        или так 
        
        {if !empty({$wa->get("page")})} .... {/if}

        К вашему условию ещё нужно добавить условие для проверки наличия параметра page и в зависимости от него ваше выполнять или не выполнять, чуть-чуть усложнив общую логику.

        • +1
          Axex Yexel Axex Yexel 23 сентября 2020 17:49 #

          Благодарю за ответ! Единственное, не совсем понял как это совместить с:

          {$excludedUrls = [ '/url1/', '/url2/', etc ]} {$currentUrl = $wa->currentUrl()} {if !empty($canonical) && !$currentUrl|in_array:$excludedUrls}<link rel="canonical" href="{$canonical}"/>{/if}

          • +1
            replicant replicant 23 сентября 2020 18:14 #

            Ну примерно так как-то, если я правильно понял мысль о том, чтобы отключить каноникал на всех страницах пагинации

            {if !empty({$wa->get("page")})} <!-- пусто --> {else}...  тут ваше все поставить как есть  ... {/if}

            Смысл будет такой. Если есть пагинация, то не делать вообще ничего или, если пагинации нет, то прогонять ваше условие на проверку URLов и дальше по нему уже выводить каноникал или нет.

            • +1
              Axex Yexel Axex Yexel 23 сентября 2020 18:42 #

              Красота! Работает! Очень Вам благодарен! Хотелось еще попробовать реализовать возможность задавать вручную url категорий, на которых отключался бы каноникал страниц пагинации. Сейчас же работает на весь сайт.

              • +1
                replicant replicant 23 сентября 2020 19:16 #

                Лучше не URL, а ID, но это вопрос вкусовых предпочтений. Условие проверки пагинации добавить условием проверки ID категории. Хотя логично это бы реализовать через доп. параметры и плагин управление полями доп. параметров. Было бы красиво. Галочку поставил или да/нет в настройках категории и все.

                • +1
                  Axex Yexel Axex Yexel 25 сентября 2020 10:44 #

                  Думаю это хорошая идея для плагина, согласен в Вами!

                  Возможно данный вариант можно обыграть не сложно и добавить возможность делать все то же самое только для конкретной категории?

                  {if !empty({$wa->get("page")})}{else}
                  {$excludedUrls = [ '/url1/', '/url2/', etc ]} {$currentUrl = $wa->currentUrl()} {if !empty($canonical) && !$currentUrl|in_array:$excludedUrls}<link rel="canonical" href="{$canonical}"/>{/if}
                  {/if}

                  • +1
                    replicant replicant 25 сентября 2020 14:48 #

                    Плагин уже есть. Его просто надо подключить и наладить работу совместно с шаблонами темы дизайна. Он (плагин) управляет доп. параметрами (категории и товары). А на основе доп. параметров построить управление этими вещами в категории не сложно так, чтобы это выглядело как часть интерфейса.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите