Расширения MODX

[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, сам того не подозревая.

Читать дальше

[msDiscount] Система скидок для miniShop2

Специально для mamaboutique.ru написал новый компонент msDiscount. Учитывая требования заказчицы, компонент написан максимально универсально, и скорее всего появится в нашем магазине.

На данный момент возможности такие:

  • Скидки на группу товаров
  • Скидки для группы пользователей
  • Создание акций, ограниченных по времени, с указанием групп пользователей и товаров
  • Для групп пользователей можно указать сумму оплаченных покупок, при достижений которой, они автоматически в неё вступят.
  • Пересчет корзины при авторизации юзера
  • Автоматический вывод цены со скидкой в price, а старой цены в old_price.
    Пользователь после авторизации видит новые цены везде: и в каталоге, и на странице товара, и в корзине.
  • Величину скидки можно указывать относительную, в процентах, или абсолютную, в валюте магазина.
Самое главное отличие от других систем, что я видел: довольно хитрый алгоритм, который проверяет все возможности применения разных скидок к текущей комбинации покупатель-товар и выбирает максимальную.

При этом, требуемые группы могут как включать, так и исключать позиции из акции.

Читать дальше

[pdoTools] Версия 1.8.0-beta: Условия выборки

Компонент pdoTools постоянно развивается и дополняется. После каждой обновки мне, как правило, нужно обновлять и сниппеты, которые с ним работают — потому что пользователи уже ожидают там новые функции.

А компонентов со сниппетами несколько: Tickets, miniShop2, mSearch2, да и в самом pdoTools уже 6 сниппетов (и планируется еще 2).

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

Поэтому, с версии 1.8.0 всё построение условия where, сортировка и выборка значений вшита прямо в pdoFetch.

Вшита аккуратно, мешать имеющимся сниппетам не должна, но вдруг? Поэтому версия 1.8.0-beta. Обновляться нужно осторожно, и в случае проблем сразу писать в комментарии.

На всякий случай предусмотрен и предохранитель. Если ваш сниппет барахлит с новой версией pdoTools — попробуйте указать:

&disableConditions=`1`
это отключит встроенную обработку условий.

Читать дальше

[pdoTools] Версия 1.7.2 - методы getObject и getCollection

Свежая версия pdoTools, как обычно, упрощает жизнь пользователям MODX.

getChunk и parseChunk мы уже заменили. Сделали выборку через PDO, с полдключением ТВ и проверкой прав. Что осталось?

Верно — еще больше упростить работу с библиотекой. Встречайте 2 новых метода: pdoFetch::getObject и pdoFetch::getCollection().

Чтобы вам было удобно работать, классы pdoFetch и pdoTools теперь всегда находятся в системе, и вы можете получить их через modX::getService(); когда угодно.

Предвижу вопрос, а что это за 2 класса? А все просто: pdoTools — основной класс, в нём находятся только проверка прав и работа с чанками. А pdoFetch расширяет его, добавляя работу с базами данных.

Так что, если вам нужно быстро обернуть какие то данные в чанки, то pdoFetch не нужен, можно вызвать сразу основной класс. А если хотите что-то получить из БД — вызывайте pdoFetch, он унаследует родителя и вы сможете работать и с таблицами и с чанками.

Ну а теперь, подробнее.

Читать дальше

[miniShop2] Версия 2.1.0-pl1 Модификация цены и веса товаров

За один вчерашний день новый miniShop2.1 закачали больше раз, чем за все время бета-тестов.

Конечно, появилось много вопросов, которые я быстренько решаю и обновляю компонент в репозитории.

Исправления

Исправлен файл action.php, который был оставлен для совместимости с уже работающими магазинами. Теперь он просто адресует все запросы в новый плагин — и проблем нет.

Немного изменена работа msProduct::toArray(). Свойства производителя теперь выводятся с префиксом не «vendor_», а «vendor.» для единообразия со сниппетом msProducts. А то в одном месте через подчеркивание, а в другом через точку — непорядок.

Желательно так же получать и имя производителя через xPDO:
echo $resource->get('vendor.name');
хотя и старый вариант с подчеркиванием тоже вернёт что нужно.

Исправлена ошибка с мусорными записями в таблице событий плагинов. В скрипте сборки пакета балы ошибка, поэтому создавалось 27 событий с именами 0, 1, 2 и т.д.

Новая версия их чистит, и добавляет 2 новых и очень интересных события для модификации цен и веса.

Читать дальше