Skip to content

Commit

Permalink
Исключил дополнительные действия пользователя, добавив глобальную фун…
Browse files Browse the repository at this point in the history
…кцию в автозагрузку. Обновил описание
  • Loading branch information
mmjurov committed Jan 9, 2016
1 parent d904194 commit b40eaa1
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 39 deletions.
5 changes: 3 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description": "Модуль подключения шаблонизатора twig к битриксу",
"keywords": ["bitrix", "1С Битрикс", "максимастер", "twig", "шаблонизатор"],
"license": "MIT",
"version": "0.2",
"version": "0.3",
"support": {
"www": "http://www.maximaster.ru",
"source": "https://github.com/maximaster/tools.twig.git"
Expand All @@ -21,6 +21,7 @@
"autoload": {
"psr-4": {
"Maximaster\\": "src/Maximaster/"
}
},
"files": ["src/Maximaster/functions.php"]
}
}
41 changes: 4 additions & 37 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,20 @@
# maximaster/tools.twig

Данная библиотека позволяет использовать twig шаблоны в 1С Битрикс. После установки необходимо провести дополнительные манипуляции. Битрикс позволяет подключать сторонние шаблонизаторы, но для этого нужно определить глобальную переменную и глобальную функцию. Чтобы twig считывал файлы с расширением .twig, необходимо в init.php вставить примерно следующий код:

```php
//Определяем соответствие между расширением .twig и функцией рендеринга
global $arCustomTemplateEngines;
$arCustomTemplateEngines['twig'] = [
'templateExt' => ['twig'],
'function' => 'renderTwigTemplate'
];

//Определяем глобальную функцию-рендерер
function renderTwigTemplate(
$templateFile,
$arResult,
$arParams,
$arLangMessages,
$templateFolder,
$parentTemplateFolder,
\CBitrixComponentTemplate $template)
{
//Передаем управление библиотеке
\Maximaster\Twig\TemplateEngine::render(
$templateFile,
$arResult,
$arParams,
$arLangMessages,
$templateFolder,
$parentTemplateFolder,
$template
);
}
```

Вот и все. Теперь, если создать в директории шаблона компонента файл template.twig, то именно он будет использоваться при генерации шаблона.
Данная библиотека позволяет использовать twig шаблоны в компонентах 1С Битрикс. Обрабатываются файлы, имеющие расширение .twig. Если создать в директории шаблона компонента файл template.twig, то именно он будет использоваться при генерации шаблона.
К сожалению, ядро битрикса так устроено, что при наличии двух файлов .php и .twig, будет использовать только .php, поэтому для использования twig шаблона нужно позаботиться о том, чтобы php шаблон отсутствовал.

## Наследование шаблонов

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

vendor:componentname[:template[:specifictemplatefile]]
vendor:component_name[:template[:specific_template_file]]

Здесь
* **vendor** - это пространство имен разработчика, например bitrix или maximaster
* **componentname** - имя компонента, шаблон которого наследуется
* **component_name** - имя компонента, шаблон которого наследуется
* **template** - имя шаблона, который нужно унаследовать. Необязательный, по-умолчанию .default
* **specifictemplatefile** - конкретный файл шаблона (без расширения). Необязательный, по-умолчанию template
* **specific_template_file** - конкретный файл шаблона (без расширения). Необязательный, по-умолчанию template

Например, вы хотите унаследовать шаблон new-year компонента maximaster:product. Для этого в шаблоне twig нужно написать

Expand Down
32 changes: 32 additions & 0 deletions src/Maximaster/functions.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use Maximaster\Tools\Twig\TemplateEngine;

global $arCustomTemplateEngines;
$arCustomTemplateEngines['twig'] = [
'templateExt' => ['twig'],
'function' => 'maximasterRnderTwigTemplate'
];
if (function_exists('maximasterRnderTwigTemplate'))
{
throw new \Twig_Error_Loader('Íåîáõîäèìî, ÷òîáû ôóíêèÿ ñ èìåíåì maximasterRnderTwigTemplate íå áûëà îïðåäåëåíà');
}
function maximasterRnderTwigTemplate(
$templateFile,
$arResult,
$arParams,
$arLangMessages,
$templateFolder,
$parentTemplateFolder,
\CBitrixComponentTemplate $template)
{
TemplateEngine::render(
$templateFile,
$arResult,
$arParams,
$arLangMessages,
$templateFolder,
$parentTemplateFolder,
$template
);
}

0 comments on commit b40eaa1

Please sign in to comment.