Помогите со смарти создать условие

Всем привет.

Помогите гуманитарию :). Хочу убрать каноникал со страницы фильтров. Конструкция в шаблоне есть просто для проставки каноникал

{if !empty($canonical)}
<link rel="canonical" href="{$canonical} "/>

Выражения условий тоже есть


{if $wa->currentUrl()|strstr:"sort"}....{/if}
{if $wa->currentUrl()|strstr:"price_min"}....{/if}
{if $wa->currentUrl()|strstr:"price_max"}....{/if}

Как это все соединить, что бы на страницах сортировок каноникал пропал, а на всех остальных остался.

2 ответа

  • 1
    replicant 17 августа 2018 20:27 #

    Сейчас на странице сортировки и фильтрации в категории каноникал такой же как URL категории или там образуется нечто иное?

  • 1
    Sed_Lex 22 августа 2018 13:36 #

    еще бы условие для страниц пагинации ?page=  с каноникал саму на себя было бы вообще круто )

    • +1
      replicant replicant 22 августа 2018 14:08 #

      В index.html

      {if $action =='category' && !empty({$wa->get("page")})}
      {$canonical = $wa->domainUrl()|cat:$wa->currentUrl()}{/if}
      {if !empty($canonical)}<link rel="canonical" href="{$canonical}" />{/if}

      Только, если на странице пагинации в категории есть правильные link prev и next, то таким "левым" каноникалом лучше наверное не баловаться.

      Если по теме основного вопроса, то все ключи сортировки - это суть get параметры и при положительной проверке на {if !empty({$wa->get("ключ сортировки")})} обнуляйте каноникал. Получится конечно куча-мала в index.html, если ключей много, но работать будет.

      С точки зрения СЕО вы хотите странных вещей, но хозяин - барин, если контент страниц пагинации + мета отличаются друг от друга, то пусть будут каноникалами сами в себе. Если нет, то Яндекс дубликаты все равно выбросит. Чтобы не выбросил надо хотя бы вот такие вещи делать {$wa->title("`$titleplus` Страница `$wa->get("page")`.")} ну и с дескрипшеном подобное тоже провернуть или вообще пагинацию отдавать по отдельным URL с собственными мета, описанием, h1 и каноникалами.

      • +1
        Sed_Lex Sed_Lex 22 августа 2018 15:34 #

        Да, у меня разные тайтлы, дескрипшены, Н1 на всех страницах пагинации. Собственно чего и весь сыр-бор с каноникал затеял.

        Хочу уточнить по основному вопросу. Конструкция должна быть такая? И чем заканчиваться :)

        {if !empty({$wa->get("sort")})}

        {if !empty({$wa->get("price_min")})}

        {if !empty({$wa->get("price_max")})}

        • +2
          replicant replicant 22 августа 2018 16:44 #

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

          {if !empty({$wa->get("sort")}) || !empty({$wa->get("price_min")}) || !empty({$wa->get("price_max")})}
          {$canonical = ''}
          {/if}
          {if !empty($canonical)}<link rel="canonical" href="{$canonical}" />{/if}

          Комбинаций можно много придумать. Товарные страницы обрабатывать как $smarty.server.REQUEST_URI == "`$wa->shop->productUrl($product)`", пагинацию превращать в каноникал и т.п. Просто будет цепочка условий и все.

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

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