MODx Revolution. Автопостинг в группу ВК статей с сайта.

Опубликовано: 02.11.2017

видео MODx Revolution. Автопостинг в группу ВК статей с сайта.

Как сделать сайт на MODX за час?

Что будем делать: настроим MODx на отправку сообщений в группу в ВК.

Наметим план и сразу к делу:



Создаем приложение Получаем токен Создаем плагин

1.Создаем приложение

Делаем под тем аккаунтом, к которому будет привязываться постинг.

Идем сюда vk.com/dev , жмём создать приложение .

Название - какое угодно, оно нигде использоваться нами не будет.


MODX Implementation Part 1 - Installation, basic tour, and simple content

Тип - выбираем Standalone-приложение

Жмем "Подключить приложение" и вводим смс-код активации. Идем в Настройки и копируем ID приложения.

2. Получаем access_token

access_token - значение которое нужно получить, чтобы при работе с API ему было понятно кто с ним работает. Тут внимание, его нигде не сохраянем в сети, только на своем сайте, а то есть риск остаться без аккаунта.

Открываем новую вкладку в браузере, вставляем в адресную строку:

https://oauth.vk.com/authorize?client_id=<ИД вашего приложения>&scope=friends,wall,groups,offline&redirect_uri=https://oauth.vk.com/blank.html&response_type=token

client_id - ID приложения, которое было создано на предыдущем шаге.

scope - список прав, которые даются приложению от нашего пользователя. Полный список vk.com/dev/permissions

Разрешаем приложению доступ, далее смотрим в адресную строку браузера, там будет токен

https://oauth.vk.com/blank.html#access_token=< ВАШ ТОКЕН >&expires_in=0&user_id=< USER ID >

3. Создаем новый плагин в MODx

Перед тем как создавать плагин, зайдем возьмем класс VK , написанный vladkens.

Создаем новый плагин, обзываем его как хотите. Привязываем на событие OnDocPublished . Смотрим на код ниже, редактируем его под себя.

if ($modx->event->name == 'OnDocPublished') { $api_id = ''; // Вставляем наш ID приложения $secret_key = ''; // Секретный код приложения из настроек $access_token = ''; // Токен который получили на втором шаге // Подключаем API для работы define('MODX_API_MODE', true); require_once($_SERVER['DOCUMENT_ROOT'].'/index.php'); $modx=new modX(); $modx->initialize('web');     ini_set('default_charset', 'utf-8');     error_reporting(E_ALL);          // Подключаем компонент для работы     require_once $_SERVER['DOCUMENT_ROOT'].'/путь_до_файла/VK.php';     require_once $_SERVER['DOCUMENT_ROOT'].'/путь_до_файла/VKException.php'; // Делаем конфиг     $vk_config = array(         'app_id' => $api_id,         'api_secret' => $secret_key,         'access_token'     => $access_token,     );          // ID группы куда нужно постить     // Обязательно перед ID ставится "-" (минус) !!!!     // Пример ниже     $user_id = "-12345678"; // Инициализируем класс $vk = new VK\VK($vk_config['app_id'], $vk_config['api_secret'], $vk_config['access_token']); // Берем заголовок и аннотацию из документа $pagetitle = $resource->get('pagetitle'); $introtext = $resource->get('introtext'); // Крафтим месседж $message = $pagetitle."\n\n".$introtext; // Крафтим url до документа $docId = intval($resource->get('id')); $url = $modx->makeUrl($docId,'web','','full'); // Формируем минимально необходимый массив для месседжа $params = array( "owner_id" => $user_id, "message" => $message, "attachments" => $url ); // Отправляем на сайт $post = $vk->api("wall.post", $params); }

На этом все, обновляемся и пляшем :) Инфа была собрана по крупицам и оттестирована на этом сайте, собственно этот код так и работает, за исключением проверки на тип создаваемого документа, ибо у нас это может быть и сообщение, заметка, статья, работа в портфолио и т.д. Как сделать проверку, сами догадаетесь, тут ничего сложного нету. Подсказка: по ID контейнерам-родителей элемента.