Допустим грузим продукцию, и допустим хотим фильтрацию по свойствам стандартным компонентом битрикса. Для того, чтобы указать свойства в фильтре им нужны символьные коды. Если свойств 10-20 пропишем вручную, если больше имеет смысл задуматься о генерации. Делается это очень просто, а именно через события. Мы будем вешать свои хендлеры на события OnBeforeIBlockPropertyAdd и на OnBeforeIBlockPropertyUpdate, в принципе из названия видно что это за события. Генерить код будем по названию. Стоит учесть, что коде могут быть только латинские символы, цифры и символы подчеркивания, длина не может быть более 20 символов (зачем же в структуре базы данных отведено 50? ) и рекомендуется писать коды в свойств в верхнем регистре (ну и общего аперкейсного стиля тоже стоит придерживаться). К счастью, в битриксе уже есть готовый код, который поможет нам преодолеть все эти условия.
AddEventHandler("iblock", "OnBeforeIBlockPropertyAdd", Array("IblockModifer", "OnBeforeIBlockPropertyAddHandler"));
AddEventHandler("iblock", "OnBeforeIBlockPropertyUpdate", Array("IblockModifer", "OnBeforeIBlockPropertyUpdateHandler"));
class IblockModifer
{
public function OnBeforeIBlockPropertyAddHandler(&$arFields)
{
if($arFields['IBLOCK_ID'] == 10 and empty($arFields["CODE"])){
$arParams = array("replace_space"=>"_","replace_other"=>"_", 'change_case' => 'U', 'max_len' => 20);
$tempCode = Cutil::translit($arFields['NAME'],"ru",$arParams);
$arFields['CODE'] = $tempCode;
}
}
public function OnBeforeIBlockPropertyUpdateHandler(&$arFields)
{
if($arFields['IBLOCK_ID'] == 10 and empty($arFields["CODE"])){
$arParams = array("replace_space"=>"_","replace_other"=>"_", 'change_case' => 'U', 'max_len' => 20);
$tempCode = Cutil::translit($arFields['NAME'],"ru",$arParams);
$arFields['CODE'] = $tempCode;
}
}
}
В своем случае я это делал для одного инфоблока и вязался по ID этого инфоблока, Вы можете делать как Вам угодно. Для полной красоты нужно прикрутить проверку на уникальность кода свойства, но в рамках моей задачи это не требовалось, хотя задуматься стоит.
А в чем смысл? Разве не проще работать только с кодами которые нужны (из 1С может и до 50 свойств прийти) и называть свойства осмысленно? Ведь так как то оегче программировать
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».