Расширение класса фильтрации
Привет!
Хочу немного расширить класс фильтрации в mFilter2.
У меня есть текстовое tv поле video, в которое пишется ссылка на youtube ролик. Хочу в фильтре выводить два чекбокса «Да» и «Нет». Если выбираем «Да», то остаются товары с видео, если «Нет», то без видео.
Прочитав про расширение класса фильтрации сделал по аналогии:
Фильтр работает и по клику показывает 153 товара со ссылкой на видео.
Подскажите, что я не правильно написал? Кто-то наверняка уже делал так…
Заранее спасибо!)
Хочу немного расширить класс фильтрации в mFilter2.
У меня есть текстовое tv поле video, в которое пишется ссылка на youtube ролик. Хочу в фильтре выводить два чекбокса «Да» и «Нет». Если выбираем «Да», то остаются товары с видео, если «Нет», то без видео.
Прочитав про расширение класса фильтрации сделал по аналогии:
public function buildYesNoFilter(array $values) {
if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
return array();
}
$results = array();
foreach ($values as $value => $ids) {
$title = (is_null($value))
? $this->modx->lexicon('mse2_filter_boolean_no')
: $this->modx->lexicon('mse2_filter_boolean_yes');
$value = is_null($value)? '0' : '1';
if (!isset($results[$value])) {
$results[$value] = array(
'title' => $title
,'value' => $value
,'type' => 'yesno'
,'resource' => array()
);
}
foreach ($ids as $id) {
$results[$value]['resources'][] = $id;
}
}
ksort($results);
return $results;
}
// Собственно фильтрация, берём за основу filterNumber
public function filterYesNo(array $requested, array $values, array $ids) {
$matched = array();
$tmp = array_flip($ids);
foreach ($values as $number => $resources) {
if (is_null($number)) {
foreach ($resources as $id) {
if (isset($tmp[$id])) {
$matched[] = $id;
}
}
}
elseif (!is_null($number)) {
foreach ($resources as $id) {
if (isset($tmp[$id])) {
$matched[] = $id;
}
}
}
}
return $matched;
}
В вызове фильтра делаю так:&filters=`tv|video:yesno`
При этом у меня появляется только чекбокс с надписью «Да»… а с «Нет» не появляется…Фильтр работает и по клику показывает 153 товара со ссылкой на видео.
Подскажите, что я не правильно написал? Кто-то наверняка уже делал так…
Заранее спасибо!)
Комментарии: 1
foreach ($values as $value => $ids) {
$title = (is_null($value))
Что-то я сильно сомневаюсь, что null может быть ключом массива.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.