Вход Регистрация
*— обязательные для заполнения поля
Войти через социальные сети

Краткая инструкция

В целом ничего сложно, по сути всего два телодвижения:

1) В шаблоне template.php  нужно вставить вызов компонента некешируемой области, указать в нем путь до произвольного php-файла и передать параметры элемента.

2) Создать произвольный php-файл и вставить в нем код вызова нужного вам компонента, например Отзывы, Комментарии, Новости, а в глобальном массиве $arParams этого файла будут доступны все переданные ему параметры элемента, их нужно подставлять в ваш компонент Отзывов или что там будет, без разницы, обычно всякие айдишники товара передаются и название товара, для привязки отзывов или комментариев к товару.

Подробная инструкция

Шаблон компонента

В шаблоне компонента в файле template.php в нужном месте дизайна/верстки вставьте подобный код вызова компонента

<?
if(
Bitrix\Main\Loader::includeModule('api.uncachedarea')
&& Bitrix\Main\Loader::includeModule('api.reviews')
) {
CAPIUncachedArea::includeFile(
"/include/api_reviews.php",
array(
'ID' => $arResult['ID'],
'NAME' => $arResult['NAME'],
)
);
}

Разберем, что передается в компонент, всего два параметра, вообще, это метод класса = код вызова компонента:

CAPIUncachedArea::includeFile($rel_path, $arParams);

$rel_path - путь до произвольного php-файла относительно корня сайта, в который будут передаваться параметры из $arParams, в нашем случае это файл /include/api_reviews.php

$arParams - массив любых параметров, которые передаются в произвольный php-файл, в произвольном php-файле параметры будут доступны в массиве $arParams

Произвольный PHP-файл

Создаем на сайте произвольный php-файл, например /include/api_reviews.php, можно вообще любой, вот его пример:

<?
/** @var array $arParams */

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
die();
?>
<? $APPLICATION->IncludeComponent(
"api:reviews",
".default",
array(
"FORM_SHOP_BTN_TEXT" => "Добавить отзыв",
"FORM_SHOP_TEXT" => $arParams["NAME"] . " отзывы",
"INCLUDE_CSS" => "Y",
"PAGER_TITLE" => "Отзывы",
"SHOP_NAME" => $arParams["NAME"],
"PICTURE" => array(),
"ELEMENT_ID" => $arParams["ID"],
"ORDER_ID" => "",
"SEF_MODE" => "N",
"SET_STATUS_404" => "N",
"SHOW_404" => "N",
"MESSAGE_404" => "",
"PAGER_THEME" => "blue",
"COLOR" => "blue1",
"FORM_FORM_SUBTITLE" => $arParams["NAME"],
"USE_FORM_MESS_FIELD_PLACEHOLDER" => "N",
"VARIABLE_ALIASES" => array(
"review_id" => "review_id",
"user_id" => "user_id",
),
),
false
); ?>

Ну и все на этом, далее только подставляем из $arParams куда что нужно, даже при включенном кеше компонент из этого файла будет выводиться и работать, все подключаемые в нем динамически скрипты, стили и т.д. все будут работать, т.к. данная область не будет кэшироваться, она можно сказать динамически выводится вне кэша.

Возможные проблемы

"Все сделал по инструкции, ничего не работает"...

Попробуйте сбросить весь кэш в админке, может композит включен, с композитом модуль не работает, проверьтесь еще раз, много раз, не допустили где ошибку, банальный ляп от усталости...



Комментарии
Получать ответы на почту