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

Іван Клімчук
11 ноября 2021, 16:38
0
Код писать не обязательно, есть кому, но есть же еще задачи, связанные с тестированием.
Вот тут подробный туториал modx.com/blog/help-test-prs-to-accelerate-the-revolution-3-release
Konstantin
11 ноября 2021, 16:29
0
Ну Иван, ты же помнишь меня, я был кем-то вроде SEO-шником в evrorazbor.ru. Вообще не знал что такое код. Сейчас опыта набрался, да, но не в PHP а в JavaScript.
С удовольствием принял бы участие и помог если бы знал PHP, а так могу только наблюдать со стороны.
Іван Клімчук
11 ноября 2021, 16:25
+1
Я вообще в должности Engineering Manager сейчас, а когда-то начинал, как простой зеленый и несмышленый пользователь первой беты MODX Revo. Но ничего, двигаем, пишем, тестируем. Опыта, говорите, набрались, так айда помочь малость ;)
Konstantin
11 ноября 2021, 16:22
0
MODX 3 так долго выходит, что я за это время научился программировать, сделал несколько простых проектов чтобы набраться опыта, и сейчас доделываю уже серьезный проект с бэкендом на NestJS + PostgresQL, фронтендом на React и еще приложением на React Native.
Я не в смысле похейтить, мне Modx нравится, и я в своем проекте использую очень много вещей подсмотренных тут. Так что давайте уже быстрее )))
Дмитрий
11 ноября 2021, 10:10
0
Да, спасибо, разобрался в итоге.
Обновление таблицы проходить вообще в одну строку
$results = $modx->query("UPDATE table_name WHERE id=1 ");
Однако парни правы. Прочитав официальную документацию, узнал, что хотя так и можно делать, но не желательно. Нужно использовать xPDO. Придется разбираться). Тем более, что беглом просмотре конструкций сделал вывод, что инструмент крайне удобный и функциональный. Спасибо всем.
Павел Бигель
10 ноября 2021, 19:44
+1
Верно
Тодор
10 ноября 2021, 18:57
0
Можно удалить все локализации и создать их заново в той последовательности которой тебе надо, либо изменить немножко код:
<?php
$pdo = $modx->getService('pdoTools');

$uri = $_SERVER['REQUEST_URI'];
if(substr($uri, 0, 1)) {
    $uri = mb_substr($uri, 1);
    $tmp = explode('/', $uri);
    if($path = $tmp[0]) {
        $tmp = $modx->getObject('localizatorLanguage', array('http_host:LIKE' => "%/{$path}/"));
        if($tmp) {
            $uri = str_replace("{$path}/", "", $uri);
        }
    }
}

$protocol = 'https://';
$languages = $modx->getIterator('localizatorLanguage', ['active' => 1]);
$output = [];
foreach($languages as $language) {
    if(mb_substr($language->http_host, -1) == '/') {
        $placeholders = array(
            'cultureKey' => $language->key,
            'active' => $language->key == $modx->localizator_key? 'active': '',
            'url' => $protocol. $language->http_host. $uri,
        );
    } else {
        $placeholders = array(
            'cultureKey' => $language->key,
            'active' => $language->key == $modx->localizator_key? 'active': '',
            'url' => $protocol. $language->http_host. '/'. $uri,
        );
    }
    
    $output[$language->key] = $pdo->getChunk($tpl, $placeholders);
}

uksort($output, function($a, $b) {
    $order = array(
        "ru", "uk", 'en', 'it', 'fr' //Твоя последовательность языков
    );
    return array_search($a, $s) > array_search($b, $order);
});
return implode('', $output);
Николай Савин
10 ноября 2021, 18:42
0
В modx2 я так понимаю такая конструкция не будет работать?
use MODX\Revolution\modContext;
$this->modx->getCollection(modContext::class
А вот такая будет, верно?
$this->modx->getCollection(modContext::class)
Михаил
10 ноября 2021, 18:22
0
мои компоненты использую pdoTools. Получается ждать пока фикса его потом уже перделывать?
Александр Мельник
10 ноября 2021, 18:16
0
Дмитрий, дело в том, что modx использует для работы с базой данных так называемую ORM (object relational mapper) которая называется xPDO.
В таком случае все таблицы в базе представлены как некие сущности-объекты, работать с которыми нужно не прямыми SQL запросами, а методами xPDO.
Почитайте информацию, ссылки на которую дал Александр.
Роман
10 ноября 2021, 16:42
0
=) Точно так же и вносите:
$stmt = $modx->prepare("UPDATE table_name SET `status`='1' WHERE id=:id");
$stmt->execute(["id" => $id]);
Futuris
10 ноября 2021, 16:08
0
Класс!
Иван Бочкарев
10 ноября 2021, 16:06
+1
Но это в планах к НГ.
Futuris
10 ноября 2021, 16:05
+1
Ок, понял. Спасибо!
Иван Бочкарев
10 ноября 2021, 16:01
+1
Пока нет адаптированного pdotools, не будет работать minishop2
Futuris
10 ноября 2021, 15:02
0
А Minishop2 кто-то пробовал на эту Бету ставить? У меня после установки не появляется Resourse Type категории товаров и продукта. Т.е. не получается созданные ресурсы сделать страницами MS2.

Aleksandr Huz
10 ноября 2021, 12:47
+2
Кстати да))
Вот так, все работает:
use MODX\Revolution\modContext;
$this->modx->getCollection(modContext::class);
Іван Клімчук
10 ноября 2021, 12:42
+2
Ну так надо приучить себя уже пользоваться use и импортировать классы. :)
Aleksandr Huz
10 ноября 2021, 12:40
0
У меня ошибка с таким вариантом.
modContext is deprecated since version 3.0. Replace references to class modContext with MODX\Revolution\modContext to take advantage of PSR-4 autoloading.
А вот с таким норм:
$this->modx->getCollection('MODX\Revolution\modContext')
Иван Бочкарев
10 ноября 2021, 12:37
0
Отличная мысль — вот ссылка modx.pro/development/19443