/** * <p>Метод подключает компонент 2.0. Динамичный метод.</p> * * * @param string $componentName Имя компонента. Например: "bitrix:news.detail". * * @param string $componentTemplate Имя шаблона компонента. Если имя пустое, то подразумевается имя * ".default". * * @param array $arParams = array() Массив входных параметров компонента. * * @param object $parentComponent = null Объект родительского комплексного компонента, если компонент * подключается из шаблона комплексного компонента. В шаблоне * комплексного компонента определена переменная <b>$component</b>, * которая содержит объект этого комплексного компонента. * * @param array $arFunctionParams = array() Массив, содержащий дополнительные параметры отображения * компонента: <br> "HIDE_ICONS"=>"Y" - не показывать панель настройки * компонента в режиме редактировани/разработки; <br> "ACTIVE_COMPONENT"=>"N" - * отключить компонент (код компонента не подключается). <br> * * @return mixed <p>Возвращает код компонента.</p> <a name="examples"></a> * * <h4>Example</h4> * <pre> * // Подключим компонент каталога с шаблоном "по-умолчанию" на публичной странице сайта * $APPLICATION->IncludeComponent( * "bitrix:catalog", * "", * Array( * "SEF_MODE" => "N", * "IBLOCK_TYPE_ID" => "catalog", * "ACTION_VARIABLE" => "action", * "CACHE_TIME" => 1*24*60*60, * "BASKET_PAGE_TEMPLATE" => "/personal/basket.php", * ) * ); * * * // Подключим компонент карточки фотографии с шаблоном "по-умолчанию" в шаблоне * // комплексного компонента "фотогалерея" * $APPLICATION->IncludeComponent( * "bitrix:photo.detail", * "", * Array( * "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], * "IBLOCK_ID" => $arParams["IBLOCK_ID"], * "ELEMENT_ID" => $arResult["VARIABLES"]["ELEMENT_ID"], * "ELEMENT_CODE" => $arResult["VARIABLES"]["ELEMENT_CODE"], * ), * $component * ); * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cmain/includecomponent.php * @author Bitrix */ public function IncludeComponent($componentName, $componentTemplate, $arParams = array(), $parentComponent = null, $arFunctionParams = array()) { /** @global CMain $APPLICATION */ global $APPLICATION, $USER; if (is_array($this->arComponentMatch)) { $skipComponent = true; foreach ($this->arComponentMatch as $cValue) { if (strpos($componentName, $cValue) !== false) { $skipComponent = false; break; } } if ($skipComponent) { return false; } } $componentRelativePath = CComponentEngine::MakeComponentPath($componentName); if (StrLen($componentRelativePath) <= 0) { return False; } $debug = null; $bShowDebug = $_SESSION["SESS_SHOW_INCLUDE_TIME_EXEC"] == "Y" && ($USER->CanDoOperation('edit_php') || $_SESSION["SHOW_SQL_STAT"] == "Y") && !defined("PUBLIC_AJAX_MODE"); if ($bShowDebug || $APPLICATION->ShowIncludeStat) { $debug = new CDebugInfo(); $debug->Start($componentName); } if (is_object($parentComponent)) { if (!$parentComponent instanceof cbitrixcomponent) { $parentComponent = null; } } $bDrawIcons = (!isset($arFunctionParams["HIDE_ICONS"]) || $arFunctionParams["HIDE_ICONS"] != "Y") && $APPLICATION->GetShowIncludeAreas(); if ($bDrawIcons) { echo $this->IncludeStringBefore(); } $result = null; $bComponentEnabled = !isset($arFunctionParams["ACTIVE_COMPONENT"]) || $arFunctionParams["ACTIVE_COMPONENT"] != "N"; $component = new CBitrixComponent(); if ($component->InitComponent($componentName)) { $obAjax = null; if ($bComponentEnabled) { if ($arParams['AJAX_MODE'] == 'Y') { $obAjax = new CComponentAjax($componentName, $componentTemplate, $arParams, $parentComponent); } $this->__componentStack[] = $component; $result = $component->IncludeComponent($componentTemplate, $arParams, $parentComponent); array_pop($this->__componentStack); } if ($bDrawIcons) { $panel = new CComponentPanel($component, $componentName, $componentTemplate, $parentComponent, $bComponentEnabled); $arIcons = $panel->GetIcons(); echo $s = $this->IncludeStringAfter($arIcons["icons"], $arIcons["parameters"]); } if ($bComponentEnabled && $obAjax) { $obAjax->Process(); } } if ($bShowDebug) { echo $debug->Output($componentName, "/bitrix/components" . $componentRelativePath . "/component.php", $arParams["CACHE_TYPE"] . $arParams["MENU_CACHE_TYPE"]); } elseif (isset($debug)) { $debug->Stop($componentName, "/bitrix/components" . $componentRelativePath . "/component.php", $arParams["CACHE_TYPE"] . $arParams["MENU_CACHE_TYPE"]); } return $result; }