• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела wpt лично.

Помощь Аспро: Приорити – Корпоративный сайт

Товарищи, подскажите чайнику, как в component_epilog вывести любое любое свойство, например вот сюда: bitrix/templates/aspro-priority/components/bitrix/news.detail/catalog/component_epilog.php
Пытаюсь типа:
PHP:
<?if(strlen($arResult['DISPLAY_PROPERTIES']['TEST']['VALUE'])):?>
<?=$arResult['DISPLAY_PROPERTIES']['TEST']['VALUE']?>
<?endif;?>
в упор не видит, при распечатке аналогично.
 
в упор не видит, при распечатке аналогично.
В файле component_epilog.php доступны $arParams, $arResult, но эти значения берутся из кеша.
Набор ключей массива $arResult, попадающих в кеш, определяется в component.php вызовом вида:
Код:
$this->SetResultCacheKeys(array(
                        "ID",
                        "IBLOCK_TYPE_ID",
                        "LIST_PAGE_URL",
                        "NAV_CACHED_DATA",
                        "NAME",
                        "SECTION",
                        "ELEMENTS",
                ));
При разработке своих компонентов обязательно используйте такую конструкцию чтобы ограничить размер кеша только необходимыми данными.
 
Для просмотра ссылки Войди или Зарегистрируйся, спасибо конечно, но ни черта не понял. Как я понял, свойство мне не вынести…:D пол шаблона затолкали в этот эпилог)
 
спасибо конечно, но ни черта не понял
Здесь надо знать принцип работы Битрикс
Шаблон кешируется и данные берутся из кеша.
component_epilog.php не кешируется но данные берет из кеша
Чтобы размер кеша не увеличивать без нужды в component.php при помощи
SetResultCacheKeys указавается то что будет сохранятся в кеш
И тогда component_epilog.php сможет "увидеть" в кеше нужные данные.
 
правильно понимаю, надо создать там же файл component.php и сделать вызов, такого типа?

PHP:
$this->SetResultCacheKeys(array(
                        "ID"=> "id свойства",
                        "IBLOCK_TYPE_ID" => $arParams["TEST"],
                        …
                ));
т.е. в моем случае условие -> свойство обычным макаром не вынести?
 
правильно понимаю, надо создать там же файл component.php и сделать вызов, такого типа?
Файл уже существует (это основной код компонента) - надо его найти и добавить в SetResultCacheKeys нужные элементы
 
правильно понимаю, надо создать там же файл component.php и сделать вызов, такого типа?

PHP:
$this->SetResultCacheKeys(array(
                        "ID"=> "id свойства",
                        "IBLOCK_TYPE_ID" => $arParams["TEST"],
                        …
                ));
т.е. в моем случае условие -> свойство обычным макаром не вынести?

Файл уже существует (это основной код компонента) - надо его найти и добавить в SetResultCacheKeys нужные элементы
После таких советов, как правило, люди и начинают громче всех кричать, что битрикс ***но. Хотя, конечно, у него и без этого хватает недостатков. Если будете вносить изменения в файлы ядра, в частности component.php, есть вероятность, что при обновлении файлы будут перезаписаны и ваш сайт "почему-то" перестанет работать.
В данном случае можно добавить информацию в кеш в шаблоне компонента. Создавайте, если ещё не существует, файл result_modifier.php в шаблоне компонента, где идёт вывод информации в component_epilog.php. Добавить данные в кеш в result_modifier.php можно следующим способом:
PHP:
$component = $this->getComponent();

if (isset($arResult['DISPLAY_PROPERTIES']['TEST']['DISPLAY_VALUE']))
{
    $component->arResult['TEST'] = $arResult['DISPLAY_PROPERTIES']['TEST']['DISPLAY_VALUE'];
}

$component->SetResultCacheKeys(
    array(
        'TEST',
    )
);

P.S.: Да, конечно, стоит заметить, что данный метод актуален только для компонентов ядра 1С-Битрикс или модулей других разработчиков. В свои компоненты, вы можете вносить любые изменения, маловероятно, что при обновлении они потеряются.
 
Последнее редактирование:
После таких советов, как правило, люди и начинают громче всех кричать, что битрикс ***но
Я всего лишь пытался пояснить принцип работы
Грамотная кастомизация отдельный разговор
Спасибо за участие в теме
 
В данном случае можно добавить информацию в кеш в шаблоне компонента. Создавайте, если ещё не существует, файл result_modifier.php в шаблоне компонента, где идёт вывод информации в component_epilog.php. Добавить данные в кеш в result_modifier.php можно следующим способом:
PHP:
$component = $this->getComponent();

if (isset($arResult['DISPLAY_PROPERTIES']['TEST']['VALUE']))
{
    $component->arResult['TEST'] = $arResult['DISPLAY_PROPERTIES']['TEST']['VALUE'];
}

$component->SetResultCacheKeys(
    array(
        'TEST',
    )
);

Благодарю за помощь. Данные в result_modifier добавил, а в самом шаблоне component_epilog'а как значение этого свойства вывести?
 
Назад
Сверху