Битрикс — Как установить meta description из детального текста элемента

В этой статье вы узнаете как из описания вырезать первый абзац и поместить его в мета тег description.

Как вырезать из описания элемента 1 абзац в Битриксе и установить его на мета тег description

Внимание! В битриксе вышло обновление (и довольно давно), которое берет на себя всю работу по настройке мета данных, таких как тайтл, кейвордс и многое другое. Это удобнее для пользователей — менеджера, контенщика и SEO-шника. Речь идет про SEO вкладку в разделах и товарах. Статья для разработчиков.

На тему мета данных было написано уже много статей. Говорить сегодня будем про тег meta description. Давайте для начала вспомним как он выглядит. Записывают его только в head страницы:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta name="description" content="Магазин подарков в Москве, лучшие цены." />
  ...

Чтобы хоть как-то повлиять на этот тег или же задавать его в зависимости от каких-то условий и переменных, нам понадобится шаблон для элемента каталога товаров.

Вам необходимо создать файл, если он еще не создан component_epilog.php. Рассмотрим вариант, когда вам известен ID элемента, а описание в этом файле вы не можете получить.

Используем CIBlockElement::GetByID и получаем необходимое для нас поле (при условии, что его нет в стандартном $arResult[‘DETAIL_TEXT’]):

<?
$res = CIBlockElement::GetByID($arResult['ID']);
if($ar_res = $res->GetNext()) {
  $DETAIL_TEXT = $ar_res['DETAIL_TEXT'];
}

В нашей переменной будет текст из карточки товара, если вам нужен текст анонса, замените DETAIL_TEXT на PREVIEW_TEXT, вот так:

<?
$res = CIBlockElement::GetByID($arResult['ID']);
if($ar_res = $res->GetNext()) {
  $PREVIEW_TEXT= $ar_res['PREVIEW_TEXT'];
}

После этого, разбиваем на массив, ограничив его 2-мя элементами:

$FIRST_STR = explode('.', $DETAIL_TEXT, 2);

Обратите внимание, что разделитель у нас точка. Одного предложения как правило хватает, и при грамотном контенте, оно идеально впишется в СЕО текст описания.

Теперь, убираем лишние символы кавычек и HTML теги:

$FIRST_STR_LAST = htmlspecialchars_decode(strip_tags($FIRST_STR[0])).'.';
$FIRST_STR_LAST = str_replace('«', '', $FIRST_STR_LAST);
$FIRST_STR_LAST = str_replace('»', '', $FIRST_STR_LAST);

Остается лишь заменить meta тег описания:

if ($FIRST_STR_LAST != false) {
  $APPLICATION->SetPageProperty("description", $FIRST_STR_LAST);
}

ВНИМАНИЕ: SEO параметры битрикса имеют высший приоритет, и бывают случаи, когда данный код не работает. Исправляется отключением настроек компонента каталога.

Полный код выглядит следующим образом:

<?
$res = CIBlockElement::GetByID($arResult['ID']);
if($ar_res = $res->GetNext()) {
  $DETAIL_TEXT = $ar_res['DETAIL_TEXT'];
}

$FIRST_STR = explode('.', $DETAIL_TEXT, 2);

$FIRST_STR_LAST = htmlspecialchars_decode(strip_tags($FIRST_STR[0])).'.';
$FIRST_STR_LAST = str_replace('«', '', $FIRST_STR_LAST);
$FIRST_STR_LAST = str_replace('»', '', $FIRST_STR_LAST);

if ($FIRST_STR_LAST != false) {
  $APPLICATION->SetPageProperty("description", $FIRST_STR_LAST);
}

Удачи с Битриксом, поверьте, она вам понадобится 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *