Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля
Новогодние скидки до 25%!
Подробнее

Автогенерация ключевого слова объекта   Партнерский модуль

бесплатно
Скачать
promo
Данное решение позволяет автоматически генерировать и добавлять валидное ключевое слово объекта из поля наименования объекта.
Для реализации такого функционала необходимо добавить данный код в "Условия добавления объекта" и в "Условия изменения объекта".

Код:

// добавление ключевого слова объекта на основе названия
if (!$f_Keyword) {
$search1 = array("--");
$search2 = array("'", "(", ")", "«", "»", "!", "?");
$urlstr = $f_Name;
if (preg_match('/[^A-Za-z0-9_\-]/', $urlstr)) {
$urlstr = nc_transliterate("$f_Name");
$urlstr = str_replace($search2,"",$urlstr);
$urlstr = preg_replace('/[^A-Za-z0-9_\-]/', '-', $urlstr);
}
$f_Keyword = mb_strtolower(str_replace($search1,"-",$urlstr));
$f_Keyword = str_replace($search1,"-",$f_Keyword);
//проверяем $f_Keyword на повторяемость
if ($nc_core->db->get_var("SELECT `Message_ID` FROM `Message{$classID}` WHERE `Keyword` = '{$f_Keyword}'")) {
$warnText = 'Такое ключевое слово уже существует. Измините ключевое слово вручную';
}
}


В массив $search1 можно добавлять все то, что нужно дополнительно заменить на знак "-", в массив $search2 можно добавлять все знаки которые нужно дополнительно удалять из ключевого слова.
бесплатно

Комментарии 2

Станислава 24 декабря 2018, 11:04:50
Работает!
Но не забудьте в настройках маршрутизации заменить путь к объекту, должен выглядеть примерно так:
/{folder}/{object_keyword}
Иван  SeoMachine 13 августа 2020, 13:34:05
Сделал свой вариант, при нахождении дубликатов подставляет в конец уникальное число

if(!$f_Keyword) {$f_Keyword = KeyUrl($f_Name);}

function KeyUrl($var) {
$new_key = nc_transliterate($var,$use_url_rules=true);
$nc_core = nc_Core::get_object();
$sql_key = $nc_core->db->get_var("SELECT `Keyword` FROM `Message2008` WHERE `Keyword` = '{$new_key}'");
if ($sql_key != $new_key) {
$key = $new_key;
} else {
if(preg_match("#(.*?)-([\d]+)$#", $new_key, $out)) {
$key = KeyUrl($out[1]."-".($out[2]+1));
} else {
$key = KeyUrl($new_key."-1");
}
}
return $key;
}

Также добавить данный код в "Условия добавления объекта" и в "Условия изменения объекта".
оставить комментарий
Описание проекта