Поддержать видеоуроки



руб.





Xxxxxxxxx

ПОДРОБНЕЕ
ФАЙЛЫ ДЛЯ СКАЧИВАНИЯ
  • 18 Окт 2017
  • Автор: Роман Онищенко
  • Битрикс экзамен №2
  • 295
  • 0

Это задание практически ни чем, кроме формулировки не отличается от предыдущего и имеет аналогичное решение.

Методика решения задания

Данное задание,как и предыдущее, решается при помощи отложных функций:

В административной панели создаем новый инфоблок и свойство "Новость" тип - привязка к элементам информационного блока. Добавляем в созданный инфоблок элемент.

Добавляется новый ключ в массив $arParams в комплексном компоненте news в файле .parameters.php и передается в вызов компонента news.detail входящего в его состав на странице detail.php

"CANONICAL" => Array(
   "NAME" => GetMessage("CANONICAL"),
)
    

В шаблоне компонента news.detail создаются два новых файла

В result_modifier.php расширяем $arResult добавляя в него новый ключ CANONICAL, значением которого будет являться поля привязанного элемента и с помощью функции CBitrixComponent::setResultCacheKeys передаем данный ключ в некешируемую область, файл component_epilog.php

if($arParams['CANONICAL']){
   $arFilter = array('IBLOCK_ID'=>$arParams['CANONICAL'],'PROPERTY_CANONICAL' => $arResult['ID']);
   $arSelect = array('ID','IBLOCK_ID','NAME','PROPERTY_CANONICAL');
   $r = CIBlockElement::GetList(array(),$arFilter,false,false,$arSelect);
   if($res = $r -> Fetch()){
      $arResult['CANONICAL'] = $res;
   }
   $this->__component->SetResultCacheKeys(array('CANONICAL'));
}
    

В component_epilog.php происходит проверка на наличие в массиве $arResult ключа CANONICAL и если условие выполняется, мы устанавливаем заданное свойство страницы

if($arParams['CANONICAL'] == 'Y'){
   $APPLICATION->SetPageProperty("Canonical", $arResult['CANONICAL']['NAME']);
}
   

Спасибо за внимание!
P.S. В описании мог что нибудь забыть,поэтому смотрите видео

Авторизация

×

Отправляя форму, я соглашаюсь на обработку персональных данных

Отправить