[yaMarketReviews] - отзывы из Яндекс Маркета на вашем сайте (Update 2018)
Компонент yaMarketReviews позволяет показывать на сайте отзывы о магазине или конкретном продукте, опубликованные на популярной площадке Яндекс Маркет.
Состоит из двух логических частей
Компонент работает в связке с pdoTools, используя все возможности PdoPage. Наличие обязательно для работы из коробки. Компонент сам подтянет pdoTools, в случае его отсутствия.
На бесплатном тарифе Яндекс разрешает запрашивать только 3000 отзывов в сутки. Соответственно Вы можете оперировать только этим объемом из коробки.
Можно записывать отзывы на долгий срок в базу данных, по 3000 ежедневно.
Есть еще вариант — подключить платный тариф 20 тыс. рублей в месяц.
В обоих случая нужна доработка компонента и запуск программы по расписанию или через консоль сервера, так как это не быстрый процесс.
Подробнее о тарифах и ценах здесь
Компонент запрашивает отзывы в Яндекс маркете, записывая их в базу данных сайта на определенный срок (можно регулировать) и далее в течение указанного срока выводит отзывы уже из собственной таблицы на сайте. Первый запуск программы (в момент записи в базу) может занять несколько секунд — возможно стоить запуск страницы с отзывами по расписанию.
Схема работы такая:
1. При каждом вызове производится запрос в базу данных на удаление устаревших отзывов
2. Производится запрос на наличие отзывов после очистки — если отзывы в базе есть — в дело вступает pdoPage который просто выбирает и показывает отзывы. Для работы с таблицей отзывов Вам доступны все возможности pdoPage, в том числе и ajax подгрузка дополнительных отзывов.
3. Если отзывов после удаления устаревших отзывов таблица пуста — производится запрос к Яндекс Маркету и запись свежих отзывов в базу данных — затем отрабатывает pdoPage
Помимо установки компонента на сайт, вам нужно получить ключ API Яндекс Маркета.
Делается это буквально в два клика в кабинете разработчика Яндекс
Ключ нужно указать в системной настройке yamarketreviews_yaMarketKey
Здесь важно заметить, что для ключа должен быть указан IP адрес сайта, где его будут использовать. Известны случаи когда Яндекс банит ключи без указания IP адреса. Самое интересное. что при получении ключа IP адрес указывать негде. Нет такого поля в интерфейсе ключей. Так что если вдруг у вас компонент не работает, а в логах висит соответствующая ошибка попробуйте получить ключ здесь
В описании проекта в свободном виде можно написать заблокированный ключ и сайт, где вы его планируете использовать. А также цель использования. Что то вроде «Мы планируем выводить отзывы о магазине на нашем сайте». Его активируют.
Реализованы при помощи сниппета getShopReviews
пример вызова и параметры:
Сниппет имеет несколько своих собственных параметров:
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
wrapperTpl — шаблон-обертка для всех отзывов. Необязательный параметр
по умолчанию установлен чанк yaMarketReviews.tpl
Реализовано сниппетом getProductReviews
По сути сниппет имеет все те же настройки и параметры что и предыдущий, единственная разница — нужно указать id товара, а не магазина
Состоит из двух логических частей
- Отзывы о магазине
- Отзывы о продукте
Зависимости
Компонент работает в связке с pdoTools, используя все возможности PdoPage. Наличие обязательно для работы из коробки. Компонент сам подтянет pdoTools, в случае его отсутствия.
Ограничения
На бесплатном тарифе Яндекс разрешает запрашивать только 3000 отзывов в сутки. Соответственно Вы можете оперировать только этим объемом из коробки.
Можно записывать отзывы на долгий срок в базу данных, по 3000 ежедневно.
Есть еще вариант — подключить платный тариф 20 тыс. рублей в месяц.
В обоих случая нужна доработка компонента и запуск программы по расписанию или через консоль сервера, так как это не быстрый процесс.
Подробнее о тарифах и ценах здесь
Общий принцип работы
Компонент запрашивает отзывы в Яндекс маркете, записывая их в базу данных сайта на определенный срок (можно регулировать) и далее в течение указанного срока выводит отзывы уже из собственной таблицы на сайте. Первый запуск программы (в момент записи в базу) может занять несколько секунд — возможно стоить запуск страницы с отзывами по расписанию.
Схема работы такая:
1. При каждом вызове производится запрос в базу данных на удаление устаревших отзывов
2. Производится запрос на наличие отзывов после очистки — если отзывы в базе есть — в дело вступает pdoPage который просто выбирает и показывает отзывы. Для работы с таблицей отзывов Вам доступны все возможности pdoPage, в том числе и ajax подгрузка дополнительных отзывов.
3. Если отзывов после удаления устаревших отзывов таблица пуста — производится запрос к Яндекс Маркету и запись свежих отзывов в базу данных — затем отрабатывает pdoPage
Предварительная настройка
Помимо установки компонента на сайт, вам нужно получить ключ API Яндекс Маркета.
Делается это буквально в два клика в кабинете разработчика Яндекс
Ключ нужно указать в системной настройке yamarketreviews_yaMarketKey
Здесь важно заметить, что для ключа должен быть указан IP адрес сайта, где его будут использовать. Известны случаи когда Яндекс банит ключи без указания IP адреса. Самое интересное. что при получении ключа IP адрес указывать негде. Нет такого поля в интерфейсе ключей. Так что если вдруг у вас компонент не работает, а в логах висит соответствующая ошибка попробуйте получить ключ здесь
В описании проекта в свободном виде можно написать заблокированный ключ и сайт, где вы его планируете использовать. А также цель использования. Что то вроде «Мы планируем выводить отзывы о магазине на нашем сайте». Его активируют.
Отзывы о магазине
Реализованы при помощи сниппета 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',
]}
В 2019 году Яндекс закрыл этот API (бесплатный доступ). Так что компонент мертв.
Поблагодарить автора
Отправить деньги
Комментарии: 35
Вопрос возник, а как кеширование ответов реализовано? Или при каждом обращении к странице идет запрос на API яндекса? Если так, то это весьма печально, так как яндекс может по какой-то причине отвечать медленно, а это значит, будет висеть весь сайт. А второе — это исчерпание лимита. Если 100 запросов в сутки, то я на одном товаре могу зажав F5 выбрать лимит за 2 минуты.
Пока никак не реализовано. Задачей первой версии является пощупать потребность в компоненте.
Будет спрос — будут доработки.
Будет спрос — будут доработки.
Ну собственно, послушав умных людей, анонсирую в ближайшее время обновление, реализующее кэширование ответов.
Это позволит растянуть 100 запросов в сутки на буквально неограниченное количество посещений сайта.
При условии, что я увижу спрос на идею, конечно.
Это позволит растянуть 100 запросов в сутки на буквально неограниченное количество посещений сайта.
При условии, что я увижу спрос на идею, конечно.
спрос есть! после НГ ждем обнову _)
Поддерживаю!
А почему нельзя не удалять отзывы, а собирать из в своей бд?
Ведь для сео очень важно, их собирать, а не перетирать их постоянно!
Идея очень хорошая, думаю пользоваться спросом будет точно, вопрос только цены если платный компонет будет))
Ведь для сео очень важно, их собирать, а не перетирать их постоянно!
Идея очень хорошая, думаю пользоваться спросом будет точно, вопрос только цены если платный компонет будет))
Вы сами указываете на какой срок сохранять отзывы. Можете указать два три года и отзывы не будут удаляться. Но и новые тогда парситься не будут.
Компонент бесплатный. Он уже готов, но никак не пройду модерацию, модератор занят сильно.
Если хотите найдите меня в Телеграм, контакте или скайпе — я дам пакет.
Ну или могу выслать на почту
Компонент бесплатный. Он уже готов, но никак не пройду модерацию, модератор занят сильно.
Если хотите найдите меня в Телеграм, контакте или скайпе — я дам пакет.
Ну или могу выслать на почту
а вот новые бы тогда нужно как раз добавлять.
Так а в чем вопрос то? Все новые добавляются, старые тоже на своем месте.
нужно сохранять все отзывы. чтобы старые отзывы не перетирались, и при этом добавлялись новые.
я понял так, что старые все же удаляются
я понял так, что старые все же удаляются
Спасибо учту ваше пожелание
Здравствуйте,
До недавнего времени компонент отлично работал, теперь в поле text сохраняется 0, с чем это может быть связано?
До недавнего времени компонент отлично работал, теперь в поле text сохраняется 0, с чем это может быть связано?
- Послать запрос по API код следующий (посылал запрос из компонента console)
$url = "https://api.content.market.yandex.ru/v2/models/id-товара по которому запрашиваются отзывы/opinions"; $headers = array( "Host: api.content.market.yandex.ru", "Accept: */*", "Authorization: код из API магазина" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $data = curl_exec($ch); curl_close($ch); $result = json_decode($data, true); if($result['status'] == 'ERROR'){ $errors = []; foreach($result['errors'] as $error){ $errors[] = $error['message']; } $errors = implode(', ', $errors); $this->modx->log(1, '[yaMarketReviews] - '.$errors); } var_dump($result);
- Увидел что данные приходят, значит это не бан ключа, а что-то на стороне сайта. Проверил версию БД (5.7 должна быть), проверяется запросом select version();
- Версия в порядке, стал проверять дальше, случайно обратил внимание на кавычки при вызове на fenom — в примере было так 'productid' => 10752111, с кавычками, т.е.'productid' => '10752111' — завелось, текст стал нормально приходить.
Может просто нет контента? Вы проверяли?
Да, остальные поля (автор, время) — сохраняются, а это поле записывает в базу 0. на яндекс маркете отзыв точно есть…
Постараюсь в выходные посмотреть. Дайте конкретные данные куда смотреть. id магазина или товара, пример комментария который в маркете есть, а на сайт не приходит.
Можно прямо ссылки дать
Можно прямо ссылки дать
verona-auto.com/catalog/avtomobilnye-videoregistratory/shtatnye/redpower-dvr-uni2-n-dvuhkanalnyj/ — на сайте,
market.yandex.ru/product/37056004/reviews?track=tabs — в маркете
gyazo.com/1b13fef045aef123f06fb8da1d72997d — принтскрин таблицы yaMarketReviews_productreviews
market.yandex.ru/product/37056004/reviews?track=tabs — в маркете
gyazo.com/1b13fef045aef123f06fb8da1d72997d — принтскрин таблицы yaMarketReviews_productreviews
Сорри, первый раз id-шником товара ошибся, щас поправил.
Хорошо. На выходных посмотрю что да как. Может и правда пора обновление делать.
Спасибо! жду. а то собирали-собирали id-шники, будет очень обидно если зря… к тому же раньше работало… может в api что то изменилось…
Вполне возможно и API
Даже модуль переустановил и ключ новый создал и прописал — без результатов…
Установил, проверил. Все без проблем парсится. Конкретно по твоему примеру — вижу полный текст отзывов.
очень странно… почему у меня в базу 0 то прилетают… актуальная версия пакета 1.0.0? была мысль что проблема в ключе, но остальные то данные парсятся и смена ключа ни к чему не привела… у меня именно в базу текст не приходит…
Полностью всё удалил от пакета до чанков и сниппетов, поставил заново — никаких изменений…
А таблицу проверил? Я не помню, очищается ли она автоматом
удалял обе таблицы из базы перед повторной установкой, сейчас в базе тоже самое((
может частичный бан ключа?
По совету Николая проверил несколько параметров и решил проблему.
Проблема и ход действий:
Проблема — в поле text сохраняется 0 вместо текста отзыва
Ход действий:
Случай не стандартный, т.к. феном обрабатывает просто числа без кавычек, но может кому — нибудь пригодится и избавит от головной боли и не понимания в духе «всё же работало».
Ещё раз БОЛЬШОЕ человеческое СПАСИБО Николаю который ответил на вопросы, а не просто отмахнулся.
Проблема и ход действий:
Проблема — в поле text сохраняется 0 вместо текста отзыва
Ход действий:
Случай не стандартный, т.к. феном обрабатывает просто числа без кавычек, но может кому — нибудь пригодится и избавит от головной боли и не понимания в духе «всё же работало».
Ещё раз БОЛЬШОЕ человеческое СПАСИБО Николаю который ответил на вопросы, а не просто отмахнулся.
UPD: Если в базу приходят 0 вместо нормальной информации — проверяем по верхнему комментарию, если текст приходит, но в базе 0 — меняем тип поля с text на varchar(255), текст стал приходить нормально.
А где сейчас взять данное дополнение?
Николай привет, а где доп скачать?
Привет Сергей. Яндекс закрыл этот API. Компонент тупо не может получать данные.
Печалька… :(((
т.е. на данном этапе с yandex отзывы не подтянуть никак?
т.е. на данном этапе с yandex отзывы не подтянуть никак?
С компонентом не выйдет да. API то остался, но он теперь платный и довольно дорогой.
Я где то видел сторонние сервисы для получения данных от Яндекс API, которые работают как прослойка, промежуточный сервер. Что то вроде покупки вскладчину. Я бы в эту сторону смотрел и приспосабливался.
Я где то видел сторонние сервисы для получения данных от Яндекс API, которые работают как прослойка, промежуточный сервер. Что то вроде покупки вскладчину. Я бы в эту сторону смотрел и приспосабливался.
Отзывы из Яндекс Маркета на вашем сайте можно вывести через JavaScript-виджет от SmartWidgets. Установка и настройка занимает 2 минуты. Вы копируете URL магазина из маркета, вставляете в конструктор виджета, настраиваете дизайн виджета, получаете небольшой HTML-код, вставляете к себе на сайт и все. Виджет будет транслировать отзывы из Яндекс Маркета у вас на сайте. Обновление отзывов раз в день. Можно фильтровать по звездности. Сортировать по дате добавления. И многое другие. Сайт виджета – smartwidgets.ru/yandex-market-reviews-widget/
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.