Расширения MODX

[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 новых и очень интересных события для модификации цен и веса.

Читать далее

[miniShop2] Версия 2.1.0-pl

Релиз новой версии miniShop2. Список изменений очень большой, отмечу основные:

  • Работа без javascript, изменены все чанки товаров и корзины.

  • Переписан стандартный javascript, можно навешивать разные события

  • Разнообразные улучшения админки, включая настройку таблицы заказов заказов

  • Улучшение работы почти всех сниппетов

  • Новый объект msCustomerProfile

  • Улучшение галереи, возможность включить friendly urls

  • Переписана работа системных событий

  • Тонна других исправлений и улучшений

Внимание, еси вы используете стандартный javascript, который идёт в комполекте, и не меняли его — то вам нужно привести свои чанки к новому виду. В основном все изменения заключаются в оборачивании эелементов в формы, чтобы они работали как с js, так и без него.

Если же вы ранее переименовали стандартный js и подключили отдельно в системных настройках, то в этой версии я вернул вам action.php, для обратной совместимости.

При использовании старого javascript со старыми чанками проблем с обновлением быть сообще не должно. Это, я думаю, 90% работающих магазинов.

Например, наш магазин уже крутится на новой версии.

Актуальные версии чанков находятся здесь. А подробности тут.

Если вы не готовы потратить полдня на это обновление — лучше и не устанавливайте.

Обязательно сделайте три бэкапа! Я вас предупредил.

Читать далее

[pdoTools] Версия 1.7.0-pl - 4 новых сниппета

Стабильная версия 1.7.0 реализует хитрый план по захвату рынка ускорению всех сайтов на MODX Revolution.

Помимо двух уже привычных сниппетов pdoResources и pdoUsers, у нас появляется 4 новых:

  • pdoCrumbs — вывод хлебных крошек, заменяет BreadCrumb.

  • pdoField — получение любого поля произвольного ресурса, или его родителя. Заменяет getResourceField и UltimateParent.

  • pdoSitemap — скоростная генерация карты сайта. Заменяет GoogleSitemap.

  • pdoNeighbors — вывод соседних документов, от указанного ресурса. Не знаю, может что и заменяет, но делалось без оглядки на другие решения.

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

Читать далее

[HybridAuth] Версия 0.8.0-pl работа с контекстами

Обновил HybridAuth, решил старые вопросы по генерации ссылок и авторизации в разные контексты.

Для этого пришлось вдумчиво поразбираться с авторизацией в MODX, благодаря чему нашелся баг переключения контекстов и получения юзера.

Суть в том, что при авторизации в любой контекст, нужно обязательно авторизовать юзера в web. Без авторизации в web вы не попадаете в другой контекст никак. Что же делать тем, кто хочет поднять 2 независимых сайта с авторизацией? Читать дальше.

Вопрос этот очень старый, на форуме его поднимали еще в 2010 году.

Читать далее

[mSearch2] Версия 0.8.1-pl

Новая версия mSearch2 c небольшими исправлениями и обновлённым виджетом сортировки.

Исправления

  1. Исправлена работа с параметрами &queryVar= и &parentsVar=, если вы меняете их имена. Теперь стандартный javascript сначала смотрит в конфиг для определения новых имён, а не тупо проверяет «query» и «parents» в адресе.

  2. Исправлен вывод сообщений «ничего не найдено». Раньше они возвращались сразу, а теперь оформляются в чанк &tplWrapper и выставляются в плейсхолдер — если так указано в параметрах запуска.

    Таким образом, например, можно прятать сообщение от сниппета, если ничего не найдено:

[[!mSearch2?
    &totalVar=`mytotal`
    &toPlaceholder=`mysearch`
]]
[[+mytotal:isnot=``:then=`[[+mysearch]]`]]
  1. Исправлена ошибка с изменением limit, если вы перешли по ссылке, в которой есть этот параметр.
Читать далее

[pdoTools] Версия 1.6.0-pl Полная поддержка ТВ

Неожиданно быстрый релиз новой версии pdoTools приносит нам кучу новых возможностей, включая 100% поддержку ТВ параметров.

Краткий список изменений, после которых я могу смело рекомендовать pdoResources на замену getResources всем пользователям MODX Revolution:

  • Добавлен параметр &loadModels для указания списка сторонних дополнений, для загрузки их моделей.

  • Добавлены параметры &prepareTVs и &proccesTVs — вывод ТВ параметров во всю ширь.

  • Добавлен параметр &tvFilters для фильтрации по ТВ параметрам.

  • Добавлена поддержка параметров &sortbyTV и &sortdirTV, для указания сортировки по ТВ.

  • Добавлена поддержка указания @INLINE и @FILE биндингов во всех параметрах с чанками.

pdoResources догнал и перегнал getResources.

Читать далее

[mSearch2] Версия 0.8.0-pl слайдер цен и другие

Всю неделю занимался оптимизацией одного сайта и переводом его на mSearch2.

Сайт работает на Shopkeeper и процессе обновления выяснилось, что mFilter2 не очень-то с ним дружит. В частности, не умеет выводить страницы из другого контекста.

По завершению работ накопилось много изменений, и все они вошли в эту версию.

Исправления

Внимание, всем кто использует &toPlaceholder=1, его формат изменился. Теперь нужно использовать &toPlaceholders=mse2\_ или другой префикс.

Соответственно, все плейхолдеры станут такими: [[+mse2_filters]], [[+mse2_results]], [[+mse2_tpls]] и [[+mse2_total]].

Добавился параметр &toSeparatePlaceholders=`` — он работает так же, но разбивает по отдельным плейхолдерам еще и сами фильтры. И тогда у вас выходит: [[+mse2_results]], [[+mse2_tv|price]], [[+mse2_resource|parent]] и т.д. [[+mse2_filters]] при этом тоже работает.

Исправлена фильтрация number, теперь она гораздо быстрее. Если вы замечали, что фильтры работают медленнее, если выведены цены — обновление это исправит.

При указании значений в &parents=`` не важно, в каком контексте документы — сниппеты выберут потомков без проблем.

Исправлена ошибка с выводом ТВ параметров в фильтре, если в них есть заглавные буквы.

Читать далее

[pdoTools] Версия 1.5.0-pl1 улучшена работа с ТВ

Очередное обновление библиотеки для быстрой работы с БД pdoTools.

Изменений всего 3, зато каких!

Поддержка значения по умолчанию в ТВ

Одно из основных нареканий при переезде на pdoResources — отсутствие «значения по умолчанию», заданного в настройках ТВ параметра.

Многие думают, что это значение пишется в БД, но нифига. Если ТВ параметр пуст — то записи в БД вообще нет, и mySql отдаёт NULL при запросе.

С версии 1.5.0-pl все сниппеты pdoTools (включая getTickets и msProducts) будут выводить «умолчательное» значение, указанное в ТВ.

Читать далее

[Office] Версия 0.9.0-pl с поддержкой HybridAuth

Вслед за новым HybridAuth улучшился и Office.

Главное изменение — тесная дружба с HybridAuth. Теперь можно авторизоваться и через email и через любые социальные сервисы, которые вы настроите.

Интеграция сделана очень приятно, работает самостоятельно, ничего особо делать не нужно. Включаестся просто — добавлением плейсхолдера [[+providers]] в чанки Office (вход, выход и профиль).

Читать далее
bezumkin
Василий Наумкин
30.06.2022 03:58
Есть ли возможность формировать "friendly URL aliases", используя аналог 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
Тебе спасибо, что поддерживаешь рублём мои начинания!