Фильтрация в mFilter2 по модификациям msOptionsPrice2
Привет!
Хочу сделать, чтобы фильтр по цене учитывал стоимость модификаций товара (msOptionsPrice2).
В описании к дополнению msOptionsPrice2 есть такая наводка:
Хочу сделать, чтобы фильтр по цене учитывал стоимость модификаций товара (msOptionsPrice2).
В описании к дополнению msOptionsPrice2 есть такая наводка:
Для вывода слайдера цен с учетом модификаций необходимо положить кастомный класс фильтрации в папку и указать в настройке mse2_filters_handler_class класс msopFiltersПоделитесь кодом класса, пожалуйста, если у кого-то есть.
Комментарии: 22
Может хотя бы есть пример кастомного класса фильтрации, но не по модификациям?
Класс лежит здесь — core/components/msoptionsprice/custom/msopfilters.class.php
Спасибо! Обожаю документацию на modstore :)
Здравствуйте. Тестирую фильтрацию в 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'
)
Подскажите, что я сделал неправильно?
Хостинг 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'
)
Подскажите, что я сделал неправильно?
Подскажите, что я сделал неправильно?Опции модификаций лежат в отдельной таблице.
&filters=`
msopoption|option-01,
msopoption|option-02,
msopoption|option-03,
msop|price:number
`
Всё сделал по инструкции, как у вас, но не выводит цены.
Такое чувство он не видит.
Размеры выводит, а вот цены нет.
Документация полная или только для избранных?
Фильтрация нету и не отображается.
Такое чувство он не видит.
Размеры выводит, а вот цены нет.
Документация полная или только для избранных?
Фильтрация нету и не отображается.
Решение
[[!mFilter2?
&paginator=`pdoPage`
&includeTVs=`HitsPage`
&sort=`resource|pagetitle:asc, tv|HitsPage:asc`
&class=`msProduct`
&element=`msProducts`
&setMeta=`1`
&parents=`[[*id]]`
&tplOuter=`tpl.mFilter2.sorting-catalog-view`
&tpls=`tpl_default,tpl_list,tpl_table`
&aliases=`ms|price==price, tv|HitsPage==HitsPage`
&filters=`msoption|size, msoption|height-tovar, msoption|color-needle, msoption|Diameter-tovar, msop|price:number, ms|vendor:vendors`
&class=`msProduct`
&tplFilter.outer.msop|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.msop|price=`tpl.mFilter2.filter.number`
&tplFilter.row.msoption|height-tovar=`tpl.mFilter2.filter.checkbox`
]]
Если писать вот так, то блок-фильтр с ценой просто исчезает.
Кастомный класс скопирован в папку (msopfilters.class.php) и прописан в настройках.
В логах ошибок нет.
,'filters' => '
msop|price:number
'
,'aliases' => '
msop|price == price
'
Если писать ms|price, то блок-фильтр отображается.Кастомный класс скопирован в папку (msopfilters.class.php) и прописан в настройках.
В логах ошибок нет.
Аналогичная проблема с фильтрами, если писать в вызове сниппета так, то всё выводится только не учитывает модификации:
всё остальное вроде работает правильно, только фильтры не могу настроить…
ms|price:number,
ms|vendor:vendors,
а если прописать вот так, то слайдер цены и производитель вообще пропадают:msop|price:number,
msop|vendor:vendors,
подскажите пожалуйста, как решается такой затык?всё остальное вроде работает правильно, только фильтры не могу настроить…
Вопрос закрыт. Цены модификаций теперь включаются в слайдер цен. Спиппет теперь выглядит так:
Так понимаю, слайдер цен с модификациями не подхватывает цены товаров без модификаций.
В категориях есть товары с модификациями и без. Можно как-то включить что-бы в слайдер цен подхватывались и цены товаров без модификаций?
{$_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'
])}
Теперь другой вопрос появился.Так понимаю, слайдер цен с модификациями не подхватывает цены товаров без модификаций.
В категориях есть товары с модификациями и без. Можно как-то включить что-бы в слайдер цен подхватывались и цены товаров без модификаций?
Вы нашли решение по поводу цен?
Как видешь не кто не знает, если да же автор плагина молчит и не знает.
Да, оказалось все работает из коробки) Автор плагина что-то там пошаманил и вуаля.
Ситуация 1 в 1. Не цепляются цены на обычные товары. Есть инфа где надо подшаманить чтобы заработало?
Решили вы это проблему?
Да. Автор компонента что-то подправил и все стало работать как надо.
Всем привет, подскажите в чем может быть затык, класс msopfilters.class.php скопировал в папку, я правильно понял что его нужно подключать в настройках mFilter: mse2_filters_handler_class
И вот такая ошибка в логе вылезла
[mSearch2] Method «getMsopValues» not exists in class «mse2FiltersHandler». Could not retrieve filters from «msop»
И вот такая ошибка в логе вылезла
[mSearch2] Method «getMsopValues» not exists in class «mse2FiltersHandler». Could not retrieve filters from «msop»
Кто-то нашёл ответ?
Всё сделал, а цены не отображаются, уже неделю маюсь.
?
Такое чувство автор знает о проблеме, но не решил её (
Всё сделал, а цены не отображаются, уже неделю маюсь.
?
Такое чувство автор знает о проблеме, но не решил её (
Добрый день, а как сделать сортировку внутри самого чанка.
Я про вот эту сортировку:
Я про вот эту сортировку:
<select class="sorting_cat mr-2 form-control" id="mse2_sort">
<option class="sort" data-sort="ms_product|publishedon" value="asc">Популярные</option>
<option class="sort" data-sort="ms_product|publishedon" value="desc">Новизне</option>
<option class="sort" data-sort="ms|price" value="asc">Дешевые</option>
<option class="sort" data-sort="msoption|sort-pop" value="desc">sort-price-down</option>
<option class="sort" data-sort="msoption|sort-price-down" value="desc">sort-price-down</option>
<option class="sort" data-sort="msoption|sort-price-up" value="asc">sort-pop</option>
</select>
Такое возможно? Я правильно пишу или так работать не будет?
Чуть ошибся в коде, но принцип и вопрос тот же.
<select class="sorting_cat mr-2 form-control" id="mse2_sort">
<option class="sort" data-sort="ms_product|publishedon" value="asc">Популярные</option>
<option class="sort" data-sort="ms_product|publishedon" value="desc">Новизне</option>
<option class="sort" data-sort="ms|price" value="asc">Дешевые</option>
<option class="sort" data-sort="msoption|sort-pop" value="desc">sort-pop</option>
<option class="sort" data-sort="msoption|sort-price-down" value="desc">sort-price-down</option>
<option class="sort" data-sort="msoption|sort-price-up" value="asc">sort-price-up</option>
</select>
Всем здравствуйте!
Сайт перестал загружаться(((
После установки SSL — сертификата возникла ошибка в перенаправлении c http на https.
Исправили правило .htaccess, также
изменили наименование файла ht.access в
директории core на .htaccess и добавили знак
"_" в начало директории cache для
исключения ошибки с кэшированием
перенаправления.
А что дальше, загружается ооочень медленно!
Сайт перестал загружаться(((
После установки SSL — сертификата возникла ошибка в перенаправлении c http на https.
Исправили правило .htaccess, также
изменили наименование файла ht.access в
директории core на .htaccess и добавили знак
"_" в начало директории cache для
исключения ошибки с кэшированием
перенаправления.
А что дальше, загружается ооочень медленно!
Дальше вам видимо нужно обратиться в раздел «Работа» с задачей сделать анализ или сразу решить вопрос.
Вообще установка SSL сертификата, редирект — не влияют на скорость загрузки сайта.
Вообще установка SSL сертификата, редирект — не влияют на скорость загрузки сайта.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.