Когтерезы оптом когтерезки опт.

Пользовательские движки шаблонизации

Для добавления нового движка шаблонизации на сайт в файл /bitrix/php_interface/init.php необходимо добавить следующее:

1. Глобальную переменную $arCustomTemplateEngines, которая содержит ассоциативный массив, каждый элемент которого имеет вид:
   "код_шаблонизатора" => array(
      "templateExt" => array("расширение1"[, "расширение2"...]),
      "function" => "имя_функции_подключения_движка"
   )

где:
"код_шаблонизатора" - произвольное уникальное в рамках сайта слово;
"расширениеN" - расширение файла, который должен обрабатываться этим движком шаблонизации;
"имя_функции_подключения_движка" - имя функции, которая будет вызываться, если шаблон компонента имеет указанное расширение.

2. Функцию подключения движков:
     function имя_функции_подключения_движка($templateFile, $arResult, $arParams, $arLangMessages, $templateFolder, $parentTemplateFolder, $template),
где:
     $templateFile – путь к файлу шаблона относительно корня сайта,
     $arResult –
массив результатов работы компонента,
     $arParams – массив входных параметров компонента,
     $arLangMessages – массив языковых сообщений (переводов) шаблона,
     $templateFolder – путь к папке шаблона относительно корня сайта (если шаблон лежит не в
папке, то эта переменная пуста),
     $parentTemplateFolder - путь относительно корня сайта к папке шаблона комплексного
компонента, в составе которого подключается данный компонент (если компонент
подключается самостоятельно, то эта переменная пуста),
     $template – объект шаблона.

Рассмотрим подключение движков на конкретных примерах.

Пример подключения движка Smarty:

В массиве $arCustomTemplateEngines регистрируется движок Smarty:

global $arCustomTemplateEngines;
$
arCustomTemplateEngines = array(
   "smarty" => array(
      "templateExt" => array("tpl"),
      "function" => "SmartyEngine"
   ),
);

В функции SmartyEngine инициализируются параметры движка в соответствии с требованиями Smarty (см. систему помощи Smarty). Далее в Smarty передаются переменные результатов работы компонента, входных параметров, языковых сообщений и т.д., а в конце вызывается метод обработки и показа шаблона Smarty:

function SmartyEngine($templateFile, $arResult, $arParams, $arLangMessages, $templateFolder, $parentTemplateFolder, $template)
{
   if (!defined("SMARTY_DIR"))
      define("SMARTY_DIR", "<
абсолютныйпутькдвижку Smarty>/libs/");

   require_once( '<
абсолютныйпутькдвижку Smarty>/libs/Smarty.class.php' );

   $smarty = new Smarty;

   $smarty->compile_dir = "<
абсолютныйпутькдвижку Smarty>/templates_c/";
   $smarty->config_dir = "<
абсолютныйпутькдвижку Smarty>/configs/";
   $smarty->template_dir = "<
абсолютныйпутькдвижку Smarty>/templates/";
   $smarty->cache_dir = "<
абсолютныйпутькдвижку Smarty>/cache/";

   $smarty->compile_check = true;
   $smarty->debugging = false;

   $smarty->assign("arResult", $arResult);
   $smarty->assign("arParams", $arParams);
   $smarty->assign("MESS", $arLangMessages);
   $smarty->assign("templateFolder", $templateFolder);
   $smarty->assign("parentTemplateFolder", $parentTemplateFolder);

   $smarty->display( $_SERVER["DOCUMENT_ROOT"].$templateFile );
}

В строке "<абсолютныйпутькдвижку Smarty>" указывается абсолютный путь к движку Smarty.


Пример подключения движка 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);
}


Возврат к списку



Свежие статьи

Туры в Тамале, Гана
Тамале в Гане — один из тех городов, которые привлекают туристов даже при отсутствии выдающихся шедевров архитектуры. Наиболее интересна культура местных жителей и прекрасная природа окрестностей.

Видеонаблюдение - почему некорректно работают камеры?
Даже наиболее современные и самые дорогие камеры видеонаблюдения могут работать не совсем корректно.

Заборы и ограждения – на чем остановить свой выбор?
Изысканный забор вокруг дома существенно увеличивает стоимость недвижимости, если ее необходимо продать

Покупка квартиры в Киеве без посредников
Основным решением экономия денег при покупке квартиры является приобретение без посредников

Социальная ответственность менеджмента в сфере недвижимости
Социальная ответственность бизнеса – одна из самых острых и широко обсуждаемых тем в нашем обществе.

Основные предложения по кредитам наличными от банка Ренессанс.
Кто и как может оформить в Ренессанс Банке кредит наличными онлайн через Интернет.

Туры в Мпумалангу, ЮАР
Тем, кто решил отправиться с Южно-Африканскую Республику и желает побывать в одном из красивейших мест страны, нужно посетить провинцию Мпумаланга, где располагается великолепный национальный парк.

Как удачно арендовать жилье
Большинство людей при аренде квартиры, как правило, стремятся отыскать жилье подешевле...

Как поступить в ВУЗ?
Главное, что стоит понять родителям абитуриентов, да и самим старшеклассникам заключается в том, что подготовка к вступлению в ВУЗ начинается задолго до выпускного класса...

Моделирование в образовании
В энциклопедической литературе моделирование определяется как совокупность методов исследования явлений и объектов при использовании различных аналогов и условных образов...

Сайт разработан компанией
"Bel-Promote"