Расширения MODX

[Sendex] Компонент управления рассылками

Как вы уже знаете, полтора месяца назад стартовал интересный эксперимент — обучающий курс по разработке компонентов для MODX Revolution.

Как таковых обучающих курсов, наверное, много, но здесь цель была не только чему-то научить, но и написать полезное дополнение.

Довольны должны быть все: читатели наконец получили ответы на многие вопросы, а сообщество — новый компонент для работы с рассылками (на этом поле пока не особо есть из чего выбирать).

И вот сейчас я готов показать, что у нас вышло.

Читать далее

[debugParser] Отлавливаем узкие места

В голове давно вертелась мысль, как бы точно отследить, что именно запускается на странице сайта и насколько тормозит? То есть, прям взять и разобрать все вызовы, по тегам и замерить время.

Пока был в отпуске — придумал общую логику, и как приехал — сразу написал. Итак, новый компонент для отладки работы парсера MODX Revolution — debugParser!

Он заменяет собой родной modParser, вызывает его методы и замеряет время на обработку каждого тега.

Читать далее

pdoTools + Bootstrap3 + MinifyX = Theme.Bootstrap

Обновил компонент Theme.Bootstrap по последнему слову сайтостроения MODX Revolution.

Просто установите его из репозитория, и вы получите готовый сайт с pdoTools, Bootstrap3 и MinifyX.

При установке создаются 2 новых шаблона и ресурса:

  • Bootstrap.main — вывод ресурсов сайта, с пагинацией

  • Bootstrap.inner — вывод контента страницы, по умолчанию там демонстрация Bootstrap

Все скрипты и стили склеиваются, минифицируются и подключаются при помощи MinifyX.

Читать далее

[mspQiwi] Прием платежей через Qiwi

Доброго времени суток

Написал не так давно для себя пару кастомных классов для расширения MS2 и приема Qiwi платежей, и решил потренироваться в сборке пакетов и оформить это дело как положено в виде отдельного расширения.

И так, все вышло довольно просто, скачать готовый пакет можно из репозитория SImpleDream

Ну а под катом, распишу что и как работает.

Читать далее

[MinifyX] Новая бета версия со встроенным Munee

Прошел почти год с последнего обновления MinifyX. Если кто не знает — это компонент для склейвания и минификации скриптов и стилей.

Он хорошо ускоряет загрузку страницы и позволяет немного обсфуцировать ваши исходники.

Библиотека Munee

В новой версии я переписал все с чистого листа, при этом сохранил основную логику и параметры. А чтобы не беспокоиться за поддержку новых плюшек и исправление ошибок минификатора, вся основная работа переложена на библиотеку Munee.

Что нам это дает?

  • Улучшенные алгоритмы сжатия и склейки

  • Поддержка LESS, SCSS и CoffeScript

  • Более продвинутое кэширование исходных скриптов и стилей

  • Возможность использования Munee напрямую:

<link href="/assets/components/minifyx/munee.php?files=/css/libs/bootstrap.min.css,/css/site.css&minify=true" rel="stylesheet">
  • Возможность настроить веб-сервер согласно инструкции, чтобы все ваши скрипты и стили отдавались через Munee

  • Munee умеет даже уменьшать изображения, наподобие старого-доброго DirectResize. Эту возможность я не проверял, но можно немного почитать и попробовать самостоятельно.

В общем, я конкретно схитрил, используя Munee — вся грязная работа теперь на нём, а сам MinifyX только проверяет и подготавливает параметры для работы, да подключает готовые файлы на страницу.

Читать далее

[pdoTools] Версия 1.8.8 Улучшенное кэширование

Новая версия с исправлениями и парой приятных улучшения.

Кэширование

В принципе, код компонента уже довольно хорошо оптимизирован, и явных способов еще ускорить его, без потери функциональности, не видно — поэтому я взялся за кэш.

Сейчас его можно использовать в 2х сниппетах: pdoMenu и pdoPage:

[[!pdoPage?
    &parents=`2`
    &cache=`1`
    &cacheTime=`3600`
]]

Важное отличие от getPage состоит в том, что кэширование всегда производится с учетом id посетителя. К примеру, у меня в списке заметок выводится количество непрочитанных комментариев. Раньше такое кэшировать было нельзя, ибо тогда все видели одни и те же цифры, а теперь — можно.

Гости видят одни результаты, авторизованные пользователи — другие. Лично я закэшировал у себя всё списки тикетов на 120 секунд.

Читать далее

[miniShop2] Версия 2.1.2 Поддержка файлов в галерее

Новая версия MS2 исправляет ошибки и добавляет новые возможности.

Улучшения галереи

Исправлена ошибка с переименованием первой картинки в галерее, когда у товара не обновлялись thumb и image.

Добавлена дополнительная проверка параметра ms2_product_thumbnail_size, который указывает размер картинки для поля thumb товара.

Теперь, если указан размер, несуществующий в источнике файлов, будет использован первый доступный.

Наконец-то дошли руки до поддержки в галереи всех типов файлов, а не только изображений. Нужно указать возможные расширения в настройке источника в параметре allowedFileTypes.

Читать далее

[AjaxForm] Отправка форм через Ajax

Работаю над одним интересным сайтом, в котором много разных форм: и для вакансий, и для заказов, и для обратной связи.

У MODX Revolution есть хороший компонент для форм — FormIt. Меня он всем устраивает, за исключением одного — отсутствия работы с ajax.

Проблема старая, решалась сотней разных способов на сотне разных сайтах, и просто не захотелось велосипедить в сто первый.

Следуя известной мудрости "лучше день потерять потом за пять минут долететь", я взял и написал новый бесплатный компонент AjaxForm.

Читать далее

[Tickets] Версия 1.1.0-pl Новые настройки

Дошли руки до обновления Tickets, надеюсь вам понравится.

Исправления

Исправлена ошибка, когда при смене шаблона тикета, он снимался с публикации.

Исправлена ошибка, когда при создании тикета в админке показывался пустой шаблон.

Читать далее

[BannerY] Версия 1.2.0-beta Новый сниппет вывода

Обновил компонент управления баннерами. Изменения пока эволюционные — просто подтянул к нынешнему минимальному уровню.

Самое главное — это новый сниппет, который работает через pdoTools. Помимо скорости, это дает гораздо большие возможности по выборке и оформлению. Просто загляните в его параметры:

Читать далее

[pdoTools] Версия 1.8.3: Новый сниппет pdoMenu

Новая версия pdoTools знаменует собой окончание активной разработки компонента.

Я написал все, что хотел: удобную библиотеку и 8 сниппетов для самых распространенных задач.

  • pdoResources — замена getResources с широчайшими возможностями. Можно и присоединять таблицы, и выбирать только нужные поля, и гибко указывать разные параметры выборки и все это на очень высоких скоростях.

  • pdoPage — замена getPage, которая отлично строит пагинацию, запрещает указывать нехорошие параметры в запросах и быстрее работает.

  • pdoMenu — замена Wayfinder. Однозначно быстрее при первом запуске, на повторных разница уже не столь заметна. Зато можно более гибко указывать параметры выбоки + быстрый рендер чанков.

  • pdoUsers — Сниппет вывода пользователей сайта, с различными условиями, включая фильтрацию по группам и ролям.

  • pdoSitemap — Генерация карты сайта, в разы быстрее GoogleSiteMap.

  • pdoCrumbs — Вывод навигационных хлебных крошек, замена Breadcrumb.

  • pdoNeighbors — Вывод соседних документов: предыдущий, следующий и наверх.

  • pdoField — Вывод поля указанного ресурса или его родителя на разных уровнях. Замена getResourceField и UltimateParent.

Читать далее

[pdoTools] Версия 1.8.0-rc: Сниппет pdoPage

Продолжаю разрабатывать версию 1.8.0, сегодня у нас в студии release candidate: JSON поля, автозагрузка классов и сниппет pdoPage.

JSON поля

Как известно, в таблицах MODX встречаются текстовые поля, в которых движок хранит JSON строки, представляющие массивы.

Например, это поле properties у ресурса и extended у профиля пользователя. pdoFetch выбирает такие поля «как есть» и если вы укажете в чанке [[+properties]], то увидите что-то типа:

{"key":"value"}

С новой версии эти поля автоматически разбираются, и getChunk выставляет плейсхолдеры [[+имяполя.ключмассива]]

То есть, указав [[+extended.key]] вы получите value. Это работает везде, и в pdoResources и в pdoUsers.

Идея честно стырена у YJ Tso, который написал аналог pdoUsers, сам того не подозревая.

Читать далее
bezumkin
Василий Наумкин
30.06.2022 03:58
Есть ли возможность формировать &quot;friendly URL aliases&quot;, используя аналог translit MODx? ...
bezumkin
Василий Наумкин
27.06.2022 03:32
Спасибо за исправления, очень выручаешь =) Но учитывая количество не описаных в заметке дополнительн...
bezumkin
Василий Наумкин
27.06.2022 03:10
что будет использоваться для вывода многоуровневого меню Посмотри как работают комментарии на этом ...
bezumkin
Василий Наумкин
25.06.2022 11:56
Поправил, спасибо!
bezumkin
Василий Наумкин
22.06.2022 10:08
Я обычно не пользуюсь RTE редакторами, потому что они пишут всякое непонятное что в HTML. Но можно в...
bezumkin
Василий Наумкин
21.06.2022 01:58
onLoad(data) { this.total = data.total }, и onLoad({total}) { this.total = total }, В нашем случ...
bezumkin
Василий Наумкин
20.06.2022 14:01
Прекрасно тебя понимаю, я когда сам в этом разбирался - голова дымилась. Но зато теперь прямо-таки п...
bezumkin
Василий Наумкин
20.06.2022 09:30
Не надо, оно по умолчанию так - я просто чуть более подробно написал.
bezumkin
Василий Наумкин
19.06.2022 13:42
А можно же из 1 файла сделать 2 экспорта. По-умолчанию, и отдельно для футера: export const Footer =...
bezumkin
Василий Наумкин
19.06.2022 09:44
Тебе спасибо, что поддерживаешь рублём мои начинания!