Евгений Корчмарек
С нами с 17 июля 2018; Место в рейтинге пользователей: #20482 часа назад
Это ты конечно прикольно придумал))) Я вот себе бота в телеге замутил, который поддерживает 3 CLI интерфейса opencode, claude, codex. Это я к тому, чт...
[aiAssist] Я же просто попросил его создать магазин, а он СДЕЛАЛ ЭТО! 14
3 часа назад
Привет! Это уже в текущей версии добавлено. Если с коробки нет — нужно указать в системных настройках gallery (как буду у пк точно напишу, что указыва...
mxEditorJs - блочный редактор Editor.js для MODX 3 4
6 часов назад
При включении компонента, все теги, снипеты и вызовы на fenom — на фронте выводятся текстом без обработки
[xDevPicker] Редактируем чанки с фронтенда в один клик 5
Вчера в 12:23
Если кто-то использует счетчики, например, Яндекса, то это должно быть отражено в политике конфиденциальности и для них тоже нужно брать согласие поль...
Плашка о использовании cookie файлов на сайте 11
Вчера в 08:18
Под miniShop2 обычно так делаю:
<script>
$(document).ready(function () {
miniShop2.Callbacks.add('Order.submit.response.succes...
Настройка JS-события для Метрики через метод reachGoal 1
15 мая 2026, 15:10
Посмотрел внимательнее: дублирование не по вариантам в источнике файлов, а по количеству фото у товара.
Новости MiniShop3, mSearch, mFilter 23
15 мая 2026, 14:23
Не могу отредактировать, сам себе отвечу.
Справился с ситуацией, поменял тип вывода с JSON на String и дальше уже через Рендер вывел. Все ок.
[msStatOrders] - Статистика заказов Minishop2 / Новая версия 42
14 мая 2026, 11:38
Желательно ставить disabled для кнопки «Сбросить», если не выбрано ни одного фильтра: disk.yandex.ru/i/PZliDL8USeHvAA
Тогда можно в зависимости от ...
mFilter 1.4.0 - перестроенная система кеширования 1
14 мая 2026, 09:48
С бэкапами все плохо.
На S3 на пол дороги зависло создание бэкапа. Как остановить?
В общем сырая панелька, багов много) Функционала много, но толк...
Мне было грустно без Modhost и я сделал Meowbox 61
13 мая 2026, 23:57
Да, как раз ChatGPT и помог, спасибо
Не открываются категории miniShop 2 в админке [РЕШЕНО] 3
Could not find action file at: controllers/default/index.php
И пустое приложение,
Fatal error: Call to a member function get() on a non-object
Для этого создал отдельный TV, в который записывается время последнего поста данного ресурса.
Для автоматического постинга проверяется не превышено ли максимальное количество постов в сутки. И берется самый старый ресурс из дочерних опубликованных.
Осталось разобраться — как запустить его из cron — мб кто-то подскажет?
При запуске вручную — код работает:
Можно тогда еще ссылку на публикацию в пост добавить,
Я сделал через ссылку в чанке:
Специально не брал стандартный Тег «a», так как ссылка должна быть одна — иначе ошибка.
Вконтакте пока из этой ссылки картинки не подгружают из og:image, но я в поддержку написал, мб поправят.
msocial.class.php
И 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;
}
}
?>
CMD — это как кнопка Windows — тот же код.
Спасибо.