lets-code

lets-code

  • Главная
  • css/html/js
  • php
  • seo
  • Разное
  • Уроки
  • Полезное
  • Книги

Импорт фотографий instagram в инфоблок bitrix

yazu Уроки 4995
APIbitrixcmsinstagramphp

На днях возникла потребность выгрузить фотографии из аккаунта instagram на сайт клиента. Быстро написал небольшой скрипт. Может быть кому-то пригодится.

Данный скрипт позволит выгрузить фотографии из профиля instagram на ваш сайт, под управлением 1C Bitrix,  впрочем, вы можете адаптировать его под любую CMS. Для его работы вам необходимо заранее создать инфоблок. Далее кладём файл, который я прикреплю в конце статьи в корень вашего сайта. Открываем и вносим нужные корректировки, вам необходимо заменить лишь следующую информацию:

1
2
3
4
5
6
7
<?  //Настройки
    $AccessToken = '1198378782.6509ed0.kl62be8ar8d14a28341099487432iea3';
    $mailto= "myemail@mail.ru"; //Кому будут приходить сообщения в случае ошибки
    $sitename = "mysyte.ru"; //адрес сайта, на котором устанавилваете скрипт
    $subject = "Error parsing photo from instagram in website: ".$sitename;
    $iblockid = 7; //Идентификатор инфоблока, куда будут выгружаться фотографии
?>

Первое, что нужно знать это Access Token от вашего аккаунта в Instagram. Как его узнать, я рассказывал в этой статье.

В переменную $mailto заносим электронный адрес администратора сайта, ему будут приходить уведомления в случае ошибок при импорте.

Что писать, в $sitename и $iblockid я думаю и так понятно. В $subject заносим тему сообщения, которое получит администратор.

Далее следует код самого импорта.

Я использовал curl для работы с Instagram API, для начала следует сформировать запрос:

1
2
3
4
5
6
7
$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => 'https://api.instagram.com/v1/users/self/media/recent?access_token='.$AccessToken,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => 2
));

Далее, выполняем запрос и проверяем был ли он успешен. Если да, то разбираем пришедшие данные при помощи функции json_decode, так как ответ придёт в формате json. И наконец, если код ответа равен 200, то есть, мы получили нужные нам данные, то начинаем запись в инфоблок. Если же во время выполнения возникла ошибка, то выведем это на страницу.

1
2
3
4
5
6
7
if($json = curl_exec($ch)){
    curl_close($ch);
    $array = json_decode($json, true);
    if($array["meta"]["code"] == 200){
        //далее код записи в инфоблок
    }
else{ curl_close($ch); echo "curl_exec was error;"; }

Если всё в порядке, запрос выполнен успешно, код ответа 200, то пробуем разобрать наши данные и записать их в инфоблок. Подключим модуль iblock и создадим новый элемент инфоблока:

1
2
CModule::IncludeModule('iblock');
$element = new CIBlockElement();

Код далее, я приводить не буду, так как он слишком длинный, но разобраться в нём не составит труда. В нём мы выполняем следующие операции:

  1. В цикле перебираем все полученные из instagram изображения
  2. Проверяем существуют ли они уже в нашем инфоблоке
  3. Если существуют, то обновляем их
  4. Если отсутствуют, то добавляем
  5. Попутно выводим на страницу сообщения об ошибках и успешных добавлениях

Из кода можно увидеть, что если от API мы получим ошибку, то есть, в данном случае код ответа не будет равен 200, то сформируется email письмо, которое будет содержать: имя сайта, на котором произошла ошибка, тип ошибки, её код и описание, чего более чем достаточно для того, чтоб администратор обратил внимание на данное сообщение.

Не забывайте в начале и в конце файла подключить header и footer, и установить заголовок:

1
2
3
4
5
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Импорт");
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

В противном случае, подключить модуль iblock у вас не получится.

На этом, я думаю, статью можно закончить. Данный пример иллюстрирует как вы можете работать с instagram api на своём сайте. Вы можете посетить страницу api и посмотреть все возможные методы работы с ним.

comments powered by HyperComments
Скрипт импорта фотографий из instagram

Понравилась статья? Поделитесь ею:

Предыдущий пост: Самый простой способ получить Access Token в Instagram
Следующий пост: Корректировка шаблона постраничной навигации на bitrix
Поиск по сайту
Свежие записи
  • Адаптивная masonry сетка на JS и CSS Grid
  • Пример простого приложения на PhoneGap и Vue.js
  • 7 Material Design CSS фреймворков на 2017 год
  • dynamicsjs — красивые анимации, основанные на законах физики
  • Делаем адаптивные табы без javascript и грязных хаков
Метки
ajax API bitrix clip-path cms CORS css css filter css shape debug flexbox framework frontend html instagram javascript jquery laravel mysql o'reilly php seo ui ux wordpress Яндекс подборка сервис урок хостинг
lets-code.ru © 2016
developed by Yazu (Anna)
Предложить новость

Обратная связь