Блог

30.09.2016

Автоматическая генерация символьного кода (Битрикс)

Если у вас в Битриксе настроен ЧПУ («человекопонятный урл») с использованием «символьного кода» элемента, что очень способствует продвижению сайта в поисковых системах, то было бы неплохо этот самый «символьный код» генерировать автоматически из названия. Конечно, если у Вас данный параметр активен, то при создании нового элемента всё будет "Ok", но как поступать, когда у Вас уже имеются элементы у которых он отсутствует.

Выход следующий:

Добавим свой обработчик для событий OnBeforeIBlockElementAdd (вызывается до вставки информационного блока) и OnBeforeIBlockElementUpdate (вызывается до изменения элемента информационного блока) в файл /bitrix/php_interface/init.php вашего сайта:

<?php
/**
* Транслит имени в символьный код (для ЧПУ)*/
function slugTranslit(&$arFields) {
// Если заполнено имя и не заполнен символьный код
if (strlen($arFields["NAME"]) > 0 && strlen($arFields["CODE"]) <= 0) {
$arParams = array(
"max_len" => "100", // обрезаем символьный код до 100 символов
"change_case" => "L", // приводим к нижнему регистру
"replace_space" => "-", // меняем пробелы на тире
"replace_other" => "-", // меняем плохие символы на тире
"delete_repeat_replace" => "true", // удаляем повторяющиеся тире
"use_google" => "false", // отключаем использование google
);
$arFields["CODE"] = Cutil::translit($arFields["NAME"], "ru", $arParams);
}
}
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", 'slugTranslit');
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", 'slugTranslit');
?>

Если файл init.php отсутствует, то создайте его и скопируйте выше написанный код. Будьте внимательны, заметил, что битрикс не особо любит лишние пробелы в этом файле)

Вот и всё. Спасибо за внимание ..

Спасибо порталу kobzarev.com за статью.


Название: Автоматическая генерация символьного кода (Битрикс)
Картинка для анонса: 
Детальное описание: 

Выход следующий:

Добавим свой обработчик для событий OnBeforeIBlockElementAdd (вызывается до вставки информационного блока) и OnBeforeIBlockElementUpdate (вызывается до изменения элемента информационного блока) в файл /bitrix/php_interface/init.php вашего сайта:

<?php
/**
* Транслит имени в символьный код (для ЧПУ)*/
function slugTranslit(&$arFields) {
// Если заполнено имя и не заполнен символьный код
if (strlen($arFields["NAME"]) > 0 && strlen($arFields["CODE"]) <= 0) {
$arParams = array(
"max_len" => "100", // обрезаем символьный код до 100 символов
"change_case" => "L", // приводим к нижнему регистру
"replace_space" => "-", // меняем пробелы на тире
"replace_other" => "-", // меняем плохие символы на тире
"delete_repeat_replace" => "true", // удаляем повторяющиеся тире
"use_google" => "false", // отключаем использование google
);
$arFields["CODE"] = Cutil::translit($arFields["NAME"], "ru", $arParams);
}
}
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", 'slugTranslit');
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", 'slugTranslit');
?>

Если файл init.php отсутствует, то создайте его и скопируйте выше написанный код. Будьте внимательны, заметил, что битрикс не особо любит лишние пробелы в этом файле)

Вот и всё. Спасибо за внимание ..

Спасибо порталу kobzarev.com за статью.


Детальная картинка: 
Начало активности (дата): 30.09.2016 11:04:27
Дата создания: 30.09.2016 11:04:48
Кем создан (ID): 1
Кем создан (имя): (admin) Виталий Элс

Возврат к списку

Хотите посотрудничать? Contact Us

Подписаться на обновления

Согласен