Meta-информация с помощью highload инфоблоков

Meta-информация с помощью highload инфоблоков

Создать highload инфоблок

  • UF_URL — для занесения url результата фильтрации в ЧПУ;
  • UF_TITLE- для title;
  • UF_DESCRIPTION — для description;
  • UF_KEYWORDS — для keywords;
  • UF_H1 — для H1.

Данные поля кастомные, поэтому добавлять можно сколько угодно. Например, если есть необходимость формировать уникальный текст для отфильтрованной страницы.

Чтобы все это заработало необходимо в файле component_epilog в шаблоне компонента catalog.section прописать следующее:

// Получаем HighloadBlock
$arHLBlock = HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => $strIblockData)))->fetch(); 
// инициализируем класс сущности хайлоуд блока
$obEntity = HighloadBlockTable::compileEntity($arHLBlock); 
// обращаемся к DataManager
$strEntityDataClass = $obEntity->getDataClass();

$arQuery = array(); 
// Фильтруем по  URL
$arQuery['filter'] = array('=UF_URL' => trim($APPLICATION->GetCurPage(false))); $dbData = $strEntityDataClass::getList($arQuery);$arMeta = $dbData->fetch();
// Заполняем метаданные страницы
$APPLICATION->SetPageProperty('title', $arMeta['UF_TITLE']);$APPLICATION->SetPageProperty(description, $arMeta['UF_DESCRIPTION']); $APPLICATION->SetPageProperty(keywords, $arMeta['UF_KEYWORDS']);$arResult[‘H1’] = $arMeta['H1'];

В разделе, в его шаблоне, задать поля для H1 и текста.

Мета-теги информация из свойств фильтра

В catalog.smart.filter в result_modifier.php, добавляем ключ FILTER_VALUE

$this->__component->SetResultCacheKeys(array("FILTER_VALUE"));

В catalog.smart.filter файле template.php или catalog.smart.filter файле result_modifier.php (проходимся циклом по $arResult[«ITEMS»]) — формируем масив, из которого в дальнейшем будем составлять метатеги.

Если необходимо добавить стоимость из фильтра, требуется сделать проверку

foreach($arResult["ITEMS"] as $key=>$arItem) {
    // Устоимости другая структура масива
    if(isset($arItem["PRICE"])) {
        $filter_value[$arItem["CODE"]]["NAME"] = "цена";
        $filter_value[$arItem["CODE"]]["MIN"] = $arItem["VALUES"]["MIN"]["HTML_VALUE"];
        $filter_value[$arItem["CODE"]]["MAX"] = $arItem["VALUES"]["MAX"]["HTML_VALUE"];
    } else {
        // Проверьте свой массив свойст, структура может отличаться в зависимости от типа свойств
        foreach($arItem["VALUES"] as $val => $ar){
            if($ar["CHECKED"]){
                $filter_value[$arItem["CODE"]]["NAME"] = $arItem["NAME"];
                $filter_value[$arItem["CODE"]]["VALUE"][$ar["FACET_VALUE"]] = $ar["VALUE"];
            }
        }
    }
}

После цикла, проверяем на наличие переменной $filter_value и добавляем ее в $arResult

//если фильтр не пустой, передаем данные в $arResult["FILTERLT_VALUES"]
if(!empty($filter_value)){
    $this->__component->arResult["FILTER_VALUE"] = $filter_value;
}

В component_epilog.php формируем метаданные:

$titleCategory = "";
$h1Category = "";
$descriptionCategory = "";
if (!empty($arResult["FILTER_VALUE"])) {
    foreach ($arResult["FILTER_VALUE"] as $key => $arProp) {
        if ($key !== "price") {
            $titleCategory .= $arProp["NAME"] " - " . mb_strtolower(implode(", ", $arProp["VALUE"])) . "; ";
            $h1Category .= ""; // Необходимые данные
            $descriptionCategory .= ""; // Необходимые данные
        } else {
            $minPrice = (!empty($arProp["MIN"])) ? "от " . $arProp["MIN"] : "";
            $maxPrice = (!empty($arProp["MAX"])) ? " до " . $arProp["MAX"] : "";
            if ($arProp["MIN"] || $arProp["MAX"]) {
                $titleCategory .= " стоимостью " . $minPrice . $maxPrice . " руб. "
                $h1Category .= ""; // Необходимые данные
                $descriptionCategory .= ""; // Необходимые данные
            }
        }
    }
}

// Записываем переменые в  свойства
$APPLICATION->SetPageProperty("filter_seo_title", $titleCategory);
$APPLICATION->SetPageProperty("filter_seo_h1", $h1Category);
$APPLICATION->SetPageProperty("filter_seo_description", $descriptionCategory);

В шаблоне компонента catalog в файле sections.php, добавляем проверку и перезаписываем метатеги страницы.

 // Если используется доп. свойство для h1
if ($h1 = $APPLICATION->GetPageProperty("filter_seo_h1")) {
    $APPLICATION->SetPageProperty("h1", $h1);

}

if ($title = $APPLICATION->GetPageProperty("filter_seo_title")) {
    $APPLICATION->SetPageProperty("title", $title);

}

if ($descr = $APPLICATION->GetPageProperty("flt_seo_description")) {
    $APPLICATION->SetPageProperty("filter_seo_description", $descr);
}
 

Читайте также

Интеграции с 1С и API
950 6 мин.

Как настроить регистрацию и личный кабинет покупателя на 1С-Битрикс?

Пошаговая настройка регистрации на сайте битрикс: Главный модуль, main.register, system.auth.form и sale.personal.section с историей заказов и 152-ФЗ.
Интеграции с 1С и API
679 15 мин.

Что такое компонент в Битриксе и как он работает

Каждый разработчик, впервые столкнувшийся с Битриксом, проходит через своеобразный обряд посвящения. Вначале кажется, что это просто CMS, где можно поправить HTML в визуальном редакторе или дописать пару строк CSS. Но однажды наступает момент, когда нужно изменить логику вывода новостей, отфильтровать товары по хитрому свойству или добавить на страницу нечто совершенно новое. И тут он впервые слышит это слово — «компонент». Для многих этот момент становится стеной. Система, казавшаяся понятной, вдруг превращается в черный ящик, полный непонятных файлов и странных переменных. Но стоит лишь раз заглянуть под капот, как эта стена рассыпается, превращаясь в набор удивительно логичных и мощных строительных блоков. Понимание компонентов — это тот самый щелчок, после которого разработка на Битрикс из мучения превращается в творчество.

Эта статья — ваш проводник в мир компонентов «1С-Битрикс». Мы не будем сыпать сухими терминами из документации. Вместо этого мы совершим путешествие: от философии, заложенной в эту архитектуру, до мельчайших деталей её работы. Мы разберем компонент на атомы — его файлы, логику, шаблон, параметры — и соберем обратно, чтобы вы не просто знали, что это, но и глубоко понимали, почему это работает именно так. Это знание — ключ к эффективной и профессиональной разработке на Битрикс.

Интеграции с 1С и API
606 2 мин.

Установка Composer в 1С-Битрикс

Установка Composer в проекте на 1С-Битрикс требует учета особенностей платформы, чтобы обеспечить корректную работу и интеграцию с системой.