Установка метатегов для страниц фильтра (1C Bitrix)
Создать Highload-блоки
Обновлен - UF_DATE_UPDATE - Дата
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"); ?>

