Готовые решения

Дружим TicketForm и Ckeditor

Возникла потребность на фронте добавлять тикеты с помощью визуального редактора.

Подключение самого редактора не выходит за рамки документации Ckeditor, с помощью настройки enable_editor = 0 отключаем стандартный Ticket-овский markItUp и цепляем на нужный id-шник CKEDITOR посредством JS-кода:

CKEDITOR.replace( 'ckeditor' );
tolanych
25 марта 2020, 14:31
modx.pro
3
215
+5

Экспорт TV полей из Localizator через msImportExport

Всем привет!

Встала задача экспорта товаров из локализаций товаров Localzatora через msImportExport.
На сайте характеристики товаров реализованы через TV поля (не нужно кидаться помидорами =), в тот момент еще не было поддержки опций Minishop2 в Localzator).

Для решения данного кейса обратился в ТП к создателю пакета msImportExport @Prihod — обсудили детали, цену и вот, что получилось.

Иван Бочкарев
16 марта 2020, 22:22
modx.pro
3
145
+12

Заготовка MODX RESTFull API для работы с магазином на основе miniShop2

Подготовил и выложил на Github полностью готовый компонент, который реализует RESTFull API на базе встроенного в MODX modRestService.

Вполне можно брать его как заготовку, допиливать свои нужды и использовать.
Ниже расскажу как с ним работать и на что обратить внимание.

Николай Савин
08 марта 2020, 15:07
modx.pro
7
336
+22

Подзапросы для pdoTools

Добрый день всем! Мне понадобилось сделать сложные запросы в mysql и, так как уже привык к pdoTools, решил доработать его, чтоб с ним делать подзапросы. Извиняюсь, загружен работой и не хватило времени оттестировать все и расписать.
Вкратце под катом.
Александр
03 марта 2020, 20:02
modx.pro
2
462
-1

elementSync - Еще один способ разработки MODX-приложений в IDE

Привет.
Этот элемент можно считать вторым кусочком компонента который я описал на статью одну пониже, а можно рассчитывать как отдельную тузлу. Предыстория такова: Я не использую файловые сущности pdoTools, идеологически считаю что транспортные пакеты это отличный способ для разработки компонентов, но не сайтов. Так же Gitify меня не вдохновил. Думаю имею на это право :)
Более того — частенько приходится не создавать что-то новое на MODX, а редактировать существующее. И все это нужно а) каким-то образом версионировать б) разрабатывать используя удобные инструменты в IDE. Много времени назад я использовал для этого gitmodx и он меня в целом устраивал. Но есть нюансы, которые мне категорически не нравились.
Павел Бигель
25 февраля 2020, 19:55
modx.pro
5
487
+12

contentSync - синхронизация контента прода и дева для MODX Revolution

Привет, я снова тут!

Одна из дегенеративных особенностей MODX — хранить все в базе. Кони, люди, контент — все хранится в базе.
Еще более дегенеративная особенность — MODX учит вас хранить все в ресурсах и это не сказать что правильная логика.

Часто возникает ситуация, что тестовая версия сайта начинает плотно отставать по контенту от продакшена и необходимо как-то синхронизировать изменения.

Я придумал решение, которое отчасти решает мою задачу и потребность. Если решение вам понравится — я упакую все в пакет и выложу в бесплатный доступ.
Павел Бигель
20 февраля 2020, 13:55
modx.pro
3
566
+16

Выдаем вместо кэша html файлик

Предыстория. Возник такой вопрос. Есть какой то сайт, и в нем получается в каталоге было так. В вызов mFilter2 вложено в чанк еще парочка вызовов msProducts ну и так далее. В итоге, раздел грузился за овер 10 секунд. Да, сейчас напишите, что вот надо оптимизировать. Это понятно, но я решил подойти с другой стороны.
Итак, идея была такая, что бы вместо кэша выдавать уже готовую разметку целой страницы.
В итоге, у нас есть плагин:
<?php
switch($modx->event->name){
    case 'OnWebPagePrerender':
        // Тут просто условие, чтобы срабатывал только на категории (можно по сути задавать разные условия)
        if($modx->resource->class_key != 'msCategory'){
            return;
        }
        //Забираю отрендеренный ресурс
        $_output = &$modx->resource->_output; //Забираю отрендеренный ресурс
        // Создаю файлик разметки этого ресурса (можно по сути указать любой путь и так далее, сейчас и так сойдет)
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->resource->uri . '/' . $modx->resource->id . '.txt';
        if(is_file($file)){
            // Если такой файлик уже существует, то просто отдаю его содержимое
            $output = file_get_contents($file);
        }else{
            // Если файлика нету, то записываю туда отрендеренную страницу
            $cache = $modx->getCacheManager();
            $cache->writeFile($file, $_output);
            $output = $_output;
        }
        
        // Подменяю вывод на готовый
        $modx->resource->_output = $output;
        
        break;
        
    case 'OnLoadWebPageCache':
        // Это событие срабатывает до рендера страницы, оно проверяет, есть ли кэш страницы, и если он есть...
        $file = MODX_BASE_PATH . 'resourcecache/' . $modx->event->params['resource']->uri . '/' . $modx->event->params['resource']->id . '.txt';
        
        //...мы проверяем файлик, так как страница уже грузилась и файлик есть и подменяем кэш на содержимое неашего файлика.
        if(is_file){
            $modx->event->params['resource']->_content = file_get_contents($file);
        }
        
        break;
}
Итог, раздел грузился за 10 секунд (ну да, такой раздел, идея в другом), после плагина уже за 0.006 секунды, так как выдается готовая разметка.
Вопрос знатокам, на сколько такой подход вообще жизнеспособный по отношению к системе? Очень бы хотелось услышать комментарии.

Спасибо за донаты:
@Павел Бигель
Михаил
20 февраля 2020, 10:55
modx.pro
10
450
+16

Шпаргалка на все случаи жизни

Полезные ссылки, которые Вам пригодятся в некоторых ситуациях.
Михаил
07 февраля 2020, 21:42
modx.pro
52
639
+35

Данные клиента в письме (e-mail). Minishop2. Изменяем чанк tpl.msEmail

Решение довольно простое, и я решил написать заметку по большей части для себя, так как периодически, когда надо для Заказчика передать данные клиента в email при оформлении заказа, то приходится периодически всё заново писать.

1. Открываем чанк tpl.msEmail
2. Находим
<!-- /body -->
<!-- footer -->
3. Вставляем между этими комментариями следующий код, спасибо Баха Волков за часть кода на Fenom:
Кирилл
06 февраля 2020, 20:14
modx.pro
211
-3

Поиск из mSearch2 по SEO страницам SeoFilter

Привет всем! Давно я сюда ничего не писал, лишь только почитывал. И вот настало время поделиться интересным решением и дальнейшими планами.

Меня иногда спрашивали, можно ли индексировать SEO страницы, но тогда я ничего толком сделать не мог.
Казалось всё это чем-то очень сложным и трудозатратным. Но время шло, я продолжал учиться и стал опытнее. Конечно, отсюда есть и большой минус: на свой старый код без слёз не посмотришь :)

Совсем недавно ко мне обратился @Роман Ильин с таким запросом на доработку. Изучил подробнее, как устроен mSearch2, его таблицы и прикинул, что можно его научить искать и по сторонним таблицам.
В общем-то, Роман и проспонсировал такую доработку, спасибо!



Перейдём, наконец к делу.
Евгений Шеронов
29 января 2020, 12:13
modx.pro
4
389
+18