Отзывы с яндекс маркета на ваш сайт при помощи API с JSON

  1. Переходим по ссылке https://developer.tech.yandex.ru/ и нажимаем получить ключ.
  2. Выбираем API Яндекс.Маркета
  3. Заполняем информацию и выбираем "Базовый доступ - 100 запросов в сутки - бесплатно". Не бойтесь этого ограничения, ведь отзывы можно положить в кеш.
  4. Выбираем отзывы о сайте и получаем 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>

Похожие новости

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своей новости.

Комментариев 0