Объединение SEO тегов элементов инфоблоков в Битриксе
Артем Житник
Изображение сгенерировано нейросетью Flux-Schnell на Эй, Бро!
Стандартное редактирование тегов выглядит следующим образом. Открываем элемент инфоблока, вкладку "SEO", в самом низу поле "Теги".
Начинаем вводить текст, Битрикс подсказывает варианты из ранее введенных тегов. Вроде бы удобно, однако отсутствует вариант группового редактирования элементов инфоблока. Нужно находить через фильтр такие элементы и каждый править. И это в то время когда космические корабли бороздят... Так не пойдет!
Накидал несложный компонент для объединения нескольких тегов в один, такая основная задача была. Глазами пользователя процесс выглядит так.
Выбираем сайт
На проекте многосайтовость поэтому сначала выбираем сайт.
Меню "Объединение тегов" добавил через файл admin/menu.php служебного модуля используемого для данного проекта.
Для удобства сделал динамическую страницу, данные ходят через ajax запросы без перезагрузки страницы.
Выбор тегов для объединения
Подгружаются теги для сайта, выводится шаг 2. Теги удобно брать из таблицы b_search_tags. Для удобства работы с таблицей сделал для них DataManager класс (стандартного не было на момент написания статьи).
Объединение выбранных тегов
Когда выбрано 2 и более тега, появляется 3 шаг. В нем мы можем кликнуть на тег и его имя скопируется в поле "Новое имя тега", а можем и сами ввести любое имя. Нажимаем кнопку "Объединить".
Выполняется ajax запрос, передается массив выбранных тегов, новое имя. Используем таблицы b_search_tags и b_search_content через мои DataManager обвязки для определения ID элементов инфоблоков которые будем менять. Делаем preg_replace текущих значений поля TAGS. Важно заменить не просто подстроку, а именно тег - строка отделенная от других запятой.
Пишется состояние "Успешно записано элементов инфоблоков: 3". Через 3 секунды обновляется список тегов на актуальный - старые уходят, 3 шаг скрывается, галочки на 2 шаге сбрасываются.
В перспективе можно прикрутить изменение тегов разделов инфоблоков и т.д. Собственно все, не уходя со страницы быстро приводим в порядок теги.