[mSearch2] Версия 1.13 с поддержкой плагинов ms2

Представляю вам новую версию самого популярного дополнения в modstore.pro, которая улучшает работу фильтра с дополнениями для скидок.

Как известно, mFilter2 работает напрямую с базой данных, чтобы выбирать все данные для построения фильтров максимально быстро. И если эти данные чем-то меняются перед выводом, например дополнением msDiscount, то в фильтре цены будут одни значения, а при выводе товаров — другие.

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

Итак, если вы строите фильтры по полям price или weight товаров miniShop2, то вместо прямой работы с БД, будут выбираться объекты товаров, а из них вызываться соответствующие методы getPrice и getWeight. Таким образом, цена и вес в фильтрах будут построены по тем же данным, которые выведет покупателю msProducts.

Конечно, если у вас выбирается много товаров, возможно вы заметите замедление работы фильтров. Но больших магазинов без скидок почти не бывает, так что новый функционал включен по умолчанию. Но вы всегда можете его отключить опцией &noPreciseMSFilters=`1`.

Например, создаём плагин, который добавляет 20% НДС ко всем товарам в магазине:
<?php
switch ($modx->event->name) {
    case 'msOnGetProductPrice':
        /** @var float $price */
        $values = &$modx->event->returnedValues;
        if (isset($values['price'])) {
            $price = $values['price'];
        }
        $values['price'] = round($price + ($price * .20), 2);
        break;
}
Товары у нас в базе стоят от 100 до 250 рублей.

Если новый функционал отключен, то данные в фильтре и выводе начнут расходиться на 20%


А если всё работает по умолчанию, то фильтр показывает изменённые цены:


Еще 2 изменения были предложены пользователями дополнения:

@Евгений Шеронов предложил немного улучшить поддержку параметра &pageLinkScheme сниппета pdoPage. ЧПУ навигацию в фильтр это не добавляет, но хотя бы и не ломает работу фильтра, если она активирована в pdoPage.

@Степан Прищепенко предожил сохранять переданные $scriptProperties в файле action.php, когда вызывается pdoFetch. Это позволяет передать, например, &elementsPath при вызове mSearchForm.

Новая версия уже в репозитории, можно обновляться.
Василий Наумкин
11 марта 2019, 07:21
4
340
+14
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.