G
N
I
D
A
O
L

Иногда нужно создать символьные коды для разделов и элементов. Например: если сайт создан давно и ранее работал на ID секций и элементов. Сделать можно через API битрикс

Добавление обработчика в Битрикс

Для автогенерации символьных кодов, не зависимо от того, каким образом попадают разделы и элементы на сайт (выгрузка из xml или ручное добавление), достаточно в файл /bitrix/php_interface/init.php добавить вот такой код

 

	<?

	AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass40", "OnBeforeIBlockElementAddHandler"));

	class MyClass40

	{

	    function OnBeforeIBlockElementAddHandler(&$arFields)

	    {

	    $name = $arFields["NAME"];

	        $arParams = array("replace_space"=>"-","replace_other"=>"-");

	        $trans = Cutil::translit($name,"ru",$arParams);

	    $arFields["CODE"] = $trans;

	    }

	}

AddEventHandler("iblock", "OnBeforeIBlockSectionAdd", Array("MyClass50", "OnBeforeIBlockSectionAddHandler"));
	class MyClass50
	{
	    function OnBeforeIBlockSectionAddHandler(&$arFields)
	    {
	    $name = $arFields["NAME"];
	        $arParams = array("replace_space"=>"-","replace_other"=>"-");
	        $trans = Cutil::translit($name,"ru",$arParams);
	    $arFields["CODE"] = $trans;
	    }
	}
	?>

Само собой, если сайт новый, то автогенерация вполне спокойно настраивается при создании инфоблоков, или в настройках Импорта с 1С. В большей степени, данный метод применим для уже работающих сайтов, которые хотят перейти с ID на CODE в разделах и элементах

Способ подсмотрен в блогах Битрикс