From 710071ece0691325223c7faa3369d04dacbc0124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B0=D0=B2=D1=80=D0=B8=D0=BD=D0=B5=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=20=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC?= Date: Mon, 1 Feb 2016 17:07:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=B7=D0=B0=D0=BA=D0=B5?= =?UTF-8?q?=D1=88=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B8?= =?UTF-8?q?=D0=B7=20bitrix/.settings.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 30 ++++++++-------- src/Maximaster/Tools/Twig/BitrixLoader.php | 41 ++++++++++++++-------- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/readme.md b/readme.md index 7b017e3..ee08b42 100644 --- a/readme.md +++ b/readme.md @@ -33,22 +33,20 @@ vendor:component_name[:template[:specific_template_file]] 'value' => array( 'tools' => array( 'twig' => array( - array( - // Режим отладки выключен - 'debug' => false, - - //Кодировка соответствует кодировке продукта - 'charset' => SITE_CHARSET, - - //кеш хранится в уникальной директории - 'cache' => $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/maximaster/tools.twig', - - //Автообновление включается только в момент очистки кеша - 'auto_reload' => isset( $_GET[ 'clear_cache' ] ) && strtoupper($_GET[ 'clear_cache' ]) == 'Y', - - //Автоэскейп отключен, т.к. битрикс по-умолчанию его сам делает - 'autoescape' => false, - ) + // Режим отладки выключен + 'debug' => false, + + //Кодировка соответствует кодировке продукта + 'charset' => SITE_CHARSET, + + //кеш хранится в уникальной директории + 'cache' => $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/maximaster/tools.twig', + + //Автообновление включается только в момент очистки кеша + 'auto_reload' => isset( $_GET[ 'clear_cache' ] ) && strtoupper($_GET[ 'clear_cache' ]) == 'Y', + + //Автоэскейп отключен, т.к. битрикс по-умолчанию его сам делает + 'autoescape' => false, ) ) ) diff --git a/src/Maximaster/Tools/Twig/BitrixLoader.php b/src/Maximaster/Tools/Twig/BitrixLoader.php index c78e1c6..459b61d 100644 --- a/src/Maximaster/Tools/Twig/BitrixLoader.php +++ b/src/Maximaster/Tools/Twig/BitrixLoader.php @@ -18,19 +18,22 @@ class BitrixLoader extends \Twig_Loader_Filesystem implements \Twig_LoaderInterf */ function getSource($name) { - /*if ($name == SITE_TEMPLATE_ID) - { - return $this->siteTemplate(); - }*/ + return file_get_contents($this->getSourcePath($name)); + } - $realFileName = $_SERVER[ 'DOCUMENT_ROOT' ] . $name; - if (file_exists($realFileName)) - { - return file_get_contents($realFileName); - } + function getSourcePath($name) + { + /*if ($name == SITE_TEMPLATE_ID) + { + return $this->siteTemplate(); + }*/ - return $this->componentTemplate($name); - } + $realFileName = $_SERVER[ 'DOCUMENT_ROOT' ] . $name; + if (file_exists($realFileName)) + return $realFileName; + + return $this->getComponentTemplatePath($name); + } function getCacheKey($name) { @@ -40,13 +43,23 @@ function getCacheKey($name) /** * Не использовать в продакшене!! * Метод используется только в режиме разработки или при использовании опции auto_reload = true + * @param string $name Путь к шаблону + * @param int $time Время изменения закешированного шаблона + * @return bool Актуален ли закешированный шаблон */ function isFresh($name, $time) { - return filemtime($this->getSource($name)) <= $time; + return filemtime($this->getSourcePath($name)) <= $time; } - private function componentTemplate($name) + /** + * По Битрикс-имени шаблона возвращает путь к его файлу + * + * @param string $name + * @return string + * @throws \Twig_Error_Loader + */ + private function getComponentTemplatePath($name) { list($namespace, $component, $template, $file) = explode(':', $name); @@ -74,7 +87,7 @@ private function componentTemplate($name) throw new \Twig_Error_Loader("Не удалось найти шаблон '{$name}'"); } - return file_get_contents($templatePath); + return $templatePath; } /*