Отзывы с яндекс маркета на ваш сайт
PHP скрипт для размещения отзывов с яндекс маркета у себя на сайте.
- Переходим по ссылке https://developer.tech.yandex.ru/ и нажимаем получить ключ.
- Выбираем API Яндекс.Маркета
- Заполняем информацию и выбираем «Базовый доступ — 100 запросов в сутки — бесплатно». Не бойтесь этого ограничения, ведь отзывы можно положить в кеш.
- Выбираем отзывы о сайте и получаем API key примерно такого вида: XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
Получаем данные с апи маркета
$API = "XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"; //ваш ключ $shopid = "123456"; //нам нужен id страницы с отзывов о магазине, например https://market.yandex.ru/shop/18433/reviews тут будет ID 18433 $url = "https://api.content.market.yandex.ru/v1/shop/".$shopid."/opinion.json?sort=date&how=desc&count=10"; //я выбрал получить последние по дате 10 отзывов, как редактировать ссылку смотрите тут https://tech.yandex.ru/market/content-data/doc/dg/reference/shop-id-opinion-docpage/ $headers = array( "Host: api.content.market.yandex.ru", "Accept: */*", "Authorization: {$API}" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $string = curl_exec($ch); curl_close($ch);
Укажем PHP на JSON
$data = json_decode($string);
Отлично! Теперь можем изучать документацию от яндекс маркета, что же лежит в JSON
Выведем общее количество отзывов
echo $data->shopOpinions->total;
Теперь нам нужно вывести наши отзывы. Я делал для себя, вы можете отредактировать шаблон и переменные как вам удобно.
<div class="customer-reviews"> <h4>Отзывы с Яндекс Маркета</h4> <div class="list-reviews"> <?php foreach($data->shopOpinions->opinion as $val) { if( $val->grade == '2' ) $grade = '5'; //меняем рейтинговую систему яндекса с -2 до 2, на рейтинг с 1 о 5 elseif( $val->grade == '1' ) $grade = '4'; elseif( $val->grade == '0' ) $grade = '3'; elseif( $val->grade == '-1' ) $grade = '2'; elseif( $val->grade == '-2' ) $grade = '1'; if( $val->visibility == 'ANONYMOUS' ) $author = 'Анонимный комментарий'; //проверяем анонимный ли пользователь или нет else $author = $val->author; if( $val->pro ) $pro = "<b>Достоинства:</b><br />".$val->pro."<br /><br />"; else $pro = ""; if( $val->contra ) $contra = "<b>Недостатки:</b><br />".$val->contra."<br /><br />"; else $contr = ""; if( $val->text ) $text = "<b>Комментарий:</b><br />".$val->text; else $text = ""; $date = date("M j, Y, H:i:s", substr($val->date, 0, 10)); echo ' <div class="normal"> <h3 class="title">'.$author.'</h3> <span class="date">'.$date.'</span> <span class="vote"> <span title="Rating'.$grade.'/5" class="vmicon ratingbox" style="display:inline-block;width:70px;"> <span class="stars-orange" style="width:' . (14 * $grade) . 'px"></span> </span> </span> <blockquote>'.$pro.$contra.$text.'</blockquote> <span class="bold"></span> </div> <div class="clear"></div>'; } ?> </div> </div>
Ну и весь код целиком
$API = "XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"; //ваш ключ$shopid = "123456"; //нам нужен id страницы с отзывов о магазине, например https://market.yandex.ru/shop/18433/reviews тут будет ID 18433 $url = "https://api.content.market.yandex.ru/v1/shop/".$shopid."/opinion.json?sort=date&how=desc&count=10"; //я выбрал получить последние по дате 10 отзывов, как редактировать ссылку смотрите тут https://tech.yandex.ru/market/content-data/doc/dg/reference/shop-id-opinion-docpage/ $headers = array( "Host: api.content.market.yandex.ru", "Accept: */*", "Authorization: {$API}" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $string = curl_exec($ch); curl_close($ch); $data = json_decode($string); echo $data->shopOpinions->total; ?> <div class="customer-reviews"><h4>Отзывы с Яндекс Маркета</h4> <div class="list-reviews"> <?php foreach($data->shopOpinions->opinion as $val) { if( $val->grade == '2' ) $grade = '5'; //меняем рейтинговую систему яндекса с -2 до 2, на рейтинг с 1 о 5 elseif( $val->grade == '1' ) $grade = '4'; elseif( $val->grade == '0' ) $grade = '3'; elseif( $val->grade == '-1' ) $grade = '2'; elseif( $val->grade == '-2' ) $grade = '1'; if( $val->visibility == 'ANONYMOUS' ) $author = 'Анонимный комментарий'; //проверяем анонимный ли пользователь или нет else $author = $val->author; if( $val->pro ) $pro = "<b>Достоинства:</b><br />".$val->pro."<br /><br />"; else $pro = ""; if( $val->contra ) $contra = "<b>Недостатки:</b><br />".$val->contra."<br /><br />"; else $contr = ""; if( $val->text ) $text = "<b>Комментарий:</b><br />".$val->text; else $text = ""; $date = date("M j, Y, H:i:s", substr($val->date, 0, 10)); echo ' <div class="normal"> <h3 class="title">'.$author.'</h3> <span class="date">'.$date.'</span> <span class="vote"> <span title="Rating'.$grade.'/5" class="vmicon ratingbox" style="display:inline-block;width:70px;"> <span class="stars-orange" style="width:' . (14 * $grade) . 'px"></span> </span> </span> <blockquote>'.$pro.$contra.$text.'</blockquote> <span class="bold"></span> </div> <div class="clear"></div>'; } ?> </div> </div>