Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 101 комментарий

Александр Туниеков
Александр Туниеков
не обессудьте но с такой документацией — это очень наврятли.
Тут преодолеть порог входа. Мне как создателю почти все понятно и очевидно, а другим думаю чтоб въехать напрячься, потратить время, надо. Это барьер который мешает другим и освоить и развивать другим. И мне не особо понятно как писать документацию, чтоб другим легче было.
то тут все что угодно
Да все что угодно и на более современном фреймворке (vue) и быстрее, когда въедешь, чем и на extJs и на других апи. За счет того, что не надо писать кучу контроллеров.
Только не понятно как документацию свести в удобную систему. Как всегда сперва hello word, а затем сразу строим самолет :-).
Stepan
Stepan
Буду рад если gtsAPI вас заинтересует.
не обессудьте но с такой документацией — это очень наврятли.

я понимаю вы старались, наверное из всего только дерево интересно, а остальное в итоге тот-же extjs получится только без доков

Самое главное — это не создать, а поддерживать и развивать и по возможности не только вашим гением(никакого сарказма)

Вообще я так понял это не столько админка как интерфейс для манагера… то тут все что угодно, иногда и такое нужно
Наталья
Наталья
Да, я представляю… Мне предстоит потратить много времени и сил на изучение. Это при условии, что до этого я только пользовалась дополнениями, а с php никогда дел не имела… Но у меня не сильно много выбора) Поэтому буду благодарна, если поделитесь информацией о том, что стоит изучить прежде, чем переходить к написанию дополнения, и, возможно, какими-то ресурсами… Буду правда очень признательна, очень хочется попробовать!
Артур Шевченко
Артур Шевченко
Логер напиши, чтобы можно было использовать его в своём коде. Например, сделал я магазин и хочу логировать весь процесс оформления заказа, а в случае возникновения проблем получать уведомление на почту или в телеграм. При этом если проблем не возникло я всё равно должен иметь возможность посмотреть какие данные на каком этапе поступили, какие вернулись и т.д. Соответственно нужно чтобы не забивалось место на хостинге. Ну и использование было максимально простое типа получил сервис, вызвал метод с нужными параметрами и всё.
Денис Усманов
Денис Усманов
Ох Наталья, не просто вам придётся… Разработать свой компонент дело очень не простое! Для этого нужно многое понимать заранее, например структуру данных как минимум, а как максимум старый ExtJS 3.4 для написания интерфейса…

Но, в любом случае, желаю удачи в этом деле!

По идеям, я бы предложил разработать универсальный компонент импорта товаров из файлов формата .xml
Для начала, хотя бы импорт выгрузки Яндекс Маркета.
Олег
Олег
так, а в чем проблема во втором абзаце, не очень понял?
$modx->addEventListenerClosure(
    'OnWebPagePrerender',
    function (\MODX\Revolution\modX $modx) {
        (new \Namespace\YourClass($modx))->doSomething();
        // $class = $modx->services->get('yourservice'); $class->doSomething();
        // \Namespace\YourClass::doSomething();
        // my_global_function($modx);
        return null;
    },
    priority: 10,
    name: 'appendTestComment',
    replace: false
);
Олег
Олег
с обычными плагинами — я пока это не учитывал, но вопрос логичный. НО это не учитывается и в оригинальном методе addEventListener, так что текущая логика по сути не меняется. Оригинал:
public function addEventListener($event, $pluginId, $propertySetName = '') {
        $added = false;
        $pluginId = intval($pluginId);
        if ($event && $pluginId) {
            if (!isset($this->eventMap[$event]) || empty ($this->eventMap[$event])) {
                $this->eventMap[$event]= [];
            }
            $this->eventMap[$event][$pluginId]= $pluginId . (!empty($propertySetName) ? ':' . $propertySetName : '');
            $added = true;
        }
        return $added;
    }
Проблема в том что карта у них строится без какой либо доп информации о плагинах, просто событие->список ID плагинов, уже отсортированных в sql запросе. То есть пересортировать ее без дополнительного запроса к базе не получится (ну или надо сохранять расширенную карту из базы при инициализации и потом при добавлении нового плагина пересобирать итоговую карту). Сейчас реализовано так, что сначала выполняются плагины из бд — и подвязанные к событию в админке, и подвязанные к событию в коде, потом все closure плагины. Вообще это больше не для того чтобы кто-то в админке вручную тыкал, а чтобы например при разработке пакета вы спокойно свой функционал раскидали по нужным событиям и не парились с созданием плагинов и привязкой/отвязкой событий при обновлении например.