Как написать условие OR c помощью fenom?
Все привет, делаю фильтрацию товаров, и столкнулся с проблемой и недостатком знаний как организовать условие в скобках и с OR между ними. Подскажите, кто разбирается. P.S. Код весь не влазит, но нужное я разместил.
{var $filter = []}
{if $get.gem?}{set $filter['consist'] = $get.gem}{/if}
{if $get.metal?}{set $filter['metal'] = $get.metal}{/if}
{if $get.size?}{set $filter['size'] = $get.size}{/if}
{if $get.type?}{set $filter['fabric:IN'] = $get.type}{/if}
{if $get.tag?}{set $filter['tags:IN'] = $get.tag}{/if}
{if $get.label?}
{foreach $get.label as $label}
{set $filter[$label] = 1} // Вооот здесь
{/foreach}
{/if}
<div class="products flx">
{var $products = '!pdoPage' | snippet : [
'element' => 'msProducts',
'parents' => 19,
'depth' => 0,
'limit' => $get.pagesize ? : 12,
'tpl' => 'tplProducts',
'includeThumbs' => 'thumb',
'optionFilters' => $filter | toJSON,
'where' => $where,
]}
Комментарии: 3
Получается что то вроде
WHERE ( `msProduct`.`class_key` = 'msProduct' AND (Data.price>=0 AND Data.price<=999999999 AND Data.price!=0) AND `tags`.`value` IN ('Любовь','Мышь') AND `new`.`value` = '1' AND `favorite`.`value` = '1' AND `msProduct`.`parent` IN (19) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 ) GROUP BY msProduct.id, `thumb`.url ORDER BY msProduct.publishedon DESC LIMIT 12
А нужно <code>WHERE ( `msProduct`.`class_key` = 'msProduct' AND (Data.price>=0 AND Data.price<=999999999 AND Data.price!=0) AND `tags`.`value` IN ('Любовь','Мышь') AND (`new`.`value` = '1' OR `favorite`.`value` = '1') AND `msProduct`.`parent` IN (19) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 ) GROUP BY msProduct.id, `thumb`.url ORDER BY msProduct.publishedon DESC LIMIT 12</code>
Попробуй так:
{'!pdoPage' | snippet:[
'element' => 'msProducts',
'parents' => 19,
'depth' => 0,
'limit' => 0,
'tpl' => '',
'showLog' => 1,
'where' => '[{
"Data.metal:=":"Ferum",
},{
"Data.size:=":"100",
},{
"Data.new:=":"1",
"OR:Data.favorite:=":"1"
},{
"tags.value:IN": [\'Любовь\',\'Мышь\']
}]'
]}
Нет, так вообще не работает.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.