Как реализовать на сайте разметку Open Graph Есть решение

Заметил что на сайте (приложение сайт) , не путать с магазином, не выводится у страниц разметка. Зашел на сайт webasyst у них все ок, как ее реализовать, куда какой код вставить? И почему этого нет по умолчанию?

<!-- OG -->

<meta property="og:url" content="" />

<meta property="og:title" content="" />

<meta property="og:description" content="" />

<meta property="og:type" content="" />

<meta property="og:image" content="" />

2 ответа

  • 1
    Алексей Webasyst 11 апреля 2018 18:42 # Решение

    Сайт - Страницы - Выбрать страницу и наверху Настройки страницы - раздел Соцсети.

    • +1
      realteam realteam 11 апреля 2018 23:45 #

      Это все прописал, но нет в коде сайта этого.

    • +1
      replicant replicant 11 апреля 2018 23:53 #

      Там стоит установка "Использовать те же заголовки для соцсетей". Даже, если поменяем заголовки на произвольные. Разметка от этого разве появится на странице, созданной в приложении Сайт? Шаблон Дефолт 3.0.

      Я бы в head.html приложения Сайт вставил вот такие строки

      <meta property="og:title" content="{$wa->title()|escape}">
      <meta property="og:description" content="{$wa->meta('description')|escape}" />
      ну и т.д. по смыслу

      Уже хоть что-то будет вместо ничего.

      • +1
        realteam realteam 12 апреля 2018 00:01 #

        В том то и дело, что я все прописал для соц сетей, т.е убрал галочку, чтобы они не были одинаковые, но в шаблоне видимо это не прописано и поэтому не выводится. Шаблон стоит "Сайт. Визитка", но даже не суть.

        Вопрос, какой код для вставки в шаблон, чтобы на каждой странице выводилось, то что выше написал. Еще заметил, что код <link rel="canonical" href="{$canonical}"/> есть, а когда смотришь код на любой странице то нет его.

        • +1
          replicant replicant 12 апреля 2018 00:35 #

          Есть ещё небольшой лайфхак. Заходишь в редактор страницы и в дополнительных параметрах пишешь следующее:
          descr=твой текст
          ttl=твой тайтл


          Затем в шаблоне head.html Сайта вытаскиваешь это через

          <meta property="og:title" content="{$page.ttl}" />
          <meta property="og:description" content="{$page.descr}" />
          <meta property="og:url" content="{$wa->domainUrl()}{$wa->currentUrl()}" />
          и далее любые поля по смыслу

          Или, если не критично использовать те же значения, что и в основных мета, то см. совет выше.
          Только не забудь проверку на {if $page.ttl} ну и т.д., чтобы теги с пустым content не выводить.

          • +1
            realteam realteam 12 апреля 2018 07:34 #

            Спасибо, попробую.

            Но странно, что по умолчанию такое не работает и ТП ничего не говорит.

        • +2
          replicant replicant 12 апреля 2018 07:37 #

          Еще совсем забыл среди ночи.
          Для $page доступны следующие вещи.

              $page.title - заголовок
          $page.description - тут все понятно $page.keywords - тоже без комментариев $page.og_description - если делать отдельный description для соц.сетей $page.og_image - картинка $page.og_title - заголовок для социалок $page.og_type - тип контента $page.og_video - видос $page.test - дополнительный параметр с названием test

          Все эти вещи обрамляем красиво тегами в head.html Сайта

          Для примера строка title с проверкой на отдельный og_title

          <meta property="og:title" content="{if $page.og_title}
          {$page.og_title|escape}{else}{$page.title|escape}
          {/if}" />

          Для видео будет так

          {if $page.og_video}<meta property="og:video" content="{$page.og_video}" />{/if}
          • +1
            realteam realteam 12 апреля 2018 07:38 #

            Спасибо, днем попробую.

            • +1
              replicant replicant 12 апреля 2018 07:48 #

              Я, прочитав вашу тему, заморочился для себя тоже такое сделать. У меня на сайте обычно страницы не используются, т.к. юзаю страницы магазина, где это работает из коробки, но ради морального удовлетворения запилил себе таки одну страницу. Всё вроде красивенько получилось.

              В index.html head должен быть подключен так {include file="`$wa_active_theme_path`/head.html" inline}.

              • +1
                realteam realteam 12 апреля 2018 09:17 #

                При таком коде падает сайт:

                <meta property="og:description" content="{if $page.og_description}{$page.og_description|escape}{else}{$wa->meta('description')|escape}" />
              • +1
                realteam realteam 12 апреля 2018 09:38 #
                <meta property="og:type" content="" />

                что прописать в content="???" - так как есть для главной "website" а для страниц "article"

              • +1
                realteam realteam 12 апреля 2018 09:47 #
                <meta property="og:description" content="{if $page.og_description}{$page.og_description|escape}{else}{$wa->meta('description')|escape}{/if}" />
                
                Это заработало
                • +1
                  replicant replicant 12 апреля 2018 10:32 #

                  Потому что {if} {else} {/if} требует закрывающей части. Нельзя открыть {if} и оставить просто так. Поэтому и падало.

                  Небольшой пример с контентом, чтобы просто навести на мысль.

                  <meta property="og:type" content="{if $page.og_type}
                  {$page.og_type}{else}website
                  {/if}"
                  />

                  Для страниц, где тип контента указан, будет выводиться то, что указано. В остальных случаях website.

  • 1
    realteam 12 апреля 2018 10:16 # Решение

    В общем сделал вот так но есть пару моментов, просто не знаю переменные, которые подставить:

        <!-- OG -->
        <meta property="og:title" content="{if $page.og_title}{$page.og_title|escape}{else}{$page.title|escape}{/if}" />
        <meta property="og:description" content="{if $page.og_description}{$page.og_description|escape}{else}{$wa->meta('description')|escape}{/if}" />
        <meta property="og:locale" content="ru_RU" />
        <meta property="og:keywords" content="{$page.keywords}" />
        <meta property="og:video" content="{$page.og_video}" />
        <meta property="og:image" content="{$page.og_image}" />
        <meta property="og:image:secure_url" content="{$page.og_image}" />
        <meta property="og:site_name" content="" />
        <meta property="og:url" content="{$wa->domainUrl()}{$wa->currentUrl()}" />
    	<meta property="og:type" content="" />

    В общем завис над строчками:

    как вывести тип?

    <meta property="og:type" content="" />

    Как вывести имя пробовал {$a.name} и {foreach $wa->apps() as $a}{$a.name}{if !$a@last}{/if}{/foreach}, но выводит, все категории блога, а мне надо 1 первую основную.

    <meta property="og:site_name" content="" />

    Кейворды конечно лишнее, но просто ради интереса поставил

    <meta property="og:keywords" content="{$page.keywords}" />
    • +1
      replicant replicant 12 апреля 2018 10:36 #

      Про блог и категории не уловил суть. Вроде речь о приложении Сайт и страницах его шла. Что с блогом не так? У блога свой head.html по идее есть. Туда всякое для него можно размещать. А в записях блога отдельно корректно настраиваются теги OG.

      • +1
        realteam realteam 12 апреля 2018 10:39 #

        да блог немного лишний. Просто не могу понять откуда можно выдернуть название сайта. Которое прописано в "Сайт - Настройки - Название поселения" (Название используется в меню навигации $wa->apps этого сайта)

        Есть код, как его вывесит?

        • +1
          replicant replicant 12 апреля 2018 11:01 #

          Понял. Короче смотри. На самом деле это задается в двух местах.
          Сайт - Дизайн - Настройки - Название поселения и ещё Сайт - Настройки - wa-apps меню - Настроить. Так вот это wa-apps меню является массивом с возможно несколькими элементами, причем, что самое интересное, во второй настройке название может не совпадать с первой настройкой. Из этого массива наверное и надо тянуть нужный элемент.

          Код ниже выдернет из массива меню первый элемент и выведет его где надо.

          {$apps = $wa->apps()}
          {foreach $apps as $a}
          {if $a@first}
          {$a.name}
          {/if}
          {/
          foreach}

          Соответственно $a@last - последний, а !$a@last - все, кроме последнего.

          • +1
            realteam realteam 12 апреля 2018 11:06 #

            Спасибо, на форуме удалось найти тут, то что искал.

            • +1
              replicant replicant 12 апреля 2018 11:11 #

              Ну да. Можно и так. Условие по url'ам. Просто увидел в примере попытки !$a@last и подумал про него. У меня, например, приложение Сайт есть, но в массиве wa-apps его нет, т.к. меню настроено вручную на два элемента, когда / = магазин, а /blog/ = новости.

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

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