1. Приветствуем Вас на нашем закрытом форуме для складчиков сайта cmsheaven.org. Если Вы частный вебмастер, фрилансер, владелец малого или среднего бизнеса, представитель студии по разработке сайтов - будем рады видеть Вас в наших рядах экономных людей.
    Регистрация на форуме возможна только после вступления в складчину

Отзывы из ВКонтакте на сайт

Тема в разделе "Вебмастерская", создана пользователем Otto, 21 фев 2017.

  1. Otto

    Otto Опытный складчик

    Регистрация:
    21 мар 2016
    Сообщения:
    98
    Симпатии:
    35
    Возникла необходимость вывода отзывов (обсуждения) из группы ВКонтакте на страницу сайта. Сделать это при помощи Iframe не удалось - ВКонтакте блокирует эту фишку. Пытаюсь "курить" api vk https://vk.com/dev/board.getComments, но с программированием знаком совсем поверхностно и пока ничего не выходит.
    Может быть у кого-то есть готовое решение, код... или существует плагин для вывода обсуждений из vk?
    Пример обсуждения: https://vk.com/topic-6246566_27046898
    #1
  2. ushangi

    ushangi Cкладчик

    Регистрация:
    28 ноя 2015
    Сообщения:
    2
    Симпатии:
    0
    Если еще надо то вот
    <?
    $Arr_otzyv=array();
    $request_params = array(
    'group_id' => 'Ваш_ID_группы"',
    'topic_id' => 'ID_топика_отзывов',
    'offset' => 0,
    'count' => $count_item_ar,
    'extended' => '1',
    'sort' => 'desc'
    );
    $request_params_2= array(
    'group_id' => 'Ваш_ID_группы',
    'topic_id' => 'ID_топика_отзывов',
    'offset' => 100,
    'count' => $count_item_ar,
    'extended' => '1',
    'sort' => 'desc'
    );


    $vk_get_zapros="https://api.vk.com/method/board.getComments";
    function vk_query($url, $params) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    //curl_setopt($ch, CURLOPT_IPRESOLVE, CURLOPT_IPRESOLVE_V4);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
    }

    function GetProfillArr($result) {

    foreach ($result['response']['profiles'] as $profil)
    {
    $profil_arr[$profil['uid']] = $profil;
    }

    return $profil_arr;
    }
    $arr_vk=vk_query($vk_get_zapros, $request_params);
    $arr_vk_2=vk_query($vk_get_zapros, $request_params_2);

    $result = json_decode($arr_vk,true);

    if(!empty($result))
    {
    $profil_arr=GetProfillArr($result);
    $Arr_otzyv=GetOtzyvArr($result,$profil_arr);
    }

    $result_2 = json_decode($arr_vk_2,true);

    if(!empty($result_2))
    {
    $profil_arr_2=GetProfillArr($result_2);
    $Arr_otzyv_2=GetOtzyvArr($result_2,$profil_arr_2);
    }

    $Arr_otzyv=array_merge($Arr_otzyv, $Arr_otzyv_2);

    $count_otzyv=count($Arr_otzyv);
    $count_page=round($count_otzyv/8, 0, PHP_ROUND_HALF_UP);

    ?>

    function GetOtzyvArr($result,$profil_arr) {
    foreach ($result['response']['comments'] as $comment)
    {
    if (!empty($comment['from_id']) )
    {
    $profil = $profil_arr[$comment['from_id']];
    $text = $comment['text'];
    preg_match('@\[(.*)\:(.*)\|(.*)\]@', $text, $m);
    if (!empty($m[0]))
    {
    $uid = $m[1];
    $name = $m[3];

    $r = '<a class="vk_fio" href="https://vk.com/'.$uid.'" target="_blank">'.$name.'</a>';
    }

    $text = preg_replace('@\[.*\]@', $r, $text);

    $otz=' <div class="d_tr otzyv-main">

    <div class="d_td vk_comment ">';
    if ($comment['from_id'] != 101)
    {
    $otz .= '<div class="vk_fio_title vk_img "><img src="'.$profil['photo_medium_rec'].'" ><span> '.$profil['first_name'].' '.$profil['last_name'].' </span><br/><span class="vk_date">'.date('d.m.Y H:i', $comment['date']).'</span></div>';
    }
    else
    {
    $otz .= '<div class="vk_fio">'.$profil['first_name'].' '.$profil['last_name'].'</div>';
    }
    $otz .= '<div class="vk_text"><p>'.$text.'</p></div></div></div>';
    $Arr_otzyv[]=$otz;

    }
    }
    return $Arr_otzyv;
    }
    #2