[mSocial]mSocialVK - постинг в Вконтакте.
Представляю Вашему вниманию результат своего двухнедельного марафона в разработке MODX расширений, а именно постинг из замечательной и горячо любимом CMF MODX REVO во всемирно известную социальную сеть Вконтакте.
Приобрести mSocialVK.
Докуменация mSocialVK.
Возможности
ps: на очереди facebook*.
Приобрести mSocialVK.
Докуменация mSocialVK.
Возможности
- Постинг в аккаунт или группу.
- Постинг вложенных изображений, с размещением их в альбом аккаунта.
- Постинг от имени группы.
- Весь функционал mSocial будет доступен и здесь.
- Устанавливаем mSocial.
- Устанавливаем mSocialVK.
- Создаем приложение и получаем бессрочный токен.
- Добавляем нужные ключи в Системные опции MODX REVO.
- Настраиваем шаблон в чанке для постинга и активируем TV в тех шаблонов которые должны участвовать в постинге.
- Отлично, теперь ресурсы автоматически размещаются в Вк при сохранении.
ps: на очереди facebook*.
*Meta, которой принадлежат facebook и instagram признана экстремистской в России
Комментарии: 69
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
P.S:
Хотел сказать CMS?
А то: он — мой Модикс.
Безусловно отличное решение для тех кто работает с соц медиа
1) Ссылка на документацию в этом посте битая
2) Будет ли работать данный модуль при добавлении тикетов пользователями сайта через TicketForm?
2. В принципе да, вам просто нужно немного изменить событие плагина и все (в теории).
У меня выбрасывает после обновления
Если не поможет то в файл core/components/msocial/custom/network/vk/vk.class.php в 56 строку добавить
Я утерял исходники пакета, и пока нет времени его переписать.
Антон ЛевицСсылка снизу идет под текстом.
И фото не добавляются.
Пробовала по-разному.
Приобрел пакет недавно, сперва не постилось вообще, затем прописал $param['v'] = '4.0'; в vk.class.php и после этого посты начали добавляться, но без картинок.
Необходимо в несколько мест добавить версию v=5.0 и album_id={id Альбома}
<?php
/**
* Класс vk для постинга в соответствующую соцсеть.
* @copyright Copyright © 2016 devPastet (Pavel Karelin) devpastet@yandex.ru
*/
class vk extends socials
{
/**
* @var array
*/
public $vkKeys;
public function __construct(modX & $modx, $setting)
{
$this->modx = $modx;
$this->setting = $setting;
$this->vkKeys['owner_id'] = trim($this->modx->getOption('msocial_vk_id'));
$this->vkKeys['access_token'] = trim($this->modx->getOption('msocial_vk_at'));
$this->vkKeys['from_group'] = trim($this->modx->getOption('msocial_im_fg'));
$this->vkKeys['message'] = $this->setting['message'];
$this->vkKeys['v'] = '5.0';
}
/**
* Метод для постинга
*/
public function posting()
{
$param = $this->vkKeys;
if(isset($this->setting['attach']) AND $this->modx->getOption('msocial_im_ps') == 1)
{
$count = 1;
foreach($this->setting['attach'] as $file)
{
if($count <= 4)
{
if (version_compare(phpversion(), '5.5.0', '<')) {
$attrImg['file'.$count] = '@'.MODX_BASE_PATH.$file;
}else{
$attrImg['file'.$count] = new CURLFile(MODX_BASE_PATH.$file);
}
}
$count++;
}
$imgList = $this->uploadImg($attrImg);
if($imgList){
foreach($this->uploadImg($attrImg) as $img){
$attachments .= 'photo'.$img->owner_id.'_'.$img->id.',';
}
$param['attachments'] = substr($attachments, 0, -1);
}
}
$return = $this->request('https://api.vk.com/method/wall.post',$param);
/* Вызываем обработчик ошибок */
if(isset($return->error)){
$errorMsg = $return->error->error_code.' ('.$return->error->error_msg.')';
$this->modx->log(modX::LOG_LEVEL_ERROR, $this->modx->lexicon('msocial_error_posting').' Vk '.$errorMsg);
}
}
/**
* Загрузка изображений
* $file array массив файлов
*/
public function uploadImg($file)
{
$group_id = $this->vkKeys['owner_id'];
$version = $this->vkKeys['v'];
$album_id = '{id Альбома}';
$access_token = $this->vkKeys['access_token'];
if($group_id[0] == '-'){
$group_id = substr($group_id, 1);
}
$server = $this->request('https://api.vk.com/method/photos.getWallUploadServer', array(
'group_id' => $group_id,
'access_token' => $this->vkKeys['access_token'],
'v' => $version,
'album_id' => $album_id
));
$vkPhoto = $this->request($server->response->upload_url, $file);
$result = $this->request('https://api.vk.com/method/photos.saveWallPhoto', array(
'group_id' => $group_id,
'photo' => $vkPhoto->photo,
'server' => $vkPhoto->server,
'hash' => $vkPhoto->hash,
'access_token' => $this->vkKeys['access_token'],
'v' => $version
));
return $result->response;
}
}
?>
Можно тогда еще ссылку на публикацию в пост добавить,
Я сделал через ссылку в чанке:
Специально не брал стандартный Тег «a», так как ссылка должна быть одна — иначе ошибка.
Вконтакте пока из этой ссылки картинки не подгружают из og:image, но я в поддержку написал, мб поправят.
msocial.class.php
И vk.class.php
Для этого создал отдельный TV, в который записывается время последнего поста данного ресурса.
Для автоматического постинга проверяется не превышено ли максимальное количество постов в сутки. И берется самый старый ресурс из дочерних опубликованных.
Осталось разобраться — как запустить его из cron — мб кто-то подскажет?
При запуске вручную — код работает:
Fatal error: Call to a member function get() on a non-object
перепащиватькопировать.Еще бы всасывать имеющиеся посты в CMS и потом крутить их по кругу с заданным интервалом, например, что б не чаще чем раз в год повторение случалось. А некоторым постам выставить дату ежегодного постинга, или там каждый год, последнее воскресенье июля. Уиииии!!! Такой фрегатик будет!))))
Купил компонент, настроил, все учел, что выше описано, версию добавил, 5.92, id альбома прописал.
Пост формируется, но нет картинок.
Что делать?
Я прочитал, все сделал, прописал и album_id и version. Толку нет. Не работает.
Точнее работает, пост появляется, НО картинок нет.
Может быть я как-то не так картинку подставляю. Но пробовал и как написано в инструкции и полный путь указывать, не хочет работать.
Пришлите код Ваш, хотя бы чтобы было понятно большее, чем «почитать комментарии».
Как написано тут — делал:
modx.pro/solutions/7882#comment-100380
Далее. Вы написали что сделали все как указано выше и у вас не работает, я же написал, что АНАЛОГИЧНОЕ решение выше, у меня работает, проверил вот буквально 2 минуты назад. Вы бы спасибо сказали, вместо того что писать про то, как вы ждали умного ответа. Еще раз — по коду выше, у меня все работает, странно да? Видимо я код копирую как-то иначе, нежели вы.
Откуда я знаю что и как вы подставляете? У меня картинки собираются из тела письма, вот мой чанк.
Мой код абсолютно идентичен коду выше.
«Почитать комментарии, там дан ответ и готовое решение.» Предлагать перечитать все комментарии заново — это дельный совет, спасибо!
Код чанка, что Вы прислали — нечем не поможет.
Я думаю, что либо код vk.class.php пришлете, либо код content пришлете. Ибо я понимаю, что все работает, кроме картинок, но чтобы работали картинки — я для этого все перечисленное выше сделал.
Что еще мне надо сделать — не понимаю. Пробовал уже прописывать — не работает…
Еще раз и последний.
vk.class.php — аналогичен коду выше, только ID альбома другой.
Код content — Что? У меня он меняется из статьи к статье, какой код контента, вы о чем?
Вы общаетесь с претензией на то, что я вам должен. Я же хотел лишь помочь, сказал что код выше — рабочий.
Делайте в разделе работа предложение решить вашу проблему, я с вами свяжусь и на платной основе помогу. Ну или можете написать мне на почту через личные сообщения на этом сайте.
Мой чанк tpl.msocial.vk:
Мой код vk.class.php:
«Если у меня все работает, а у вас нет, значит это магия и мой сайт подпирается рогом волшебного единорога, да?»
Делать из меня дурака — тоже не нужно. Предлагать за деньги разобраться — не интересно. За деньги, за сколько? Компонент стоил мне 190 рублей, за 50 рублей возьметесь разбираться? А если не разберетесь — ничего не получите, готовы рискнуть?
Уверен, что скорее всего проблема не сложная, просто я ее упускаю из вида. Если кто-то может помочь советом, буду благодарен, кроме советов почитать все еще раз и обратиться за платной помощью.
Раз купили компонент — у вас есть годовая техподдержка от автора.
Просто мне очень не нравятся люди, которые начинают умничать, что «я сделал точно так же и у меня все работает» и какой вывод должны остальные сделать? Что Вы крутой мега спец? Что все остальные — никто и можно на них заработать? Нет, уважаемый, вы не угадали ни одной буквы!
По поводу «будто я вам должен.». Вы начали отвечать мне, но Ваш ответ был -ни о чем. Либо отвечайте, либо вообще не пишите. Если у меня были соображения по поводу моих ошибок, я их указал. А писать, то о что уже было сделано мною и я об этом указал в сообщении — это просто пустозвонство. Вы — ничем не помогли, а еще спасибо просите.
В последнее время люди конечно начали совсем наглеть. Вы чистый тому пример. Вы, конечно же, ничего не должны. Но позиция Ваша. Я сделал, я знаю, я платно сделаю — это плохая позиция. Не по душе она мне. Я сам могу помочь, если что-то знаю и все еще, наивно, конечно, жду такого же от других. Ну а в ответ — всегда, почти, только наглость.
Мой чанк tpl.msocial.vk:
Мой код vk.class.php:
Как вызвать картинку? Я делал так у меня картинки из ms2Gallery.
а шаблон — tpl.ms2GalleryObject