Меню

Автогенерация символьных кодов разделов и элементов Битрикс

Просмотров: 19622

Иногда нужно создать символьные коды для разделов и элементов. Например: если сайт создан давно и ранее работал на 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 в разделах и элементах

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

Видео: Вариант применения данного способа

Видео- запись трансляции, без монтажа, потому с провисаниями. Бонусом- способ удалить большой каталог если не удаляется:

Андрей 28.01.2016
Михаил у меня сразу вопрос напрашивается, Вы сменили более 5 тыс. УРЛ на товары разделы и т.д., а как решили вопрос с поисковиками которые индексили весь сайта все время (сайт же не новый)? Просто про редирект я не услышал, тоесть получится много битых УРЛ - 404 страниц, может что упустил.

Спасибо за ответ.

P.S. Думаю капча на комменты лишняя.
Михаил Базаров 29.01.2016
Цитата
Андрей пишет:
Михаил у меня сразу вопрос напрашивается, Вы сменили более 5 тыс. УРЛ на товары разделы и т.д., а как решили вопрос с поисковиками которые индексили весь сайта все время (сайт же не новый)? Просто про редирект я не услышал, тоесть получится много битых УРЛ - 404 страниц, может что упустил.

Спасибо за ответ.

P.S. Думаю капча на комменты лишняя.
Да, редиректа 301 не будет, по сути СЕО жизнь сайта с нуля. Можно попробовать сгенерировать редиректы со старых путей на новые- но достаточно заморочистая процедура, ручной работы (при минимум 5000 адресов, а еще на разделы-подразделы) будет очень много.

PS Капча не лишняя, спамеры одолевают сильно, боюсь и регистрацию придется сделать со временем.
Дмитрий Жева 21.08.2016
Михаил, а если символьный код во многих разделах одинаковый, но разделы то разные. И в итоге глюки. Как сделать чтобы все ровно было?
Михаил Базаров 21.08.2016
Цитата
Дмитрий Жева написал:
Михаил, а если символьный код во многих разделах одинаковый, но разделы то разные. И в итоге глюки. Как сделать чтобы все ровно было?
А как так получилось? Если разделы разные-то и символьные кода генерированы из них, транслитерацией или переводом но разные.
С одинаковыми тяжело жить, отрефакторите это дело
Дмитрий Жева 03.11.2016
Михали, я умудрился поставить битрикс 16.5 на php7, все летает. Но ваш код не работает на нем. Можете правильный код написать для PHP7? Спасибо.
Роман Юшкин 11.09.2019
Михаил Базаров, пользуясь случаем, хочу спросить про ручное добавление элементов с транслитеризацией символьного кода через add element, у меня нет по адресу /bitrix/php_interface/ файла init.php
И при его создании и внедрении в него этого кода, падает весь битрикс, экран с ошибками. Подскажите в чем может быть дело и что с этим можно сделать
Роман Юшкин 11.09.2019
Скажу больше, просто при создании файла init.php  падает вся система управления, даже если файл пустой
Роман Юшкин 11.09.2019
Через ftp все загрузилось, стоит. Но через add element, все равно не создаются символьные кода. Чувствую, себя немного как буратино)) на поле, куда копать не понимаю, зачем не понимаю, в ТП написали, что перешлют в отдел разработок, но все мы знаем, отдел разработок разрабатывает что-то другое, но не этот модуль!)) Так что, если не трудно, кто успешно спраляется с ткой задачей на раз, может немного поможете!))
Леся 17.04.2024
Подскажите можно ли настроить генерацию символьного идентификатора при создании Группы пользователей?
Михаил Базаров 17.04.2024
Да, глянте в документации событие OnBeforeGroupAdd

Стоимость и сроки разработки сайтов и приложений

Окончательная стоимость и сроки разработки сайта формируются после обсуждения деталей на этапе заказа. Как правило, они редко выходят за обозначенные ниже рамки.

Интернет магазин: разработка с нуля от 400 000 руб.
от 5-ти недель

Cоздание интернет-магазина на 1С-Битрикс. Разработка с нуля, оптимизация кода под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Сайт на готовом решении / шаблоне от 150 000 руб.
от 7-ми дней

Готовое решение — вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Запускается на одном из 200-та (на ваш выбор) готовых решений.

Мобильное приложение от 400 000 руб.
от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Вы можете скачать развернутый опросник на разработку. После ознакомления, задам уточняющие вопросы и оценю проект по стоимости и срокам разработки.