Strict Standards: Declaration of PluginAceadminpanel_ModuleLang::Get() should be compatible with ModuleLang::Get($sName, $aReplace = Array, $bDelete = true) in /home/deer/pages.org.ua/blog/plugins/aceadminpanel/classes/modules/lang/Lang.class.php on line 21 Strict Standards: Declaration of PluginAceadminpanel_ModuleViewer::_SortBlocks() should be compatible with ModuleViewer::_SortBlocks($a, $b) in /home/deer/pages.org.ua/blog/plugins/aceadminpanel/classes/modules/viewer/Viewer.class.php on line 24 свойства / Поиск по тегам / BPOU - Bitrix blog

Тип «Флажок» для свойства инфоблока

При создании дополнительных свойств инфоблока мы можем выбрать один из множества типов, например:

* Строка
* Число
* Список
* Привязка к разделам или элементам
* Файл
* и многие другие

Проблема возникает, когда мы хотим создать поле, значение которого бинарно — либо «да», либо «нет».

До сих пор лично я исхитрялся делать простое текстовое поле и предупреждать пользователей, чтобы писали туда либо «N», либо «Y». Они при этом писали всякую фигню (это присуще пользователям).

Поэтому пришлось мне сесть и написать дополнительный тип свойства — флажок, который сам в базу данных пишет либо «Y», либо «N».

Для установки дополнительного типа свойств в Битрикс, произведите следующие действия:

1. Скачайте и распакуйте куда-нибудь в свой компьютер архив (правой кнопочкой по ссылке — сохранить объект как; вес — 3 КБ; кодировка — юникод).

2. Скопируйте файл prop_checkbox.php в папку: <ваш сайт>/bitrix/templates/.default/

3. В файл /bitrix/php_interface/init.php допишите следующие две команды для подключения этого типа:

include($_SERVER['DOCUMENT_ROOT'] . '/bitrix/templates/.default/prop_checkbox.php');
AddEventHandler("iblock", "OnIBlockPropertyBuildList", Array("CIBlockPropertyCheckbox", "GetUserTypeDescription"));


После этого при создании полей инфоблока у вас появится в выборе вариант «Флажок (Y/N)».

Примеры использования:
Найти все элементы инфоблока, у которых значение свойства BLA_BLA равно «да»:
CIBlockElement::GetList(array(), array('PROPERTY_BLA_BLA' => 'Y'));


Найти все элементы инфоблока, у которых значение того же свойства не равно «да»:
CIBlockElement::GetList(array(), array('!PROPERTY_BLA_BLA' => 'Y'));


автор: Евгений Неверов
  • 0
  • 16 февраля 2010, 12:00
  • admin