Новые дополнения и их версии
[pdoTools] 2.2.1 Улучшения ajax пагинации
Представляю вам новую версию pdoTools с небольшими улучшениями работы pdoPage в режиме ajax.
Первое изменение заключается в том, что все запросы теперь отправляются на отдельный файл-коннектор, который лежит в /assets/components/pdotools/. Во-первых, это ускоряет работу, потому что мы запускаем MODX в API_MODE и не выполняем все сниппеты на текущей странице, перед pdoPage.
А во-вторых, теперь режим ajax у pdoPage можно использовать при включенном Fenom в теле страницы. Кому интересно, вот подробности.
Второе изменение косметическое. Был добавлен параметр &ajaxHistory, который позволяет отключить сохранение номера страницы в url.
Первое изменение заключается в том, что все запросы теперь отправляются на отдельный файл-коннектор, который лежит в /assets/components/pdotools/. Во-первых, это ускоряет работу, потому что мы запускаем MODX в API_MODE и не выполняем все сниппеты на текущей странице, перед pdoPage.
А во-вторых, теперь режим ajax у pdoPage можно использовать при включенном Fenom в теле страницы. Кому интересно, вот подробности.
Второе изменение косметическое. Был добавлен параметр &ajaxHistory, который позволяет отключить сохранение номера страницы в url.
VKShare автоматическая публикации во «Вконтакте»
Компонент позовёт в автоматическом режиме при создании/редактировании документа публиковать на основании шаблона сообщения «Вконтакте» на стену пользователя, группы либо паблик страницы (у вас должны быть права на публикацию постов на выбранной страницы).
Пост может содержать кроме текста как ссылки на фото, так и ссылки на видео (поддерживаются следующие виде хостеры: youtube.com; vimeo.com; dailymotion.com; rutube.ru; vk.com; coub.com). Весь медиа контент будет прикреплен к посту (из видео будет прикреплено только 1-е)
Пост может содержать кроме текста как ссылки на фото, так и ссылки на видео (поддерживаются следующие виде хостеры: youtube.com; vimeo.com; dailymotion.com; rutube.ru; vk.com; coub.com). Весь медиа контент будет прикреплен к посту (из видео будет прикреплено только 1-е)
[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;
}