Некорректно работает canonical Исправлено

1

Добрый день! 

Заметил, что на главной странице и в приложениях блог и сайт canonical работает некорректно. Точнее не работает. 

В приложении магазин, на страницах категорий и карточках товара все ок.

В шаблонах index.html сайта, магазина и блога прописано одно и то-же: {if !empty($canonical)}<link rel="canonical" href="{$canonical}"/>{/if}. Но при обращении к странице /info/oplata-i-dostavka/?ываыаываыва метатег не выводится. 

Подскажите как решить проблему. 

10 комментариев

  • +1
    replicant replicant 21 июня 2020 14:30 #

    В index.html нужен такой код

    {if $action == 'page'}
    <link rel="canonical" href="{$wa->domainUrl()}/{$page.url}" />
    {/if}

    Можете его вставить прямо под вышеупомянутой вами строкой кода.

  • +1
    I am - I can I am - I can 21 июня 2020 23:44 #

    Добавить в index.html вот такой код? 

    {if !empty($canonical)}<link rel="canonical" href="{$canonical}"/>{/if}
    
    {if $action == 'page'}
    <link rel="canonical" href="{$wa->domainUrl()}/{$page.url}" />
    {/if}

    Добавил, не сработало. Canonical не появился на страницах типа:

    /info/oplata-i-dostavka/?abracadabra

    Код не выводится ни в блоге, ни на страницах и на главной. 

    Я что-то неправильно сделал? 

    • +1
      replicant replicant 22 июня 2020 11:27 #

      А зачем проверять этот код в Блоге и на главной? Он не для этого. Он появится только на страницах Магазина.

      Если вы создаете страницы в приложении Сайт и/или Блог, то попробуйте вот такой код

      {if $action == 'page' || !empty($page.url)}
      <link rel="canonical" href="{$wa->domainUrl()}{$wa_app_url}{$page.url}" />
      {/if}

      Он более универсальный т.к. $action работает только в Магазине, а тут будет работать и в других приложениях при условии через ИЛИ.

      К тому же в этом коде учитывается url приложения, когда страницы не в корне, а глубже, как у вас типа /info/page_url.

    • +1
      I am - I can I am - I can 22 июня 2020 11:32 #

      Проблема проявляется только на главной в блоге и сайте.

      Насколько я понимаю index.html для всех один, разве нет? 

      • +1
        replicant replicant 22 июня 2020 11:34 #

        Давайте ещё раз по порядку.

        Вам надо, чтобы на страницах, созданных в приложениях Сайт, Блог и/или Магазин был проставлен корректный каноникал для случая, когда обращаются к странице в том числе и через параметр?

        Если да, то берите код из последнего сообщения.

        • +1
          I am - I can I am - I can 22 июня 2020 14:21 #

          Именно так!

          В данный момент каноникал вообще не отображается при обращении по адресу с параметрами: на главной странице, на страницах приложений сайт и блог. На данный момент меня больше всего беспокоят дубли главной страницы в индексе. 

          При этом на страницах товара и категорий каноникал отображается. 

          • +1
            replicant replicant 22 июня 2020 15:05 #

            Код рабочий (и первый и второй варианты) для статических Страниц приложений Сайт, Блог и Магазин он подходит и работает. Первый чисто для Магазина в корне и его Страниц. Второй универсальный для всего.

            Условие для главной надо прописывать исходя из вашей Структуры. Если в корне домена Магазин, то лучше через global в home.html, т.к. обычно он подключается на главную.

            В home.html самой первой строкой
            {assign var=home_canonical value="`$wa->domainUrl()`" scope="global"}
            
            В index.html
            {if !empty($home_canonical)}<link rel="canonical" href="{$home_canonical}" />{/if}

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

            Дело в том, что страница сайта и Страница Сайта или Страница Блога - это разные немного вещи.

            И главная страница сайта не обязательно Страница Сайта вообще.

            Вы когда говорите страница, то что конкретно имеете ввиду?

            На форуме это все долго, неудобно и непродуктивно. Стучите за подробностями в telegram @dmitriy_glazachev. Там расскажу детали. А так по существу вопроса и по коду ответы уже все даны.

            Секций кода в index.html, отвечающих за canonical, может быть несколько. Они срабатывают в зависимости от условий. Одна за статические Страницы, вторая за Товары, третья за главную страницу в домене, четвертая ещё за что-нибудь...

          • +1

            Мы выпустили обновление фреймворка Webasyst с улучшенным механизмом формирования тегов canonical на страницах сайта. Обновление можно установить в «Инсталлере».

            Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.

            Благодарим вас за то, что помогаете улучшать программные продукты Webasyst!

            • +1
              Виталий Виталий 21 июля 2020 13:38 #

              Михаил, увидел информацию об обновлении формирования каноникал. Видимо по этой причине сейчас возникла проблема с каноникал инфо страниц сайта. Зачем-то он стал формироваться и на этих страницах, причем с добавкой cart// и выходом на 404. Создал тему отдельную. Что скажете? SS6. Виталий

              • +1

                Вашу отдельную тему посмотрим и обработаем отдельно. Спрашивать о ней в комментариях к этой теме не нужно.

                Добавить комментарий

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