Фильтрация в mFilter2 по модификациям msOptionsPrice2

Привет!

Хочу сделать, чтобы фильтр по цене учитывал стоимость модификаций товара (msOptionsPrice2).

В описании к дополнению msOptionsPrice2 есть такая наводка:

Для вывода слайдера цен с учетом модификаций необходимо положить кастомный класс фильтрации в папку и указать в настройке mse2_filters_handler_class класс msopFilters
Поделитесь кодом класса, пожалуйста, если у кого-то есть.
Мартин Очоа
23 июня 2019, 01:30
modx.pro
1
705
0

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

Мартин Очоа
23 июня 2019, 19:00
0
Может хотя бы есть пример кастомного класса фильтрации, но не по модификациям?
    Андрей
    24 июня 2019, 02:25
    0
    Класс лежит здесь — core/components/msoptionsprice/custom/msopfilters.class.php
      Мартин Очоа
      24 июня 2019, 15:33
      0
      Спасибо! Обожаю документацию на modstore :)
    webmagnit
    22 сентября 2019, 15:28
    0
    Здравствуйте. Тестирую фильтрацию в mFilter2 по модификациям msOptionsPrice2.

    Хостинг modhost.pro
    MODX Revolution 2.7.1-pl
    Версия PHP 7.1
    miniShop2 — 2.5.0-pl
    mSearch2 — 1.13.2-pl
    msOptionsPrice2 — 2.5.20-beta
    pdoTools — 2.12.3-pl

    Создал опции товаров (miniShop2):
    option-01, option-02, option-03
    Тип свойства «Список с автодополнением»


    В шаблоне категории:

    [[!msOptionsPrice.initialize?]]
    [[!mFilter2?
    &limit=`5`
    &parents=``
    &element=`msProducts`
    &class=`msProduct`
    &setMeta=`1`
    &filters=`
    msop|option-01,
    msop|option-02,
    msop|option-03,
    msop|price:number
    `
    &tplOuter=`tpl.mFilter2.outer`
    &tpls=`tpl.msProducts.row,tpl.msProducts.row`
    &sort=`ms|price:desc`

    &tplFilter.outer.msop|option-01=`tpl.mFilter2.filter.select`
    &tplFilter.row.msop|option-01=`tpl.mFilter2.filter.option`
    &tplFilter.outer.msop|option-02=`tpl.mFilter2.filter.select`
    &tplFilter.row.msop|option-02=`tpl.mFilter2.filter.option`
    &tplFilter.outer.msop|option-03=`tpl.mFilter2.filter.select`
    &tplFilter.row.msop|option-03=`tpl.mFilter2.filter.option`
    &tplFilter.outer.msop|price=`tpl.mFilter2.filter.slider`
    &tplFilter.row.msop|price=`tpl.mFilter2.filter.number`
    ]]


    У товаров в модификациях (msOptionsPrice2) прописано:
    Product-01:
    модификация 1:
    Option-01 Ford
    Option-02 Focus
    Option-03 2001,2002,2003

    Модификация 2:
    Option-01 Hyundai
    Option-02 Accent
    Option-03 2002,2003,2004

    Product-02:
    модификация 1:
    Option-01 Audi
    Option-02 100
    Option-03 2001,2002,2003

    Модификация 2:
    Option-01 BMW
    Option-02 3
    Option-03 2002,2003,2004


    Скопировал файл msopfilters.class.php в папку /core/components/msearch2/custom/filters


    В системных настройках msearch2 указал Класс-обработчик фильтров «msopFilters»


    В системных настройках msoptionsprice указал Активные опции модификаций «option-01,option-02,option-03»


    В итоге:
    Фильтр (mFilter2) по модификациям (msOptionsPrice2) пустой

    В журнале ошибок
    [2019-09-22 14:14:58] (ERROR @ /core/components/msearch2/custom/filters/msopfilters.class.php: 52) [mSearch2] Error on get filter params.
    Query: SELECT msProductData.id, msopModification.option-01, msopModification.option-02, msopModification.option-03, msopModification.price FROM `modx_ms2_products` AS `msProductData` LEFT JOIN `modx_msop_modifications` `msopModification` ON msProductData.id = msopModification.rid AND msopModification.type = 1 AND msopModification.active = 1 WHERE `msProductData`.`id` IN (3,4) GROUP BY msopModification.id
    Response: Array
    (
    [0] => 42S22
    [1] => 1054
    [2] => Unknown column 'msopModification.option' in 'field list'
    )

    Подскажите, что я сделал неправильно?
      Володя
      23 сентября 2019, 06:51
      0
      Подскажите, что я сделал неправильно?
      Опции модификаций лежат в отдельной таблице.
      &filters=`
      msopoption|option-01,
      msopoption|option-02,
      msopoption|option-03,
      msop|price:number
      `
      Максим
      17 ноября 2019, 20:28
      0
      Если писать вот так, то блок-фильтр с ценой просто исчезает.
      ,'filters' => '
      			msop|price:number
      		'
      		,'aliases' => '
      			msop|price          == price
      		'
      Если писать ms|price, то блок-фильтр отображается.
      Кастомный класс скопирован в папку (msopfilters.class.php) и прописан в настройках.
      В логах ошибок нет.
        Andrew
        25 февраля 2020, 18:02
        0
        Аналогичная проблема с фильтрами, если писать в вызове сниппета так, то всё выводится только не учитывает модификации:
        ms|price:number,
        ms|vendor:vendors,
        а если прописать вот так, то слайдер цены и производитель вообще пропадают:
        msop|price:number,
        msop|vendor:vendors,
        подскажите пожалуйста, как решается такой затык?
        всё остальное вроде работает правильно, только фильтры не могу настроить…
          Andrew
          26 февраля 2020, 07:10
          0
          Вопрос закрыт. Цены модификаций теперь включаются в слайдер цен. Спиппет теперь выглядит так:
          {$_modx->runSnippet('!mFilter2', [
          	'paginator'=>'pdoPage',
          	'class'=>'msProduct',
          	'element'=>'msProducts',
          	'setMeta'=>1,
          	'includeThumbs'=>'medium',
          	'parents'=>$_modx->resource.id,	
          	'tplOuter'=>'@FILE chunks/tpl_mFilter2Outer.tpl',
          	'tpls'=>'@FILE chunks/tpl_gridProduct.tpl, @FILE chunks/tpl_listProduct.tpl',
          
          	'limit'=>12,
          	'sort'=>'resource|menuindex:asc',
          	'aliases'=>'
          	msop|price==price,
          	ms|vendor==vendor,
          	msoption|availability==availability,
          	
          	',
          	'filters'=>'
          	msop|price:number,
          	ms|vendor:vendors,
          	msoption|availability:default,	
          	',
          	'tplFilter.outer.price'=>'tpl.mFilter2.filter.slider',
          	'tplFilter.row.price'=>'tpl.mFilter2.filter.number'		
          ])}
          Теперь другой вопрос появился.
          Так понимаю, слайдер цен с модификациями не подхватывает цены товаров без модификаций.
          В категориях есть товары с модификациями и без. Можно как-то включить что-бы в слайдер цен подхватывались и цены товаров без модификаций?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8