Войти

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

Автогенерация символьных кодов разделов и элементов Битрикс
Просмотров: 6246 | Комментариев: 8

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

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

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

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

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

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

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

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

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

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

Кроме создания сайтов, я так же веду блог с заметками о вебразработке, записываю бесплатные видеоуроки и содержу форум, на котором можно задавать вопросы и просто общаться. Заметки, преимущественно - это короткие или подробные рецепты, по реализации часто требуемого функционала- в рамках разработки сайтов на 1С-Битрикс

Показать еще
Заказать разработку:
Как к Вам обращаться? Электронная почта для ответа Коротенечко о задаче
ТЗ, любые файлы связанные с проектом или заполненный опросник скачать опросник. Загрузить файлы