[yaMarketReviews] - отзывы из Яндекс Маркета на вашем сайте (Update 2018)


Компонент yaMarketReviews позволяет показывать на сайте отзывы о магазине или конкретном продукте, опубликованные на популярной площадке Яндекс Маркет.

Состоит из двух логических частей
  1. Отзывы о магазине
  2. Отзывы о продукте


Зависимости

Компонент работает в связке с pdoTools, используя все возможности PdoPage. Наличие обязательно для работы из коробки.

Ограничения

На бесплатном тарифе Яндекс разрешает запрашивать только 3000 отзывов в сутки. Соответственно Вы можете оперировать только этим объемом из коробки.
Можно записывать отзывы на долгий срок в базу данных, по 3000 ежедневно.
Есть еще вариант — подключить платный тариф 20 тыс. рублей в месяц.
В обоих случая нужна доработка компонента и запуск программы по расписанию или через консоль сервера, так как это не быстрый процесс.
Подробнее о тарифах и ценах здесь

Общий принцип работы

Компонент запрашивает отзывы в Яндекс маркете, записывая их в базу данных сайта на определенный срок (можно регулировать) и далее в течение указанного срока выводит отзывы уже из собственной таблицы на сайте. Первый запуск программы (в момент записи в базу) может занять несколько секунд — возможно стоить запуск страницы с отзывами по расписанию.

Схема работы такая:
1. При каждом вызове производится запрос в базу данных на удаление устаревших отзывов
2. Производится запрос на наличие отзывов после очистки — если отзывы в базе есть — в дело вступает pdoPage который просто выбирает и показывает отзывы. Для работы с таблицей отзывов Вам доступны все возможности pdoPage, в том числе и ajax подгрузка дополнительных отзывов.
3. Если отзывов после удаления устаревших отзывов таблица пуста — производится запрос к Яндекс Маркету и запись свежих отзывов в базу данных — затем отрабатывает pdoPage

Предварительная настройка

Помимо установки компонента на сайт, вам нужно получить ключ API Яндекс Маркета.
Делается это буквально в два клика в кабинете разработчика Яндекс

Ключ нужно указать в системной настройке yamarketreviews_yaMarketKey

Отзывы о магазине

Реализованы при помощи сниппета getShopReviews

пример вызова и параметры:

// Классический вызов
[[!getShopReviews?
	&shopid=`1586`
	&saveTime=`3 days`	
	&sortby=`date`
	&sortdir=`desc`
]]

// вызов через fenom
{'!getShopReviews' | snippet : [
	'shopid' => 380682,
	'saveTime' => '3 days'
        'sortby' => 'date',
        'sortdir' => 'desc'    
]}
Сниппет является оберткой для pdoPage и принимает все характерные для него параметры.
Сниппет имеет несколько своих собственных параметров:

shopid — обязательный параметр. Собственно номер-идентификатор магазина в Яндекс Маркете, чьи отзывы вы желаете получить. Можно подсмотреть в адресной строке Маркета.
saveTime — время хранения отзывов в базе данных. Строка на английском с указанием времени. Например 2 hours, 3 days, 2 weeks, 1 month, 1 year. Для тех кто понимает о чем речь строка преобразуется функцией strtotime.

sortby Обязательным параметром является поле для сортировки отзывов. По умолчанию date.
Для сортировки доступны поля date, shopid, reviewid, grade(оценка от 1 до 5), agreeCount(С отзывом согласны), disagreeCount (с отзывом не согласны), author, expired (временная метка срока записи )

tpl — шаблон одного отзыва. Необязательный параметр
по умолчанию установлен чанк yaMarketReview.tpl

<div class="yaMarketReview">
    <div class="ReviewHeader">
        <p>Автор:<strong> [[+author]]</strong> Дата: <strong>[[+date]]</strong> Оценка:<strong>[[+grade]]</strong></p>
    </div>

    <div class="ReviewContent">[[+text]]</div>
    <div class="ReviewFooter">
        <p>Отзыв одобрили:<strong>[[+agreeCount]]</strong> Отзыв не одобрили: <strong>[[+disagreeCount]]</strong></p>
    </div>
</div>

wrapperTpl — шаблон-обертка для всех отзывов. Необязательный параметр
по умолчанию установлен чанк yaMarketReviews.tpl

<div class="yaMarketReviewsWrapper">
    <p>Всего отзывов: [[+page.total]] </p>
    <div>[[+output]]</div>
    [[+page.nav]]
</div>

Отзывы о товаре

Реализовано сниппетом getProductReviews
По сути сниппет имеет все те же настройки и параметры что и предыдущий, единственная разница — нужно указать id товара, а не магазина

// Классический вызов
[[!getProductReviews?
	&productid=`1721921261`
	&saveTime=`3 days`		
	&sortby=`date`
	&sortdir=`desc`
]]

// вызов через fenom
{'!getProductReviews' | snippet : [
    'productid' => 10752111,
    'saveTime' => '1 day',
    'sortby' => 'date',
    'sortdir' => 'desc',
]}
Компонент находится на модерации
27 декабря 2017, 22:36    Николай Савин   
4    532 +10


Комментарии ()

  1. Иван Климчук 28 декабря 2017, 09:45 # +4
    Вопрос возник, а как кеширование ответов реализовано? Или при каждом обращении к странице идет запрос на API яндекса? Если так, то это весьма печально, так как яндекс может по какой-то причине отвечать медленно, а это значит, будет висеть весь сайт. А второе — это исчерпание лимита. Если 100 запросов в сутки, то я на одном товаре могу зажав F5 выбрать лимит за 2 минуты.
    1. Николай Савин 28 декабря 2017, 09:48 # 0
      Пока никак не реализовано. Задачей первой версии является пощупать потребность в компоненте.
      Будет спрос — будут доработки.
    2. Николай Савин 28 декабря 2017, 10:46 # +6
      Ну собственно, послушав умных людей, анонсирую в ближайшее время обновление, реализующее кэширование ответов.
      Это позволит растянуть 100 запросов в сутки на буквально неограниченное количество посещений сайта.
      При условии, что я увижу спрос на идею, конечно.
      1. UDAV 28 декабря 2017, 12:50 # +1
        спрос есть! после НГ ждем обнову _)
        1. Игорь 28 декабря 2017, 16:58 # 0
          Поддерживаю!
        2. Александр 18 января 2018, 11:18 # 0
          А почему нельзя не удалять отзывы, а собирать из в своей бд?
          Ведь для сео очень важно, их собирать, а не перетирать их постоянно!
          Идея очень хорошая, думаю пользоваться спросом будет точно, вопрос только цены если платный компонет будет))
          1. Николай Савин 18 января 2018, 11:22 # 0
            Вы сами указываете на какой срок сохранять отзывы. Можете указать два три года и отзывы не будут удаляться. Но и новые тогда парситься не будут.
            Компонент бесплатный. Он уже готов, но никак не пройду модерацию, модератор занят сильно.
            Если хотите найдите меня в Телеграм, контакте или скайпе — я дам пакет.
            Ну или могу выслать на почту
            1. Александр 18 января 2018, 11:27 # 0
              а вот новые бы тогда нужно как раз добавлять.
              1. Николай Савин 18 января 2018, 15:04 # 0
                Так а в чем вопрос то? Все новые добавляются, старые тоже на своем месте.
                1. Александр 18 января 2018, 15:07 # 0
                  нужно сохранять все отзывы. чтобы старые отзывы не перетирались, и при этом добавлялись новые.
                  я понял так, что старые все же удаляются
                  1. Николай Савин 18 января 2018, 15:11 # 0
                    Спасибо учту ваше пожелание
        Вы должны авторизоваться, чтобы оставлять комментарии.