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

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

Посоветовали мне тут попробовать бесплатную панель управления...

SEO новинки в 14-ой версии Битрикс

Дошли руки до изучения новинок появившихся в 14-ой версии битрикса....

Дополнительные параметры в меню Битрикс

Иногда нужно присвоить какой-то функционал к конкретному пункту...

Сортировать товары по названию, цене и дате поступления в каталоге Битрикс

Достаточно часто заказчик просит вывести сортировку по цене,...

Материалы по теме в новостях Битрикс, с картинкой, названием и текстом анонса.

Расскажу как вывести материалы по теме в новостях Битрикс, с...

Валидация пароля и подтверждения при регистрации в битрикс

Встала задачка сделать валидацию пароля и его подтверждения ...

Свежие комментарии в блоге
Всплывающее окно с формой обратной связи Битрикс

Подскажите почему может не работать скрипт  BX.ajax.onload_943827 = function() {           setTime...

19.07.2017 / Рима Уколова
Вывести товары из того же раздела в карточке товара

Михаил, скажите пожалуйста, этот метод еще актуален? Никак не могу передать ни id ни символьный код,...

19.07.2017 / Алексей Сель
Панель управления хостином VESTA и 1С Битрикс, базовая оптимизация

Здравствуйте, Михаил. Постоянно вылетает ошибка БД при создании рез.копии битрикс. Создавал виртуалк...

14.07.2017 / Сергей Стефанович
Как вывести свойства инфоблока по отдельности и немного плюшек не в тему

Здравствуйте, хочу вывести цену отдельно от общего списка свойств, использую  [CODE] 11.07.2017 / Алексей Сель

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.

Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

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

x
Как к Вам обращаться? *
Ваша электронная почта: *
Доп. материалы (логотип, тех. задание):
 
Обзор
Текст сообщения:

Нажимая на кнопку "Отправить", Вы соглашаетесь на обработку Ваших персональных данных согласно политике конфеденциальности. Ознакомиться с которой, можно в нижнем правом углу сайта