Телеграм: @camouf_ru Почта: mihail@bazarow.ru

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

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

Иногда нужно создать символьные коды для разделов и элементов. Например: если сайт создан давно и ранее работал на 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, все равно не создаются символьные кода. Чувствую, себя немного как буратино)) на поле, куда копать не понимаю, зачем не понимаю, в ТП написали, что перешлют в отдел разработок, но все мы знаем, отдел разработок разрабатывает что-то другое, но не этот модуль!)) Так что, если не трудно, кто успешно спраляется с ткой задачей на раз, может немного поможете!))

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Получить множественное пользовательское поле раздела. Значения множес... Просмотров: 356 Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно п... Мобильные версии страниц и поисковые системы Просмотров: 5848 Согласно требования поисковых систем: Яндекс и Google, в случае если у вашего сайта имеетс... Скопировать номер телефона из поля пользователя в телефон для регистр... Просмотров: 1629 Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режи... Создание скидки на общую сумму покупки в Битрикс корзине Просмотров: 26959 Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать м... Отфильтровать новости в Битрикс за заданный период Просмотров: 15590 Иногда, нужно отфильтровать элементы (новости например) по дате в Битрикс, с помощью компо... Вывести компонент новостей на страницу в Битрикс Просмотров: 63592 Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, ч... Заполнить поля пользователя из свойства заказа, на примере ФИО Просмотров: 1199 При создании заказа покупатель заполняет поле "ФИО". Необходимо скопировать эти данные в п... Заполнение габаритов товара, после обмена с 1С, из свойств элемента и... Просмотров: 10422 Если Ваш интернет-магазин интегрирован с 1С, скорее всего столкнулись с такой проблемой: 1... Отфильтровать товары бренда и вывести по разделам каталога Просмотров: 651 Задача: на странице бренда, который выводится компонентом новостей, нужно показать все тов... Дополнительные параметры в меню Битрикс Просмотров: 19336 Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например о... Фиксированная корзина с обновлением, без перезагрузки страницы. Просмотров: 17499 Иногда нужно сделать так, чтобы корзина в интернет магазине, созданном на Битрикс, была по... Заполнить картинки разделов каталога из картинок товаров Просмотров: 337 Задача: в каталоге, разделы и подразделы выводятся в виде плитки над товарами, с картинкам... Время на БД и веб сервере отличается на 3600 секунд, тест Битрикс Просмотров: 15306 Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок... Вывести производителей на сайте с отбором его товаров из каталога Просмотров: 18242 Достаточно частая задачка для каталога или интернет-магазина: вывести список производителе... Установить цену товара из свойства инфоблока Просмотров: 8713 На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока... Пошагово получить информацию о заказах и сохранить как Excel (xls) Просмотров: 533 Задача: Нужно получить информацию о заказах с возможностью указания даты создания "от"" и ... Вывести разделы инфоблока в которых находится элемент Битрикс Просмотров: 16018 Если нужно в карточке товара или новости, вывести структуру разделов в котором находится э... Цвета торговых предложений из Highload инфоблоков в списке товаров Просмотров: 14086 Подвернулся на доработку очень старый сайт, работал еще на 11-ой версии Битрикс. Выполнили... Вывести множественное свойство типа файл с названием и весом файла в ... Просмотров: 20203 В этой заметке расскажу как красиво вывести множественное свойство типа файл в инфоблоке 1... Малая корзина Битрикс, упрощенный шаблон Просмотров: 12543 Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке ...