Приветствую, господа). Заранее извиняюсь, наверняка за глупый вопрос, но такие часто посещают мысли людей которые недавно начали влезать в дебри битрикса, коим я и являюсь : ) Итак... Есть инфоблок и в нем куча элементов. В публичной части захожу я на страницу этого элемента, но меты описания и кл.слов берутся из основного раздела, я так понимаю потому что для этой страницы они не указаны и битрикс берет из родителя. Только title меняется из названия элемента. Добавил я значит к этому инф.блоку "свойства элемента" : description и keywords.
И теперь самый главный вопрос : Как мне из этих свойств ставить меты описания и кл.слов ? ночь "гугления" привели к одному более менее близкому результату :
if (CModule::IncludeModule("iblock";))
{
$ID = intval($ID);
$rsResult = CIBlockElement::GetByID($ID);
if ($arResult = $rsResult -> GetNextElement())
{
$arItem = $arResult -> GetFields(); // получаем поля элемента инфоблока
$arProp = $arResult -> GetProperties(); // получаем свойства элемента инфоблока
$APPLICATION -> SetPageProperty("description", $arProp['description']['VALUE']); //устанавливаем дескрипшн
$APPLICATION -> SetPageProperty("keywords", $arProp['keywords']['VALUE']); // устанавливаем кейвордс
}
Но... ничего не работает :) Насколько я понимаю, для начала нам надо узнать id элемента инф. блока на странице которого мы находимся.
Строчка *$arItem = $arResult -> GetFields();* -- получается вообще не нужна, т.к. массив $arItem далее не используется да и нужные значения хранится будут не в дефолтных полях, а именно в свойствах элемента, добавленных мной.
Большая просьба - если кто-то все же попадет на этот топик и даже решит потратить свое драгоценное время на ответ, за что заранее большое спасибо, пишите его пожалуйста сразу с исправленным кодом, чтобы я потом не сидел и не додумывал, что ж мне посоветовали (:
И теперь самый главный вопрос : Как мне из этих свойств ставить меты описания и кл.слов ? ночь "гугления" привели к одному более менее близкому результату :
if (CModule::IncludeModule("iblock";))
{
$ID = intval($ID);
$rsResult = CIBlockElement::GetByID($ID);
if ($arResult = $rsResult -> GetNextElement())
{
$arItem = $arResult -> GetFields(); // получаем поля элемента инфоблока
$arProp = $arResult -> GetProperties(); // получаем свойства элемента инфоблока
$APPLICATION -> SetPageProperty("description", $arProp['description']['VALUE']); //устанавливаем дескрипшн
$APPLICATION -> SetPageProperty("keywords", $arProp['keywords']['VALUE']); // устанавливаем кейвордс
}
Но... ничего не работает :) Насколько я понимаю, для начала нам надо узнать id элемента инф. блока на странице которого мы находимся.
Строчка *$arItem = $arResult -> GetFields();* -- получается вообще не нужна, т.к. массив $arItem далее не используется да и нужные значения хранится будут не в дефолтных полях, а именно в свойствах элемента, добавленных мной.
Большая просьба - если кто-то все же попадет на этот топик и даже решит потратить свое драгоценное время на ответ, за что заранее большое спасибо, пишите его пожалуйста сразу с исправленным кодом, чтобы я потом не сидел и не додумывал, что ж мне посоветовали (: