Всего 125 977 комментариев

iWatchYouFromAfar
14 февраля 2022, 20:50
0
Если рассуждать именно так, то никакого смысла конечно же нет! Так же как менять modx2 на какой-нибудь Laravel
Я не увидел таких новых возможностей в компонентах для MODx 3, ради которых хотелось бы бросаться в увлекательное путешествие под названием миграция на MODx 3.

Большинству? Т.е. есть меньшинство, кому нужно?)))
Меньшенство это те клиенты, которые еще используют MODx 2. Есть те, кто мне платят деньги за тем, чтобы я следил за актуальностью версий системы и ее компонентов. При обильном развитии 3 версии, 2 будет устаревать и это меньшинство клиентов попросит меня обновиться на 3 версию.

Речь не про «не нравится — не используй», речь про проделанную работу. Про мажорную версию, которая уже ломает совместимость, но при этом не отказались от ExtJS, не пофиксили тонну багов на 2 версии и просто утащили их на 3 и т.д.

Из комментария в комментарий пишу про это. А мне твердят про — «не нравится — не используй». Я никогда не говорил что мне не нравится MODx 2. Прекрасная CMS-ка. Мне не нравится таймлайн и подход к разработке 3 версии. Это позор, над которым смеются даже внутри самого сообщества.

P.S.
Сегодня 14 февраля, запасная дата редиза MODx 3. Учитывая что на западе утро/день, еще есть шанс что будет релиз. Хотя учитывая 3 страницы ишусов до релиза 3 версии, врятли это случится. Разве что как обычно забьют болт на ошибки и тупо релизнут ради релиза.
vectorserver
14 февраля 2022, 15:30
0
<?php
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->get();

$cartCount = 0;

foreach($cart as $key => $value){
    if($productId == $value['id']){
        $cartCount+=1;
    }
}

return $cartCount;
R2m0x94 (Vasily)
14 февраля 2022, 15:30
0
Проблема была успешно ликвидирована путем, что расширял класс с тем же названием, а надо было create another base class, от туда и не срасталось, а пишу, что всё делал по инструкции. Прошу прощения, виноват, делал на скорую руку.
Vladimir
14 февраля 2022, 14:28
0
простейший if а не работает, куда либо в другой язык засунь оно работает, а тут
R2m0x94 (Vasily)
14 февраля 2022, 14:04
0
Возможно я что-то упустил или в видео этого нет, но попробую обуздать в примерах понимании об addPackage, loadClass и getService и подключении сторонних таблиц, хотя так-то из консоли кастомный класс работает, добавляет объект и получает объект и коллекцию, что на обычной версии, что на про версии.
vectorserver
14 февраля 2022, 13:57
1
0
Я бы сделал прослушку на nodejs, и повесил бы к примеру на node.localhost:3000 и потом через плагин отправлял бы данные.

<?php

$eventName = $modx->event->name;
switch($eventName) {
    case 'OnWebLogin':
        
        // хук на вход http://node.localhost:3000/?userID=1&login=1
        break;
    case 'OnWebLogout':

        // хук на выход http://node.localhost:3000/?userID=1&logout=1
        break;
}

NodeJS
const http = require("http");
 
http.createServer(function(request, response){
     
    console.log("Url: " + request.url);
    console.log("Тип запроса: " + request.method);
    console.log("User-Agent: " + request.headers["user-agent"]);
    console.log("Все заголовки");
    console.log(request.headers);
     
    response.end();
}).listen('node.localhost',3000);
R2m0x94 (Vasily)
14 февраля 2022, 13:13
0
Попробовал на тестовом сделать, как у Вас на видео. Делал всё по видео инструкции, но валятся ошибки
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1321) Could not get table class for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1290) Could not get table name for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1321) Could not get table class for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1290) Could not get table name for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 762) PromoCupons::getSelectColumns() is not a valid static method.
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 762) PromoCupons::loadCollection() is not a valid static method.
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/model/modx/modprocessor.class.php : 525) PHP warning: Invalid argument supplied for foreach()
В консоле ругань или на manager/assets/ext3/ext-all.js или на assets/components/promocupons/connector.php при добавлении в бд из меню Promo Cupons.

Не знаю в чем дело, не получилось и да в бд добавлял запись проверить отображение в админке — тоже не вышло.
vectorserver
14 февраля 2022, 12:37
1
0
Я использовал в свое время, для синхронизации товаров, точно не помню, вот накидал на коленке.
Работает :)

Пример:
<?php
//Файл дампа времменый
$dump = __DIR__ . "/test_.sql";

//Экспорт из бд №1 таблицы modx_users, modx_user_group_roles
$export_db = exportDatabase('localhost', 'root', '', 'modx', array('modx_users', 'modx_user_group_roles'), $dump);

//Импорт в бд №2
$import_db = importDatabase('localhost', 'root', '', 'remote_modx', $dump);

function importDatabase($host, $user, $password, $database, $backupFilePath)
{

    $password = ($password) ? "-p$password" : "";
    $cmd = "mysql -u {$user} {$password} {$database} < $backupFilePath";
    return exec($cmd) === 0;
}

function exportDatabase($host, $user, $password, $database, $tables, $targetFilePath)
{

    $cmd = "mysqldump --host {$host} --user {$user} ";
    if ($password) {
        $cmd .= " --password {$password} ";
    }
    $cmd .= " {$database} ";

    if ($tables) {
        $cmd .= implode(" ", $tables);
    }

    $cmd .= " > {$targetFilePath}";

    return exec($cmd) === 0;
}
Алексей Смирнов
14 февраля 2022, 11:42
0
А прикрепление файла — можно только 1 шт? или можно несколько? Как вообще это дело настраивается? Если есть мурзилка с подробным описанием — покажите где ее найти.
разрешить permission — comment_file_upload
Это конечно чудесно. только куда прописывать? для контекста, ресурсов, медиаисточника?
Если нужно проспонсировать создание подробного описания — огласите прайс.
Дмитрий
14 февраля 2022, 00:32
0
А как вывести редактор кода?
Alexey
13 февраля 2022, 10:59
0
Не совсем понимаю, что ожидается там увидеть? По правильному, нужно вначале создать группу пользователей, наделить эту группу нужными правами, а потом уже добавить пользователя а эту группу. Не зря же на скрине есть кнопка «Добавить пользователя в группу».
Сергей Шлоков
13 февраля 2022, 09:48
+1
Если внимательно прочитать, то так и написано. Просто не совсем корректно.

getService() загружает файл класса (вызывая loadClass()), но также добавляет класс к объекту $modx, вы cможете вызывать его методы с помощью $modx->className->methodName().
Правильнее было бы сказать, что к объекту $modx добавляется не класс, а экземпляр указанного класса. Он же возвращается методом getService().

Соответственно получить доступ к этому экземпляру можно не через $modx->className, а через $modx->aliasName. Ниже в статье именно так и будет указано. Получается небольшое разночтение. Т.е. псевдоним вы можете указать любой (первый параметр), а вот класс (второй параметр) должен быть точным.
mekirile
12 февраля 2022, 13:42
0
baseSync перестал авторизовываться. Друзья, кто может помочь разобраться?
Максим
11 февраля 2022, 12:42
0
Шрифт «MODX» в статье — это шрифт из «Черепашек ниндзя»? )))
Pakos Fakos
11 февраля 2022, 11:17
0
спасибо за вашу помощь, это работает идеально
Максим
11 февраля 2022, 11:04
0
Мы делаем что-то хорошее и стараемся делать это что-то хорошо
В своём понимании этого «хорошего». Оно может отличаться у людей.

И для проведения работ по смене версии MODx с 2 на 3, должны быть очень значительные причины, в первую очередь для бизнеса.
Если рассуждать именно так, то никакого смысла конечно же нет! Так же как менять modx2 на какой-нибудь Laravel. Какой смысл? И так всё работает!
У нас некоторые клиенты до сих пор работают на Evo!
Главная причина «зачем» — это появление новых возможностей в «старых» компонентах. Чем больше потребности в таких новых возможностей, тем больше вероятность перехода на 3-ю версию.

потому что большинству моих клиентов...MODx 3 по сути и не нужен
Большинству? Т.е. есть меньшинство, кому нужно?)))
Для большинства моих клиентов не нужен React или Vue. И? )))) Не нужен — не используй))) В чем проблема то?)))
Для клиентов, как мне кажется, вообще пофиг MODX или WP, ему главное чтоб всё работало как надо!
MODX 3 — это по сути инструмент для разработчиков. Для кого-то одни плюсы, для кого-то другие.

не могу пока что найти серьезных причин в необходимости развития системы
Для тебя их нет, ок. Для других есть, потому что " врятли мы все такие садимся за комп и говорим, «а ну ка сделаю ка я сейчас дерьмо»"
Максим
11 февраля 2022, 09:04
0
Если вы просто хотите создать экземпляр некоторого класса… используйте loadClass()
Почему-то всегда думал, что loadClass просто подключает класс, а getService как раз создаёт экземпляр.