[VK API] Урок первый, записи. - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
[VK API] Урок первый, записи.
iGodPlease Дата: Понедельник, 30.03.2015, 21:00 | Сообщение # 1
Новичок
Сообщений: 25
Статус: Offline
И так, всем привет. Это первый урок по VK API. Начать я хотел с довольно интересной темы: Вытаскивание записей со страниц в ВК.

Для начала я несколько расскажу о методе wall.get.
Данный метод позволяет вытаскивать из открытых к просмотру Сообществ(Групп, Публичных страниц, Мероприятий)/Личных страниц записи и возможную информацию о них (Комментарии, Лайки, Репосты, Прикрепленные файлы, Дату создания, Содержание, Идентификатор записи, группы и создателя записи (Личная странница)).

Данный метод используется на некоторых сайтах, но единственный что мне знаком это сайт игрового проекта RakNet
Возможно вы задаётесь вопросом, чем же полезен этот метод, ведь существует официальный скрипт от ВКонтакте? На этот вопрос у меня давно готов ответ: Данный метод позволит добавить стилизацию записям (Если хватит навыков, то можно сделать интересный вариант стилизации), распределять их по типу, возможным прикреплениям, а так же возможность удобного управления записями с сайта (Придётся немного по зубрить материал на http://vk.com/dev/methods , разобраться с саппортами Vk.Com (Возможно, им нужно разрешить использование некоторых методов на вашем сайте), а так же добавить авторизацию через OAuth). В итоге получить сайт, по функциональности не уступающий многим новостным движкам. Так же во время написания статьи появилась идея сохранения записей ВКонтакте и последующее их модерирование, но уже с БД сайта.

Ну, вот мы и подошли к самой интересной части данного урока - разбору готового исходного кода.

Код
<!-- Здесь должно быть оформление, но возможно вы используете данный документ, как и я, в качестве include'a -->
<?php
$groupID = -90649006; // ID сообщества/страницы (Для сообщества, перед ID должен стоять минус)
$countNews = 10; // Кол-во новостей на странице
$offset = $_GET['npage']*$countNews; // С какой по счёту новости должен начаться отсчёт. Использую ?npage=x, где x - любое число (Без ?npage=, x будет равен 0)
$url = "http://api.vk.com/method/wall.get?owner_id=$groupID&count=$countNews&offset=$offset"; // Создание ссылки для получения массива с записями из группы $groupID, количеством в $countNews записей, начиная с $offset записи.
$msg = json_decode(file_get_contents($url), false); // Получаем результат и декодим, потому что результат получаем в формате json
for ($i = 1; $i<=count($msg->response)-1; $i++) { // Цикл, который парсит все записи в диапазоне массива, что отправил нам VK API
?>
<!-- Здесь должно быть начало оформления каждой новости -->
<?php
   $text = $msg->response[$i]->text; // Переменная будет содержать текст
   $idNews = $msg->response[$i]->id; // Переменная будет содержать ID записи, который будет важен для видеозаписей (Они, скорее всего не будут воспроизводиться)
   $text=preg_replace("#(https?|ftp)://\S+[^\s.,> )\];'\"!?]#",'<a href="\\0">\\0</a>',$text); // Форматирует ссылки в ссылки, честно говоря я этот фрагмент взял с одного из форумов по PHP
   echo $text; // Выводит запись
   if(count($msg->response[$i]->attachment)) { // Если у новости есть прикрепления, то он выводит
   ?>
   <!-- Здесь оформление прикреплений для каждой новости, я использовал таблицу -->
    Прикрепления:
    <table width="100%" style="text-align:center;">
    <tr><th>Картинки</th><th>Видеозаписи</th></tr>
    <tr><td> </td><td> </td></tr>
<?php   
    for($y = 0; $y<=count($msg->response[$i]->attachments)-1; $y++){// Создание цикла, который парсит каждое прикрепление    
     $attachments = $msg->response[$i]->attachments[$y]; //   
     switch($attachments->type){ // Проверка типа прикрепления
      case 'photo': {
       echo '<tr><td><img src="',$attachments->photo->src_big,'" height="100px" /></td><td></td></tr>'; // Если фото, то выводит большое изображение, но с высотой в 100 пикселей       
       break;
      }
      case 'video':{
       $videoImg = $attachments->video->image_small;
       echo '<tr><td></td><td><a href="http://vk.com/wall-',$groupID,'_',$idNews,'" target="_blank" title="Просмотр возможен только на странице!"><img src="',$attachments->video->image_small,'" height="100px" /></a></td></tr>'; // Если видео, то создаёт ссылку на запись (Где это видео в качестве прикрепления), и выводит маленькое изображение из видео высотой в 100 пикселей
       break;
      }
      default: break; // В случае других прикреплений пропускает их
     }
    }
    echo '</table></div>'; // Закрытие таблицы
   }
?>
<!-- Конец оформления каждой новости-->
<?php   
} // Эта скобка закрывает цикл с новостями
?>
<!-- Возможное продолжение документа -->


В этом уроке я не использовал никакого оформления, пытаясь донести лишь суть. Предложения по оформлению могу выслушать в ЛС или теме


Skype: igodplease
Вконтакте: vk.com/igodplease


Сообщение отредактировал iGodPlease - Понедельник, 13.04.2015, 11:50
  • Страница 1 из 1
  • 1
Поиск: