Можно ещё прояснить по SetResultCacheKeys? =)) В result_modifier.php выполняю такой код:
Код
//Код отрабатывает в result_modifier.php
$arResult["ITEM_PRICES"] = $prices; //$prices - это ранее полученый массив цен
$this->__component->SetResultCacheKeys(array("ITEM_PRICES"));
После чего в component_epilog.php в $arResult появляются ITEM_PRICES (т.е. по идеи кеш текущего компонента дополнился ITEM_PRICES ), а примеры (довольно старые правда) на форумах показывают что добавлять свои данные в кеш нужно через объект компонента, в затем отдельно в копию $arResult с которым работает шаблон, например:
Код
$cp = $this->__component; // объект компонента
if (is_object($cp)) {
// добавим в arResult компонента два поля - MY_TITLE и IS_OBJECT
$cp->arResult['MY_TITLE'] = 'Мое название';
$cp->arResult['IS_OBJECT'] = 'Y';
$cp->SetResultCacheKeys(array('MY_TITLE','IS_OBJECT'));
// сохраним их в копии arResult, с которой работает шаблон
$arResult['MY_TITLE'] = $cp->arResult['MY_TITLE'];
$arResult['IS_OBJECT'] = $cp->arResult['IS_OBJECT'];
}
Второй билет, создание комплексного комонента "Мои новости" - подзадача: Ссылку на добавление новости, «предложить свою новость», вывести перед списком новостей.
Ссылку брать из настроек компонента? Т.е. $arParams["SEF_FOLDER"] + $arParams["SEF_URL_TEMPLATES"]["add"] ?
Александр Андреев написал: Второй билет, создание комплексного комонента "Мои новости" - подзадача: Ссылку на добавление новости, «предложить свою новость», вывести перед списком новостей.
Ссылку брать из настроек компонента? Т.е. $arParams["SEF_FOLDER"] + $arParams["SEF_URL_TEMPLATES"]["add"] ?
Вопрос по заданию связанному с настройкой агентов. Для перевода агентов на крон необходимо настроить планировщик на обращение к файлу /bitrix/php_interface/cron_events.php , у нас будет такая возможность (всмысле на экзаменационной виртуальной машине есть инструмент позволяющий настроить cron) или планировщик будет заранее настроен на файл /bitrix/php_interface/cron_events.php и во время экзамена нужно будет просто правильно настроить БУС?
Вопрос: [ex2-t7-9] Добавление информации в шаблон сайта из компонента в теле страницы.
Как решаю. В шаблоне сайта в header.php в левом сайдбаре вызываю функцию:
Код
<?$APPLICATION->ShowProperty("products_materials"); //Выводим материалы товаров в разделе каталога?>
Затем в шаблоне комплексного компонента bitrix:catalog в вызов компонента catalog.section добавил доп.параметр SHOW_MATERIALS для того чтобы проверяя его показывать информацию по материалам только в разделах каталога (параметр SHOW_MATERIALS не описывается в .parameters.php). Затем в result_modifier.php проверяю SHOW_MATERIALS и получаю все необходимые данные по материалам товаров в текущем раздел. Бережно кладу их в $arResult["MATERIALS"] и засовываю в кеш с помощью SetResultCacheKeys(). На последок в component_epilog.php перебираю в цикле ранее сохранённый список материалов и составляю готовый кусок html который с помощью SetPageProperty() сохраняю в свойствах текущей страницы, а именно в products_materials. Всё работает, в сайдбаре сайта в разделах каталога появляется блок с необходимой информацией, при этом в корне каталога этот блок отсутствует.
Правильно ли я решаю задачу? Не будет ли считаться ошибкой то, что я не описал в файле .parameters.php доп.параметр SHOW_MATERIALS?
Устраняем противоречия. В описании типовых заданий ко второму экзамену, в правилах по созданию компонента написано что нужно реализовать технологию эрмитаж http://joxi.ru/EA4NOP4fD1M5Dm а в задании в билете сказано что делать этого не нужно http://joxi.ru/5mdkEJBcvW0Q0r . Кому верить? ))
Александр Андреев написал: Вопрос: [ex2-t7-9] Добавление информации в шаблон сайта из компонента в теле страницы.
Ваше решение работает, но сложноватое Подсказка http://dev.1c-bitrix.ru/api_help/main/reference/cmain/showviewcontent.php Это задание на отложенные функции, а не кеширование. Ну кеширование тут важно тоже знать, в том плане что SetViewTarget и EndViewTarget работают из шаблона и при включенном кешировании