Здравствуйте!
Создаю набор для типа контента и выставляю для него несколько условий фильтров. Эти несколько условий работают как "И". Если какой-то вариант, чтобы для определенных фильтров эти услови я работал как "ИЛИ".?
Пример. Есть объявление. В нем есть поле 1 и поле 2. Хочу вывести в наборе все объявления, в которых или поле 1 или поле 2 пустое.
#1
17 сентября 2019 в 10:34
#2
17 сентября 2019 в 12:22
Вроде получилось. но это с помощью правок кода. Возможно кому-то поможет. У меня работает.
Поправил файл /system/core/model.php
Находим public function applyDatasetFilters($dataset, $ignore_sorting = false){
там код
меняем на
Так же меняем файл /system/controllers/admin/forms/form_ctypes_dataset.php
вместо кода
вставляем код
После чего можно в наборе в фильтре добавить всего одно поле, любое и выбрать для него тип MyCondition. а в пустом поле справа я написал свое уловие отбора. примерно такое field_01 is null or field_01 = 0 or field_02 is null or field_02 = 0.
Поправил файл /system/core/model.php
Находим public function applyDatasetFilters($dataset, $ignore_sorting = false){
там код
switch($filter['condition']){ // общие условия case 'eq': $this->filterEqual($filter['field'], $filter['value']); break;
switch($filter['condition']){ case 'fi': $this->filter($filter['value']); break; // общие условия case 'eq': $this->filterEqual($filter['field'], $filter['value']); break;
вместо кода
'eq' => '=', 'gt' => '>', 'lt' => '<', 'ge' => '≥', 'le' => '≤', 'nn' => LANG_FILTER_NOT_NULL, 'ni' => LANG_FILTER_IS_NULL ), 'eq' => '=', 'lk' => LANG_FILTER_LIKE, 'ln' => LANG_FILTER_NOT_LIKE, 'lb' => LANG_FILTER_LIKE_BEGIN, 'lf' => LANG_FILTER_LIKE_END, 'nn' => LANG_FILTER_NOT_NULL, 'ni' => LANG_FILTER_IS_NULL ), 'eq' => '=', 'gt' => '>', 'lt' => '<', 'ge' => '≥', 'le' => '≤', 'dy' => LANG_FILTER_DATE_YOUNGER, 'do' => LANG_FILTER_DATE_OLDER, 'nn' => LANG_FILTER_NOT_NULL, 'ni' => LANG_FILTER_IS_NULL
'eq' => '=', 'gt' => '>', 'lt' => '<', 'ge' => '≥', 'le' => '≤', 'nn' => LANG_FILTER_NOT_NULL, 'ni' => LANG_FILTER_IS_NULL, 'fi' => 'My condition' ), 'eq' => '=', 'lk' => LANG_FILTER_LIKE, 'ln' => LANG_FILTER_NOT_LIKE, 'lb' => LANG_FILTER_LIKE_BEGIN, 'lf' => LANG_FILTER_LIKE_END, 'nn' => LANG_FILTER_NOT_NULL, 'ni' => LANG_FILTER_IS_NULL, 'fi' => 'My condition' ), 'eq' => '=', 'gt' => '>', 'lt' => '<', 'ge' => '≥', 'le' => '≤', 'dy' => LANG_FILTER_DATE_YOUNGER, 'do' => LANG_FILTER_DATE_OLDER, 'nn' => LANG_FILTER_NOT_NULL, 'ni' => LANG_FILTER_IS_NULL, 'fi' => 'My condition'
#3
18 сентября 2019 в 15:53
vladimird,
Спасибо!
Сделал компонент, добавляющий этот функционал без правки системных файлов:
/blogs/zapiski-dinozavra/komponent-dlja-manipuljaci-filtraciei-i-sortirovkoi-v-datasetah.html
Спасибо!
Сделал компонент, добавляющий этот функционал без правки системных файлов:
/blogs/zapiski-dinozavra/komponent-dlja-manipuljaci-filtraciei-i-sortirovkoi-v-datasetah.html
Сегодня в 18:19
#4
18 сентября 2019 в 16:13
Это просто отлично, спасибо! компонентом гораздо лучше и плюс еще сортировочка получилась.
Эх, когда нибудь кармы наберу и тоже создам свой маленький блог на этом сайте.
Эх, когда нибудь кармы наберу и тоже создам свой маленький блог на этом сайте.