Поле Список: мультивыбор с или

InstantCMS 2.X

новое поле, которое фильтрует по принципу ИЛИ внутри одного поля

#1 5 апреля 2023 в 13:45

Поле сделано еще в январе для одного интернет-магазина. Как оказалось, логика с И в базовом поле Мультивыбор никак не подходит для характеристик товаров. 

Протестировать можно на демо demo.bergorod.ru/articles или скачать архив и тестировать на своем сайте.

Особенности

Без них не обошлось. Новое поле хранит данные в другом формате, поэтому нельзя просто сменить старое поле на это и использовать «ИЛИ-логику». Поле подойдет только для использования на новых проектах.

Бонус

Данное поле на том самом интернет-магазине используется также и в свойствах категорий. В ближайшее время соберу еще один архив, и объяснения, как сделать также. А также там будет хук, который позволит использовать обычное поле Мультивыбор в свойствах категорий и не ломать фильтр при добавлении новых вариантов. Сейчас, к сожалению, происходит именно так.

Прикрепленный файл
listindex20230404-1-0-0.zip 3 Кб
#2 6 апреля 2023 в 15:57

Итак. В приложении архив list_fix20230404_1.0.0.zip для фикса двух проблем.

1. При использовании «Мультивыбор» в свойствах категории есть проблема. Если добавить варианты в настройках «Элементы списка», то сломается фильтрация. Свойство в категории перестанет искать совпадения.
Для полей это уже поправлено таким образом github.com/instantsoft/icms2/blob/fbeebde236f2a5206fdac941a8a939e7b515b7e3/system/fields/listbitmask.php#L203
Но этот код срабатывает ТОЛЬКО при сохранении полей. При сохранении свойств «сломаная» битовая маска не «чинится»
Эту проблему исправляет файл system/controllers/zfixlistbitmaskprops/hooks/ctype_prop_before_update.php фикса

Но чтобы хук сработал в версии 2.15.2 и ниже, нужно внести правку в файл system/controllers/content/backend/model.php как тут
 github.com/instantsoft/icms2/pull/1440/commits/f67d8c02797b090d210dfdc07aad84e0f5f635c6
С версии 2.16.0 эта правка будет «в коробке»

2. В свойствах категорий можно использовать только определенный набор полей, которые перечислены тут github.com/instantsoft/icms2/blob/fbeebde236f2a5206fdac941a8a939e7b515b7e3/system/controllers/admin/forms/form_ctypes_prop.php#L63
Для добавления в этот список нового поля «Мультивыбор с или» и предназначен файл system/controllers/listindex/hooks/form_admin_ctypes_prop.php фикса
Правка будет работать в 2.15.2 и ниже, в 2.16.0 будут изменения в js файлах админки, и возможно понадобится немного изменить js код фикса.

Прикрепленный файл
list-fix20230404-1-0-0.zip 5 Кб
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.