mFilter2: как вывести фильтр с пустым значением TV?
Всем привет!
Друзья, подскажите, пожалуйста решение задачи: создал свой фильтр для вывода товаров (обычные страницы с TV), который переключает дорогие либо дешевые товары (дороже 340000 или дешевле). За основу брал метод boolean. Как сделать, чтобы и в случае дешевых и в случае дорогих товаров выводились так же товары без цены?
Друзья, подскажите, пожалуйста решение задачи: создал свой фильтр для вывода товаров (обычные страницы с TV), который переключает дорогие либо дешевые товары (дороже 340000 или дешевле). За основу брал метод boolean. Как сделать, чтобы и в случае дешевых и в случае дорогих товаров выводились так же товары без цены?
<?php
class myCustomFilter extends mse2FiltersHandler {
public function buildClassFilter(array $values) {
if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
return array();
}
$results = array();
$this->modx->lexicon->load('aveo:default');
foreach ($values as $value => $ids) {
$chip = empty($value) || (is_numeric($value) && (int)$value <= 340000);
$title = $chip
? $this->modx->lexicon('affordable')
: $this->modx->lexicon('elite');
if (!isset($results[$value])) {
$results[$value] = array(
'title' => $title,
'value' => (int)!$chip,
'type' => 'class',
'resources' => array()
);
}
foreach ($ids as $id) {
$results[$value]['resources'][] = $id;
}
}
ksort($results);
return $results;
}
public function filterClass(array $requested, array $values, array $ids) {
$matched = array();
$value = $requested[0];
$tmp = array_flip($ids);
foreach ($requested as $value) {
foreach ($values as $k => $resources) {
$chip = empty($k) || (is_numeric($k) && (int)$k <= 340000);
if ((empty($value) && !$chip) || (!empty($value) && $chip)) {
continue;
}
foreach ($resources as $id) {
if (isset($tmp[$id])) {
$matched[] = $id;
}
}
}
}
return $matched;
}
}
Заранее благодарен за ваши ответы.