Перейти к основному контенту

Установка метатегов для страниц фильтра (1C Bitrix)

Создать Highload-блоки

img-1.png

Обновлен - UF_DATE_UPDATE - Дата

img-2.png

URL - UF_URL - Строка

H1 - UF_H1 - Строка

Tile - UF_TITLE - строка

Description - UF_DESCRIPTION - строка

use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;
Loader::includeModule("highloadblock");
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;

$hlbl = 3;
$hlblock = HL\HighloadBlockTable::getById($hlbl)->fetch();

$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();

$rsData = $entity_data_class::getList(array(
    "select" => array("*"),
    "order" => array("ID" => "ASC"),
    "count_total" => true,
    "filter" => array("UF_URL" => $APPLICATION->GetCurDir())
));
if ($rsData->getCount() != 0) {
    while ($arData = $rsData->Fetch()) {
        if (!empty($arData['UF_TITLE']))
            $APPLICATION->SetPageProperty("title", $arData['UF_TITLE']);
        if (!empty($arData['UF_H1']))
            $APPLICATION->SetTitle($arData['UF_H1']);
        if (!empty($arData['UF_DESCRIPTION']))
            $APPLICATION->SetPageProperty("description", $arData['UF_DESCRIPTION']);
        $textTop = !empty($arData['UF_TEXT_TOP']) ? $arData['UF_TEXT_TOP'] : '';
        $textBottom = !empty($arData['UF_TEXT_BOTTOM']) ? $arData['UF_TEXT_BOTTOM'] : '';
    }
} else {
    $APPLICATION->AddHeadString('<meta name="robots" content="noindex">',true);
}

Пример создания Highload-блока через API

<?php

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

use Bitrix\Main\Loader;
use Bitrix\Highloadblock as HL;

Loader::IncludeModule('highloadblock');

$arLangs = Array(
    'ru' => 'SEO Фильтр',
    'en' => 'SEO Filter'
);

//создание HL-блока для корзин покупателей
$result = HL\HighloadBlockTable::add(array(
    'NAME' => 'SEOFilter', //должно начинаться с заглавной буквы и состоять только из латинских букв и цифр
    'TABLE_NAME' => 'seofilter', //должно состоять только из строчных латинских букв, цифр и знака подчеркивания
));
if ($result->isSuccess()) {
    $id = $result->getId();

    foreach($arLangs as $lang_key => $lang_val){
        HL\HighloadBlockLangTable::add(array(
            'ID' => $id,
            'LID' => $lang_key,
            'NAME' => $lang_val
        ));
    }
} else {
    $errors = $result->getErrorMessages();
    var_dump($errors);
}

$UFObject = 'HLBLOCK_'.$id;

$arCartFields = Array(
    'UF_DATE_UPDATE'=>Array(
        'ENTITY_ID' => $UFObject,
        'FIELD_NAME' => 'UF_DATE_UPDATE',
        'USER_TYPE_ID' => 'datetime',
        'MANDATORY' => 'Y',
        "EDIT_FORM_LABEL" => Array('ru'=>'Дата', 'en'=>'Дата'),
        "LIST_COLUMN_LABEL" => Array('ru'=>'Дата', 'en'=>'Дата'),
        "LIST_FILTER_LABEL" => Array('ru'=>'Дата', 'en'=>'Дата'),
        "ERROR_MESSAGE" => Array('ru'=>'', 'en'=>''),
        "HELP_MESSAGE" => Array('ru'=>'', 'en'=>''),
    ),
    'UF_URL'=>Array(
        'ENTITY_ID' => $UFObject,
        'FIELD_NAME' => 'UF_URL',
        'USER_TYPE_ID' => 'string',
        'MANDATORY' => 'Y',
        "EDIT_FORM_LABEL" => Array('ru'=>'URL', 'en'=>'URL'),
        "LIST_COLUMN_LABEL" => Array('ru'=>'URL', 'en'=>'URL'),
        "LIST_FILTER_LABEL" => Array('ru'=>'URL', 'en'=>'URL'),
        "ERROR_MESSAGE" => Array('ru'=>'', 'en'=>''),
        "HELP_MESSAGE" => Array('ru'=>'', 'en'=>''),
    ),
    'UF_H1'=>Array(
        'ENTITY_ID' => $UFObject,
        'FIELD_NAME' => 'UF_H1',
        'USER_TYPE_ID' => 'string',
        'MANDATORY' => 'Y',
        "EDIT_FORM_LABEL" => Array('ru'=>'H1', 'en'=>'H1'),
        "LIST_COLUMN_LABEL" => Array('ru'=>'H1', 'en'=>'H1'),
        "LIST_FILTER_LABEL" => Array('ru'=>'H1', 'en'=>'H1'),
        "ERROR_MESSAGE" => Array('ru'=>'', 'en'=>''),
        "HELP_MESSAGE" => Array('ru'=>'', 'en'=>''),
    ),
    'UF_TITLE'=>Array(
        'ENTITY_ID' => $UFObject,
        'FIELD_NAME' => 'UF_TITLE',
        'USER_TYPE_ID' => 'string',
        'MANDATORY' => 'Y',
        "EDIT_FORM_LABEL" => Array('ru'=>'Tile', 'en'=>'Tile'),
        "LIST_COLUMN_LABEL" => Array('ru'=>'Tile', 'en'=>'Tile'),
        "LIST_FILTER_LABEL" => Array('ru'=>'Tile', 'en'=>'Tile'),
        "ERROR_MESSAGE" => Array('ru'=>'', 'en'=>''),
        "HELP_MESSAGE" => Array('ru'=>'', 'en'=>''),
    ),
    'UF_DESCRIPTION'=>Array(
        'ENTITY_ID' => $UFObject,
        'FIELD_NAME' => 'UF_DESCRIPTION',
        'USER_TYPE_ID' => 'string',
        'MANDATORY' => '',
        "EDIT_FORM_LABEL" => Array('ru'=>'Description', 'en'=>'Description'),
        "LIST_COLUMN_LABEL" => Array('ru'=>'Description', 'en'=>'Description'),
        "LIST_FILTER_LABEL" => Array('ru'=>'Description', 'en'=>'Description'),
        "ERROR_MESSAGE" => Array('ru'=>'', 'en'=>''),
        "HELP_MESSAGE" => Array('ru'=>'', 'en'=>''),
    )
);

$arSavedFieldsRes = Array();

foreach($arCartFields as $arCartField){
    $obUserField  = new CUserTypeEntity;
    $ID = $obUserField->Add($arCartField);
    $arSavedFieldsRes[] = $ID;
}
?>

    <pre>
	<?print_r($arSavedFieldsRes);?>
</pre>
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>