mfilter2 + remians: фильтрация размеров с учетом остатков
Здравствуйте!
minishop2 + msearch2 + msproductremains.
Фильтр используется по стандартному свойству «размер». Задача фильтровать — показывать только те товары, у которых есть в остатках нужный размер.
Пример из документации отфильтровывает товары, общее значение остатков совпадает с указанным в вызове количеством, без учета фильтруемого размера.
Как скорректировать запрос?
minishop2 + msearch2 + msproductremains.
Фильтр используется по стандартному свойству «размер». Задача фильтровать — показывать только те товары, у которых есть в остатках нужный размер.
Пример из документации отфильтровывает товары, общее значение остатков совпадает с указанным в вызове количеством, без учета фильтруемого размера.
Как скорректировать запрос?
Комментарии: 2
Просто скорректировать запрос не получится, надо свой фильтр писать.
да, так и сделал:
внутри функции filterDefault дописал
внутри функции filterDefault дописал
foreach ($resources as $id) {
$remains = $this->modx->getCollection('msprRemains', array('product_id' => $id));
$remainsResult = array();
foreach ($remains as $remain) {
$options = $remain->get('options');
$remainsResult[$options['size']] = array(
'id' => $remain->get('id'),
'remains' => (int) $remain->get('remains')
);
}
if (isset($tmp[$id])) {
if ( $remainsResult[$value]['remains'] > 0 ) {
$matched[] = $id;
}
}
}
потыкал, вроде, корректно работает. Но в вызове всё равно нужен leftJoin из документации.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.