ГлавнаяБлогБитрикс ЧПУ: готовим символьный код элемента [bitrix api]

Битрикс ЧПУ: готовим символьный код элемента [bitrix api]

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
3 февраля 2010 г.
1 мин чтения

Решение для автоматического заполнения поля CODE в Битриксе при добавлении элементов инфоблока. Код размещается в bitrix/php_interface/init.php.

Функция транслитерации

function translit($str)  
{  
$tr = array(  
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",  
"Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",  
"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",  
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",  
"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",  
"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",  
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",  
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",  
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",  
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",  
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",  
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",  
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",  
" "=> "-", "."=> "", "/"=> "-"  
);  
return strtr($str,$tr);  
}  

Обработчик события

AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyEvent", "OnBeforeIBlockElementAddHandler"));
 
class MyEvent  
{  
function OnBeforeIBlockElementAddHandler(&$arFields)  
{  
$s_Name = trim($arFields['NAME']);
 
if(strlen($arFields['CODE']) <= 0) { 
$arFields['CODE'] = translit($s_Name); 
}
}  
}  

Эта функциональность должна была быть в Битриксе по умолчанию. В комментариях читатели указывают на существование встроенной функции транслитерации в самом Битриксе — стоит проверить перед использованием кастомного варианта.