Автоматическая публикация новостей из modx в vk.com

Чтобы настроить автоматическую публикацию материалов из MODX в VK.com, нужно использовать API ВКонтакте и создать скрипт, который будет отправлять запросы к VK API с данными о постах. Вот пошаговая инструкция с примером кода:

Шаг 1. Получение токена доступа VK API

  1. Создайте приложение ВКонтакте:

    • Зайдите в VK Developers и создайте новое приложение.
    • Выберите тип "Standalone Application" или "Website".
    • После создания получите токен доступа (access token), используя Authorization Code Flow.
  2. Настройте права доступа:

    • Убедитесь, что в токене включены нужные права: wall для публикации на стене и offline для сохранения токена на длительное время.

Шаг 2. Настройка и создание PHP-скрипта

Вам нужно создать PHP-скрипт, который будет использовать VK API для публикации постов. Вот пример:

Скрипт:

// Путь к папке telegram_bot 

 

$basePath = MODX_BASE_PATH . 'telegram_bot/'; $newsIdFile = $basePath . 'news_id_vk.txt'; $logFile = $basePath . 'log_vk.txt';

// Функция для логирования ошибок

function logError($message) { global $logFile; file_put_contents($logFile, date('Y-m-d…

Чтобы настроить автоматическую публикацию материалов из MODX в VK.com, нужно использовать API ВКонтакте и создать скрипт, который будет отправлять запросы к VK API с данными о постах. Вот пошаговая инструкция с примером кода:

Шаг 1. Получение токена доступа VK API

  1. Создайте приложение ВКонтакте:

    • Зайдите в VK Developers и создайте новое приложение.
    • Выберите тип "Standalone Application" или "Website".
    • После создания получите токен доступа (access token), используя Authorization Code Flow.
  2. Настройте права доступа:

    • Убедитесь, что в токене включены нужные права: wall для публикации на стене и offline для сохранения токена на длительное время.

Шаг 2. Настройка и создание PHP-скрипта

Вам нужно создать PHP-скрипт, который будет использовать VK API для публикации постов. Вот пример:

Скрипт:

// Путь к папке telegram_bot 

 

$basePath = MODX_BASE_PATH . 'telegram_bot/'; $newsIdFile = $basePath . 'news_id_vk.txt'; $logFile = $basePath . 'log_vk.txt';

// Функция для логирования ошибок

function logError($message) { global $logFile; file_put_contents($logFile, date('Y-m-d H:i:s') . " - $message\n", FILE_APPEND); }

// Получаем ресурс с ID 158, в котором хранится API ключ VK

$apiKeyResource = $modx->getObject('modResource', 158);

if (!$apiKeyResource) { logError("Ошибка: Не удалось получить ресурс с ID 158."); exit; }

$vkApiKey = $apiKeyResource->getTVValue('VkAPI');

if (!$vkApiKey) { logError("Ошибка: API ключ VK не найден в TV поле 'VkAPI'."); exit; }

// Получаем список ID уже опубликованных новостей

$publishedIds = file_exists($newsIdFile) ? file($newsIdFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) : []; echo "ID уже опубликованных новостей: " . implode(', ', $publishedIds) . "\n";

// Шаг 1: Получаем ID родителей (родители — каталоги с новостями)

$parentQuery = $modx->newQuery('modResource');

$parentQuery->where([ 'parent' => 60, 'isfolder' => 1, ]);

$parentQuery->select('id');

$parentCollection = $modx->getCollection('modResource', $parentQuery); $parentIds = [];

foreach ($parentCollection as $parentResource)

{ $parentIds[] = $parentResource->get('id'); }

echo "Найденные родительские ID: " . implode(', ', $parentIds) . "\n"; if (empty($parentIds))

{ logError("Ошибка: Не найдены родители с parent = 60 и isfolder = 1."); exit; }

// Шаг 2: Получаем количество доступных новостей

$query = $modx->newQuery('modResource');

$query->where([ 'published' => 1, 'deleted' => 0, 'parent:IN' => $parentIds, 'template:IN' => [28, 33], 'id:NOT IN' => $publishedIds, ]); $query->select('COUNT(id) as count');

// Вывод SQL-запроса для отладки

$sql = $query->toSQL(); echo "SQL запрос: {$sql}\n"; $totalNews = $modx->getValue($query->prepare());

echo "Количество доступных новостей для публикации: {$totalNews}\n"; if ($totalNews == 0) { logError("Ошибка: Нет новостей для публикации."); exit; }

// Шаг 3: Получаем случайную новость для публикации

$query->select('id, longtitle, introtext');

$query->sortby('RAND()');

$query->limit(1);

$news = $modx->getObject('modResource', $query);

if (!$news) { logError("Ошибка: Нет новостей для публикации."); exit; } $newsId = $news->get('id');

$newsTitle = $news->get('longtitle'); $newsIntro = $news->get('introtext'); $newsUrl = $modx->makeUrl($newsId, '', '', 'full');

// Шаг 4: Отправляем пост в VK

$ownerId = '-YOUR_GROUP_ID';

// ID группы VK с минусом (например, -12345678)

$message = "$newsTitle\n\n$newsIntro\nПодробнее: $newsUrl";

$apiUrl = 'https://api.vk.com/method/wall.post';

$params = [ 'owner_id' => $ownerId, 'message' => $message, 'access_token' => $vkApiKey, 'v' => '5.131', ];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $apiUrl);

curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

// Обрабатываем ответ VK API

$responseData = json_decode($response, true);

if (isset($responseData['error']))

{ logError("Ошибка при публикации в VK: " . $responseData['error']['error_msg']); exit; }

else { echo "Публикация успешно выполнена, ID поста: " . $responseData['response']['post_id'] . "\n";

// Шаг 5: Сохраняем ID опубликованной новости

file_put_contents($newsIdFile, $newsId . "\n", FILE_APPEND); } ?>

Описание шагов:

  1. Получение токена VK из ресурса с ID 158 — API ключ извлекается из TV-поля VkAPI ресурса с ID 158.
  2. Загрузка опубликованных новостей — используется файл news_id_vk.txt, где хранятся ID уже опубликованных новостей.
  3. Запрос списка новостей — скрипт выбирает новости из категорий (родители с ID 60), которые еще не были опубликованы, основываясь на шаблонах 28 и 33.
  4. Выбор случайной новости — скрипт выбирает одну случайную новость для публикации.
  5. Публикация в VK — с помощью API ВКонтакте новость отправляется на стену группы.
  6. Логирование ошибок — все ошибки записываются в файл log_vk.txt.
  7. Сохранение ID опубликованной новости — ID новости добавляется в файл news_id_vk.txt, чтобы избежать повторной публикации.

Примечания:

  • Файлы news_id_vk.txt и log_vk.txt должны находиться в директории telegram_bot/ и быть доступны для записи.
  • Если потребуется прикреплять изображения или другие медиафайлы, можно дополнить скрипт логикой для загрузки файлов через API ВКонтакте
Это решение поможет автоматизировать процесс публикации из MODX в VK.com
Вы должны быть авторизованы, чтобы голосовать.

Лайков: 0 Дизлайков: 0

Посты в категории

Концепция продвижения и развития бутик-отеля Ценовой сегмент: 10 000–15 000 ₽/ночь | Целевой ADR: 10 000–12…
ID категорий в Яндекс Маркет Яндекс Маркет — это популярная платформа для размещения товаров…

Блог

Вода — это основа жизни на Земле, и выбор правильной воды для…
Покупка дома — одно из самых значительных и ответственных решений…
В первом полугодии этого года маркетплейсы стали ведущим каналом…

Контент-мейкеры: Кто они и какую роль играют в современном медиапространстве

Контент-мейкеры — это люди, которые создают и публикуют уникальный контент в интернете, будь то видео, фотографии, статьи, аудиозаписи или графические материалы. В эпоху цифровых технологий их роль в формировании информационного пространства стала ключевой.…
Подробнее

Список социальных сетей и сайтов в России

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

Кто такой SMM специалист и почему он важен для компании?

В эпоху цифровых технологий социальные сети стали неотъемлемой частью маркетинговой стратегии компаний. SMM (Social Media Marketing) специалист — это профессионал, который занимается управлением и продвижением бренда через социальные сети, помогая компаниям…
Подробнее

Как выбрать и проверить SMM специалиста: навыки, поиск, собеседование и отличия

В условиях активного развития социальных сетей роль SMM специалиста (специалиста по маркетингу в соцсетях) становится ключевой для бизнеса. Однако найти квалифицированного SMM специалиста может быть непросто. Ниже мы рассмотрим, какие навыки необходимы…
Подробнее

Как анализировать эффективность SMM кампаний

Анализ эффективности SMM (Social Media Marketing) кампаний включает в себя оценку ряда ключевых показателей (KPI) и метрик, которые помогают понять, насколько успешно ваша стратегия в социальных сетях достигает поставленных целей. Вот основные шаги, которые…
Подробнее

Как анализировать SMM кампании в VK.com, Яндекс.Директе и Telegram с использованием Яндекс.Метрики

Анализ эффективности SMM кампаний в VK.com, Яндекс.Директе и Telegram с использованием возможностей Яндекс.Метрики позволяет получить более полное представление о том, как пользователи взаимодействуют с вашим контентом и рекламой, а также какие результаты…
Подробнее

SMM стратегия для стоматологической клиники в Москве с использованием VK.com, Яндекс.Директ, Telegram, Дзен, RuTube, VK Видео и «Видео ОК»

Целью SMM стратегии для стоматологической клиники будет привлечение новых пациентов, повышение доверия и лояльности к клинике, а также создание узнаваемого бренда. Основное внимание будет уделено качественному контенту, образовательным материалам и продвижению…
Подробнее

Как создать эффективную SMM стратегию: ключевые шаги и примеры компаний-лидеров

Создание успешной SMM стратегии требует тщательного планирования и учета специфики бизнеса, целевой аудитории, каналов продвижения и целей компании. Ниже приведены ключевые этапы разработки SMM стратегии, пример реальной стратегии, а также кейсы успешных…
Подробнее

SMM стратегия для стоматологической клиники в Москве с использованием VK.com, Яндекс.Директ, Telegram, Дзен, RuTube, VK Видео и «Видео ОК»

Целью SMM стратегии для стоматологической клиники будет привлечение новых пациентов, повышение доверия и лояльности к клинике, а также создание узнаваемого бренда. Основное внимание будет уделено качественному контенту, образовательным материалам и продвижению…
Подробнее