Новые дополнения и их версии
[modPNotify] - сборщик PNotify для MODX
PNotify — плагин, предназначенный для красивых уведомлений.
В последнее время частенько его использую и для большего удобства собрал установщик в пакет.
Самих исходников в пакете нет, все скачивается и собирается во время установки пакета. Так же при установке доступен выбор необходимых модулей

таким образом всегда можно просто переустановить пакет и получить свежую версию PNotify.
В последнее время частенько его использую и для большего удобства собрал установщик в пакет.
Самих исходников в пакете нет, все скачивается и собирается во время установки пакета. Так же при установке доступен выбор необходимых модулей

таким образом всегда можно просто переустановить пакет и получить свежую версию PNotify.
[modAM] Ограничение доступа для менеджера сайта
modAccessManager — это дополнение ограничивает доступ к элементам управления сайта в административной части, через политику безопасности MODX.
Сразу после установки дополнения, ваш сайт будет полностью готов к предоставлению доступа для менеджера с логином и паролем: manager
Дополнительных настроек не потребуется.
Работает начиная с версии MODX REVOLUTION 2.2

Сразу после установки дополнения, ваш сайт будет полностью готов к предоставлению доступа для менеджера с логином и паролем: manager
Дополнительных настроек не потребуется.
Работает начиная с версии MODX REVOLUTION 2.2

Демо доступ менеджера
- http://modam.bustep.ru/manager/
- Логин: manager
- Пароль: manager
[mspReceiptAccount] Квитанция и счет на оплату
[Twiggy] - шаблонизатор TWIG в MODX Revolution
Пакет Twiggy представляет из себя парсер расширяющий modParser.
Twiggy перехватывает обработку twig тегов на странице.
Подробнее ознакомится с TWIG можно на официальном сайте и на сайте сообщества TWIG.
При установке пакета в контексте web создаются две настройки:
Twiggy перехватывает обработку twig тегов на странице.
Подробнее ознакомится с TWIG можно на официальном сайте и на сайте сообщества TWIG.
При установке пакета в контексте web создаются две настройки:
- parser_class — класс парсера
- parser_class_path — путь к классу парсера
[msPromoCode] Скидочные промо-коды для miniShop2

- Полная AJAX обработка применения/удаления купона к заказу.
- Промо-код можно добавить не только с основной страницы бекенда. На странице товара также есть вкладка "Промо-коды", при добавлении кода из которой текущий товар сразу привяжется к этому промо-коду. Это очень удобно, когда надо добавить купон только для одного товара.
- Если к купону не привязано ниодного товара или раздела — купон действует на весь магазин.
- Скидку можно указать, как для купона в целом, так и для товара или раздела, привязанного к купону. При этом, чем индивидуальнее будет указана скидка, тем она первостепеннее будет восприниматься компонентом. К примеру, у нас есть купон со скидкой 20%, есть Раздел 1, привязанный к этому купону, со скидкой 80% и есть товар лежащий в Разделе 1, привязанный к этому купону, со скидкой 40%. Для данного товара скидка будет 40%.
- При отправке заказа, ровно как и при открытии страницы со сниппетом [[!mspcForm]], компонент проверяет, действителен ли ещё купон. Если нет, то сообщает об этом юзеру, удаляет купон из формы и обновляет цены. Это делает невозможным воспользоваться купоном:
а) который был отключён,
б) время действия которого завершилось,
в) количество которого закончилось.
- Если заказ был оформлен с промо-кодом, то в бекенде в модальном окне заказа вверху на первой вкладке появится промо-код и сумма скидки.
- JS на странице вызова сниппета [[!mspcForm]] вызывается в конце страницы для того, чтобы ваши колбеки miniShop2, которые могут пересекаться с используемыми в пакете, были клонированы и успешно выполнены.

msImportExport
Вторая версия пакета обсуждается в только в этом посте
Компонент предназначен для импорта экспорта товаров для miniShop2
Импорт
Импорт происходит из CSV файла. На основании ключевого поля (которое указывается в настройках и по умолчанию имеет значение «article») будет происходить либо добавление нового товара, либо его обновление.
При добавлении нового товара если не указан для него родитель, то товар будет добавлен в базовую категорию.
Компонент предназначен для импорта экспорта товаров для miniShop2
Импорт
Импорт происходит из CSV файла. На основании ключевого поля (которое указывается в настройках и по умолчанию имеет значение «article») будет происходить либо добавление нового товара, либо его обновление.
При добавлении нового товара если не указан для него родитель, то товар будет добавлен в базовую категорию.
[pdoTools] Версия 2.2 c модификаторами Fenom
Представляю вам новую версию pdoTools 2.2.0-pl, в которой вы можете задавать свои модификаторы для использования в Fenom.
Для этого придумана системная настройка pdotools_fenom_modifiers, в которой вы можете указать нужные сниппеты через запятую.
То, что указано в этой настройке, будет доступно глобально, для всех вызовов pdoTools. Также у вас есть возможность указать конкретные модификаторы для определённого вызова сниппета:
Для этого придумана системная настройка pdotools_fenom_modifiers, в которой вы можете указать нужные сниппеты через запятую.
То, что указано в этой настройке, будет доступно глобально, для всех вызовов pdoTools. Также у вас есть возможность указать конкретные модификаторы для определённого вызова сниппета:
[[!pdoResources?
&parents=`0`
&fenomModifiers=`dateAgo`
&tpl=`@INLINE <p>{$id} - {$pagetitle} {$createdon | dateago}</p>`
]]Как можно заметить, модификаторы указываются через |. [mSearch2] 1.5.2 - произвольные слова в индексе
Представляю вам новую версию mSearch2 с небольшим, но очень важным изменением в логике работы индексации.
Теперь вы можете добавлять любые произвольные поля и слова в индекс буквально на лету, свои плагином на событие mse2OnBeforeSearchIndex:
Теперь вы можете добавлять любые произвольные поля и слова в индекс буквально на лету, свои плагином на событие mse2OnBeforeSearchIndex:
<?php
switch ($modx->event->name) {
case 'mse2OnBeforeSearchIndex':
$mSearch2->fields['my_field'] = 1;
$resource->set('my_field', 'My Words');
if ($resource->get('class_key') == 'msProduct') {
$mSearch2->fields['product_field'] = 1;
$resource->set('product_field', 'Product Property');
}
break;
} [customExtra] Создание кастомных объектов
Периодически мне приходится реализовывать на сайтах клиентов какой-то уникальный функционал. Часто требуется сохранять информацию в базу данных, выводить её оттуда, реализовывать возможность управления из админки. Раньше для этого приходилось писать кастомный компонент.
А значит, надо написать схему, сгенерировать модель, оформить интерфейс, написать процессоры и прочее, и прочее… Для начинающих разработчиков этот метод достаточно сложен. А мне, например, каждый раз та-а-ак лень это делать.
Недавно я все-таки решился собрать некий стандартный компонент, с большим количеством полей, которые можно использовать как угодно. Даже написал небольшую заметку о нем у себя в блоге и на какое-то время успокоился.
До тех пор, пока мне не понадобилось иметь два таких кастомных объекта…
А значит, надо написать схему, сгенерировать модель, оформить интерфейс, написать процессоры и прочее, и прочее… Для начинающих разработчиков этот метод достаточно сложен. А мне, например, каждый раз та-а-ак лень это делать.
Недавно я все-таки решился собрать некий стандартный компонент, с большим количеством полей, которые можно использовать как угодно. Даже написал небольшую заметку о нем у себя в блоге и на какое-то время успокоился.
До тех пор, пока мне не понадобилось иметь два таких кастомных объекта…


