Пример подключения движка XML/XSLT:
Сначала регистрируем движок:
global $arCustomTemplateEngines;
$arCustomTemplateEngines = array(
"xslt" => array(
"templateExt" => array("xsl"),
"function" => "XSLTEngine"
),
);
Функция инициализации параметров движка:
function CreateXMLFromArray($xDoc, $xNode, $ar)
{
foreach($ar as $key=>$val)
{
if(!is_string($key) || strlen($key)<=0)
$key = "value";
$xElement = $xDoc->createElement($key);
if(is_array($val))
{
CreateXMLFromArray($xDoc, $xElement, $val);
}
else
{
$xElement->appendChild($xDoc->createTextNode(iconv( SITE_CHARSET, "utf-8", $val)));
}
$xNode->appendChild($xElement);
}
return $xNode;
}
Функция подключения движка:
function XSLTEngine($templateFile, $arResult, $arParams, $arLangMessages, $templateFolder, $parentTemplateFolder, $template)
{
$arResult["PARAMS"] = array(
"templateFolder" => $templateFolder,
"parentTemplateFolder" => $parentTemplateFolder,
"arParams" => $arParams,
"arLangMessages" => $arLangMessages
);
$xDoc = new DOMDocument("1.0", SITE_CHARSET);
$xRoot = $xDoc->createElement('result');
CreateXMLFromArray($xDoc, $xRoot, $arResult);
$xDoc->appendChild($xRoot);
$xXsl = new DOMDocument();
$xXsl->load( $_SERVER["DOCUMENT_ROOT"].$templateFile );
$xProc = new XSLTProcessor;
$xProc->importStyleSheet($xXsl);
echo $xProc->transformToXML($xDoc);
}
[Bitrix\Main\ObjectNotFoundException] Forum is not found. (510) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/forum/lib/forum.php:305 #0: Bitrix\Forum\Forum->__construct(integer) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/forum/lib/internals/entityfabric.php:20 #1: Bitrix\Forum\Forum::getById(integer) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/forum/classes/general/forum_new.php:559 #2: CAllForumNew::GetUserPermission(integer, array) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/forum/include.php:141 #3: ForumCurrUserPermissions(integer) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/components/bitrix/forum.topic.reviews/component.php:177 #4: include(string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component.php:605 #5: CBitrixComponent->__includeComponent() /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component.php:680 #6: CBitrixComponent->includeComponent(string, array, object, boolean) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/main.php:1039 #7: CAllMain->IncludeComponent(string, string, array, object) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/components/bitrix/news/templates/.default/detail.php:150 #8: include(string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component_template.php:789 #9: CBitrixComponentTemplate->__IncludePHPTemplate(array, array, string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component_template.php:884 #10: CBitrixComponentTemplate->IncludeTemplate(array) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component.php:764 #11: CBitrixComponent->showComponentTemplate() /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component.php:712 #12: CBitrixComponent->includeComponentTemplate(string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/components/bitrix/news/component.php:216 #13: include(string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component.php:605 #14: CBitrixComponent->__includeComponent() /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/component.php:680 #15: CBitrixComponent->includeComponent(string, array, boolean, boolean) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/classes/general/main.php:1039 #16: CAllMain->IncludeComponent(string, string, array, boolean) /home/host1328954/k-78.ru/htdocs/suvenir/content/articles/index.php:113 #17: include_once(string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/modules/main/include/urlrewrite.php:159 #18: include_once(string) /home/host1328954/k-78.ru/htdocs/suvenir/bitrix/urlrewrite.php:2