Битрикс – Как установить 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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

2 коментаря

Залишити відповідь