Индексация отзывов (SEO)

Чтобы виджеты полноценно индексировались поисковыми роботами, необходимо выполнить следующие действия:

  1. Получить HTML контент виджета с помощью Widgets API
  2. Встроить полученный HTML в страницу, отдаваемую сервером в браузер

Данный подход мы называем Inline SEO.

URL виджетов

Базовый URL для доступа к виджетам: http://widgets.shoppilot.ru/widgets/<%= STORE_ID %>/<%= THEME_ID %>

Параметр Описание
STORE_ID Идентификатор витрины
THEME_ID Используемая тема (набор виджетов). Как правило это default

Каждый виджет в зависимости от типа страницы (контекста) имеет свой URL:

Тип URL виджета
Товар /product/PRODUCT_ID/WIDGET_NAME.html
Категория /category/CATEGORY_ID/WIDGET_NAME.html
Бренд /brand/BRAND_NAME/WIDGET_NAME.html
Сайт/витрина /store/WIDGET_NAME.html

Параметры:

Параметр Описание
PRODUCT_ID ID товара (в YML файле offer.id)
CATEGORY_ID ID категории (в YML файле category.id)
BRAND_NAME Название бренда (в YML файле offer.vendor)
WIDGET_NAME Системное имя виджета

Пример запроса виджета:

$ curl -i http://widgets.shoppilot.ru/widgets/\
537b4eb6f92ea17704000bd3/default/product/6907343/product-reviews.html

HTTP/1.1 200 OK

<div id="shoppilot-product-reviews-widget">
    <div class="sp-summary">
        <div class="sp-summary-top-row">
        ...

Способы встраивания виджетов

Существует несколько способов встроить виджет в HTML документ. Рассмотрим два популярных способа:

  • SSI (Server-Side Includes)
  • Средствами CMS или веб-фреймворка

Встраивание средствами SSI

Технология серверных вставок (SSI) позволяет динамически собирать веб-страницы на сервере из отдельных составных частей и выдавать клиенту полученный HTML-документ.

На веб-странице в место, где должны появиться отзывы (любой другой виджет), добавьте следующий код (пример для PHP):

<div id="shoppilot-reviews-container">
  <!--#include virtual="/shoppilot/widgets/<?= STORE_ID ?>/default/product/<?= PRODUCT_ID ?>/product-reviews.html"-->
</div>

На стороне вашего веб-сервера необходимо включить SSI и организовать проксирование.

Пример для nginx

server {
  # ....
  ssi on;

  location /shoppilot/ {
    proxy_set_header Accept-Encoding "identity";
    proxy_pass_request_body off;
    proxy_pass http://widgets.shoppilot.ru/;
    proxy_connect_timeout 10;
    proxy_read_timeout 10;
    error_page 404 502 504 = @shoppilot-widgets;
  }

  location @shoppilot-widgets {
    return 204;
  }
}

Подробнее про технологию SSI читайте в документации

Встраивание средствами CMS или веб-фреймворка

Вставку контента можно также организовать средствами вашей CMS или веб-фреймворка.

Пример для PHP

$widget_url = curl_init(
  "http://widgets.shoppilot.ru/widgets/" .
  STORE_ID . "/default/product/" .
  PRODUCT_ID . "/product-reviews.html"
);
curl_setopt_array($widget_url, [
  CURLOPT_TIMEOUT        => 2,
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_FOLLOWLOCATION => 0,
  CURLOPT_FAILONERROR    => 1,
  CURLOPT_RETURNTRANSFER => 0
]);
$widget_html = curl_exec($widget_url);

Далее результат выполнения команды $html_widget встраивается в страницу.

Обязательно проверяйте код ответа! Только при ответе 200 OK отображайте виджет пользователю.

results matching ""

    No results matching ""