Не верная работа Фильтра поля Список:мультивыбор

InstantCMS 2.X
#61 4 января 2019 в 17:54


Если удалить у кого выбрано Значение, оно в записи пропадет.

@elv
Ну так это и правильно же.

Вопрос в том можно ли без хаков использовать его в свойствах. Подозреваю что нет. Таким образом оно становится бесполезным для большинства.… Вот где затык.

@Demonstrator
Я отношусь к тому меньшинству, которое, испробовав все прелести свойств благополучно от них отказалось, поэтому сей "затык" меня минует. Правда парочка свойств осталось, всё же, но при первой возможности и с ними распрощаюсь.

vikont, автоссылки нет?

Yar

А чем свойства так плохи? Поясните пожалуйста, раз опыт есть.
#62 4 января 2019 в 18:01

vikont, автоссылки нет?

Yar
Вот все, что тут есть:

Этого хватит? smile

ПС. Забыл уточнить — это последняя версия поля, в которой есть возможность прямо из редактора добавлять в список, а так же автоматичеки добавлять записи из заголовка статьи.

И конечно работает быстрый поиск по набранным буквам… все очень удобно.
#63 4 января 2019 в 18:20

А чем свойства так плохи?

@Milyana

Свойства не выводятся в список записей
Свойствам не может быть назначен css
Список мультивыбор не корректно работает при фильтрации

Плюсы: Свойства можно назначить категориям из коробки

Полям и Свойствам нельзя выставить порядок отображения

Некоторые поля можно использовать в Наборах

Минусы Полей: нельзя назначить категориям из коробки
В виджете Фильтр + не отображаются как Свойства в выпадающем окне
#64 4 января 2019 в 18:23
Возможно плезнее было бы, иметь в свойствах некое универсальное поле, которое было бы способно содержать в себе любое уже существующее или новое поле или виджет. Создал поле, указал что в нем выводить и все. Тогда действительно можно было бы играть с полями как угодно.
#65 4 января 2019 в 18:28

А чем свойства так плохи? Поясните пожалуйста, раз опыт есть.

@Milyana
На вскидку:
Отображаются в записи отдельно от полей. Чтоб что-то изменить, нужно ковырять шаблон.
Нельзя сделать общий фильтр на главной странице раздела. Свойства отображаются в фильтре только в своих категориях.
Типов свойств меньше, чем типов полей.
нельзя сделать подсказку, как для поля.

vikont, автоссылка имеется. Ещё какие-то не понятные режимы есть, но лучше больше, чем меньше. smile
#66 4 января 2019 в 18:31

Возможно плезнее было бы, иметь в свойствах некое универсальное поле

@Demonstrator
Поддерживаю. На Github в предлоения для реализации!
#67 4 января 2019 в 18:34

Нельзя сделать общий фильтр на главной странице раздела.

Yar
Это почему? Разве здесь не так? Поле здесь только Возрастные группы, остальное свойства.
#68 4 января 2019 в 19:02

vikont, автоссылка имеется. Ещё какие-то не понятные режимы есть, но лучше больше, чем меньше.

Yar
1. Режим дебага — подсвечивает записи, в которых не заполнено поле. Удобно при переходе на поле с уже имеющимся контентом. Помогает быстрее отредактировать новое поле в записи.
2. Возможность добавления названия записи в свойства — в редакторе появляется чекбокс Копировать заголовок в свойство
3. Возможность добавления значений в поле — разрешает добавление значений в поле прямо из редактора
#69 4 января 2019 в 19:11
vikont, свой фильтр в каждой категории. А здесь пробовали вывести поиск по всем категориям -/video? А вот по полям любым можно искать с главной страницы раздела. Иногда это нужно, сразу показать записи из разных категорий, ибо не каждый пользователь будет что-то искать заходя в каждую категорию.
#70 4 января 2019 в 19:29

Иногда это нужно, сразу показать записи из разных категорий, ибо не каждый пользователь будет что-то искать заходя в каждую категорию.

Yar
Теоретически вы правы, но зачем тогда вообще нужны категории? Замените их полем и организуйте все через поля!
Чтобы народ не терзался в сомнениях, там где надо я отключил показ контента из подкатегорий и народ автоматически переходит дальше, в подкатегории. Надо выстраивать логическую цепочку и следовать ей, а не хотелкам отдельных адептов анархии… :))))
#71 4 января 2019 в 19:58
Категории для порядка и для поиска. И фильтр для поиска. И Яндекс для поиска. И ещё есть методы облегчающие поиск материала. И их нужно все проработать, так как разные посетители и ищут по разному. Вы предлагаете сначала человеку выбрать категорию, а затем фильтр. И такой вариант должен быть, конечно. А я еще хочу чтоб фильтр был один для всех записей типа контента на главной странице и человек сразу нашёл то, что нужно, а не рыскал по разделам. Чем проще будет человеку, тем больше радости админу.
#72 4 января 2019 в 20:15

Чем проще будет человеку, тем больше радости админу.

Yar
Спорить не буду! Я о другом, системно-тематическом подходе, об уже сложившихся стереотипах разделения тем. Возмем тот же сайт для дошколят, кому вздумается в голову искать материалы по математике в разделе по лепке? Вод в таких случаях разделение на категории оправдано и даже полезно, так как поиск происходит в тематическом разделе, а не перерывается зря вся база!
А поиск с главной — это особая тема разговора! Лучше чем монстры поисковики не ищет ни одна программа! И у них есть возможность встроить такой алгоритм в сайт, НО, они ничего не находят на сайте пока не проиндексируют!
#73 4 января 2019 в 20:40
Искать сразу в двух Подкатегориях удобно и быстро, например, человек хочет найти фильм 2018 года, а комедия или триллер не важно. Возможно будет дольше искать.
Без общих Полей нужно будет в каждой Подкатегории искать 2018 год в разных вкладках, возможно в разных браузерах
Сравнения Записей еще нет.
#74 4 января 2019 в 21:34
Все верно! У каждой информации есть своя специфика!
Как и верно то, что вы не станете искать фильмы в разделе все для огорода! Именно это я и имел ввиду.
#75 15 июня 2020 в 20:12
Тоже заморочился с реализацией логики "ИЛИ" на мультивыборе. Второй день ковыряю.
Вот решение, вроде работает.
В \system\core\model.php
  1. public function filterOrBitMask($field, $value){
  2. if (strpos($field, '.') === false){ $field = 'i.' . $field; }
  3. $value = bindec($value);
  4. $this->filter("$field & '$value' > 0");
  5. return $this;
  6. }
Эту функцию логично вставить после filterLike.
Далее идем в БД и находим системное имя вашего поля с мультивыбором — меняем его тип со строки на int(<число бит>) unsigned zerofill
Далее идем в \system\fields\listbitmask.php и находим функцию applyFilter
И чтобы ничего не ломать стандартного, просто ставим условия.
  1. public function applyFilter($model, $values) {
  2.  
  3. if (!is_array($values)) { return parent::applyFilter($model, $values); }
  4.  
  5. $filter = $this->parseValue($values);
  6. if (!$filter) { return parent::applyFilter($model, $values); }
  7. if($this->name == 'MY_FIELD1' || $this->name == 'MY_FIELD2' || $this->name == 'MY_FIELD3'){ // начало условия
  8.  
  9. return $model->filterOrBitMask($this->name, $filter);
  10. } // конец условия
  11. $filter = str_replace('0', '_', $filter) . '%';
  12.  
  13. return $model->filterLike($this->name, $filter);
  14.  
  15. }
В целом, здесь выборка должна работать быстрее, чем через LIKE с шаблоном, как изначально предусмотрел разработчик.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.