throwzenon Опубліковано: 6 жовтня 2016 Share Опубліковано: 6 жовтня 2016 Здравствуйте! Подскажите, кто знает как подключить twig в 2.3.0.2 ? Пробовал перенести решение из ветки master-pre-rollback, но явно где-то не дожимаю, уже 2-й день не могу разобраться, совсем запутался. Надіслати Поділитися на інших сайтах More sharing options...
ArtemPitov Опубліковано: 6 жовтня 2016 Share Опубліковано: 6 жовтня 2016 если у файлов шаблонов расширение .tpl - используется PHP для рендеринга, если .twig - то шаблонный движок Twig. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 6 жовтня 2016 Share Опубліковано: 6 жовтня 2016 смотрю в свою сборку // Template$_['template_type'] = 'php'; Но!!! if (!$output) { $template = new Template($this->registry->get('config')->get('template_type')); foreach ($data as $key => $value) { $template->set($key, $value); } $output = $template->render($route . '.tpl'); } но сборка у меня не обновлена Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 если у файлов шаблонов расширение .tpl - используется PHP для рендеринга, если .twig - то шаблонный движок Twig. Эти энциклопедические знания никак к вопросу не относятся смотрю в свою сборку // Template $_['template_type'] = 'php'; Но!!! if (!$output) { $template = new Template($this->registry->get('config')->get('template_type')); foreach ($data as $key => $value) { $template->set($key, $value); } $output = $template->render($route . '.tpl'); } но сборка у меня не обновлена Установил $_['template_type'] = 'twig' и $output = $template->render($route . '.twig'); Куда еще нужно смотреть? Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Эти энциклопедические знания никак к вопросу не относятся Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 А никуда, в сборке нет twig Специально https://github.com/opencart/opencart/tree/dev/upload/system/library/template Надіслати Поділитися на інших сайтах More sharing options... pantagruel964 Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; 2 Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Ну и к чему это? Это я и без вас видел. Если я создам файл twig, opencart его не скомпилирует. Именно в этом был вопрос Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 @pantagruel964, Спасибо, добрый человек! Это то что и было нужно. У нас магазин на 1.5.4.1 и все шаблоны в twig-формате, что и было единственным препятствием для перехода на новый движок. Еще раз огромное спасибо Вам, к сожалению, не могу даже плюсануть сообщение(( Надіслати Поділитися на інших сайтах More sharing options... 9 months later... melnykserhiy Опубліковано: 20 липня 2017 Share Опубліковано: 20 липня 2017 Подскажите пожалуйста возможен ли вариант использования и twig и tpl шаблоны, например если есть .tpl, то использовать его, если нет то твиг? Надіслати Поділитися на інших сайтах More sharing options... 3 years later... MSKyl Опубліковано: 5 листопада 2020 Share Опубліковано: 5 листопада 2020 В 07.10.2016 в 15:26, pantagruel964 сказал: Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на Показать контент <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на Показать контент <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; Подскажите как в админке завести twig, opencart из админке формат twig пытается как tpl загрузить Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Opencart 2.3.0.2. Как подключить Twig? Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 6 жовтня 2016 Share Опубліковано: 6 жовтня 2016 смотрю в свою сборку // Template$_['template_type'] = 'php'; Но!!! if (!$output) { $template = new Template($this->registry->get('config')->get('template_type')); foreach ($data as $key => $value) { $template->set($key, $value); } $output = $template->render($route . '.tpl'); } но сборка у меня не обновлена Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 если у файлов шаблонов расширение .tpl - используется PHP для рендеринга, если .twig - то шаблонный движок Twig. Эти энциклопедические знания никак к вопросу не относятся смотрю в свою сборку // Template $_['template_type'] = 'php'; Но!!! if (!$output) { $template = new Template($this->registry->get('config')->get('template_type')); foreach ($data as $key => $value) { $template->set($key, $value); } $output = $template->render($route . '.tpl'); } но сборка у меня не обновлена Установил $_['template_type'] = 'twig' и $output = $template->render($route . '.twig'); Куда еще нужно смотреть? Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Эти энциклопедические знания никак к вопросу не относятся Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 А никуда, в сборке нет twig Специально https://github.com/opencart/opencart/tree/dev/upload/system/library/template Надіслати Поділитися на інших сайтах More sharing options... pantagruel964 Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; 2 Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Ну и к чему это? Это я и без вас видел. Если я создам файл twig, opencart его не скомпилирует. Именно в этом был вопрос Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 @pantagruel964, Спасибо, добрый человек! Это то что и было нужно. У нас магазин на 1.5.4.1 и все шаблоны в twig-формате, что и было единственным препятствием для перехода на новый движок. Еще раз огромное спасибо Вам, к сожалению, не могу даже плюсануть сообщение(( Надіслати Поділитися на інших сайтах More sharing options... 9 months later... melnykserhiy Опубліковано: 20 липня 2017 Share Опубліковано: 20 липня 2017 Подскажите пожалуйста возможен ли вариант использования и twig и tpl шаблоны, например если есть .tpl, то использовать его, если нет то твиг? Надіслати Поділитися на інших сайтах More sharing options... 3 years later... MSKyl Опубліковано: 5 листопада 2020 Share Опубліковано: 5 листопада 2020 В 07.10.2016 в 15:26, pantagruel964 сказал: Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на Показать контент <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на Показать контент <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; Подскажите как в админке завести twig, opencart из админке формат twig пытается как tpl загрузить Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Opencart 2.3.0.2. Как подключить Twig? Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 если у файлов шаблонов расширение .tpl - используется PHP для рендеринга, если .twig - то шаблонный движок Twig. Эти энциклопедические знания никак к вопросу не относятся смотрю в свою сборку // Template $_['template_type'] = 'php'; Но!!! if (!$output) { $template = new Template($this->registry->get('config')->get('template_type')); foreach ($data as $key => $value) { $template->set($key, $value); } $output = $template->render($route . '.tpl'); } но сборка у меня не обновлена Установил $_['template_type'] = 'twig' и $output = $template->render($route . '.twig'); Куда еще нужно смотреть? Надіслати Поділитися на інших сайтах More sharing options...
ArtemPitov Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Эти энциклопедические знания никак к вопросу не относятся Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 А никуда, в сборке нет twig Специально https://github.com/opencart/opencart/tree/dev/upload/system/library/template Надіслати Поділитися на інших сайтах More sharing options... pantagruel964 Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; 2 Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Ну и к чему это? Это я и без вас видел. Если я создам файл twig, opencart его не скомпилирует. Именно в этом был вопрос Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 @pantagruel964, Спасибо, добрый человек! Это то что и было нужно. У нас магазин на 1.5.4.1 и все шаблоны в twig-формате, что и было единственным препятствием для перехода на новый движок. Еще раз огромное спасибо Вам, к сожалению, не могу даже плюсануть сообщение(( Надіслати Поділитися на інших сайтах More sharing options... 9 months later... melnykserhiy Опубліковано: 20 липня 2017 Share Опубліковано: 20 липня 2017 Подскажите пожалуйста возможен ли вариант использования и twig и tpl шаблоны, например если есть .tpl, то использовать его, если нет то твиг? Надіслати Поділитися на інших сайтах More sharing options... 3 years later... MSKyl Опубліковано: 5 листопада 2020 Share Опубліковано: 5 листопада 2020 В 07.10.2016 в 15:26, pantagruel964 сказал: Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на Показать контент <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на Показать контент <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; Подскажите как в админке завести twig, opencart из админке формат twig пытается как tpl загрузить Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Opencart 2.3.0.2. Как подключить Twig?
chukcha Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 А никуда, в сборке нет twig Специально https://github.com/opencart/opencart/tree/dev/upload/system/library/template Надіслати Поділитися на інших сайтах More sharing options... pantagruel964 Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; 2 Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Ну и к чему это? Это я и без вас видел. Если я создам файл twig, opencart его не скомпилирует. Именно в этом был вопрос Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 @pantagruel964, Спасибо, добрый человек! Это то что и было нужно. У нас магазин на 1.5.4.1 и все шаблоны в twig-формате, что и было единственным препятствием для перехода на новый движок. Еще раз огромное спасибо Вам, к сожалению, не могу даже плюсануть сообщение(( Надіслати Поділитися на інших сайтах More sharing options... 9 months later... melnykserhiy Опубліковано: 20 липня 2017 Share Опубліковано: 20 липня 2017 Подскажите пожалуйста возможен ли вариант использования и twig и tpl шаблоны, например если есть .tpl, то использовать его, если нет то твиг? Надіслати Поділитися на інших сайтах More sharing options... 3 years later... MSKyl Опубліковано: 5 листопада 2020 Share Опубліковано: 5 листопада 2020 В 07.10.2016 в 15:26, pantagruel964 сказал: Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на Показать контент <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на Показать контент <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; Подскажите как в админке завести twig, opencart из админке формат twig пытается как tpl загрузить Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
pantagruel964 Опубліковано: 7 жовтня 2016 Share Опубліковано: 7 жовтня 2016 Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; 2 Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Ну и к чему это? Это я и без вас видел. Если я создам файл twig, opencart его не скомпилирует. Именно в этом был вопрос Надіслати Поділитися на інших сайтах More sharing options... throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 @pantagruel964, Спасибо, добрый человек! Это то что и было нужно. У нас магазин на 1.5.4.1 и все шаблоны в twig-формате, что и было единственным препятствием для перехода на новый движок. Еще раз огромное спасибо Вам, к сожалению, не могу даже плюсануть сообщение(( Надіслати Поділитися на інших сайтах More sharing options... 9 months later... melnykserhiy Опубліковано: 20 липня 2017 Share Опубліковано: 20 липня 2017 Подскажите пожалуйста возможен ли вариант использования и twig и tpl шаблоны, например если есть .tpl, то использовать его, если нет то твиг? Надіслати Поділитися на інших сайтах More sharing options... 3 years later... MSKyl Опубліковано: 5 листопада 2020 Share Опубліковано: 5 листопада 2020 В 07.10.2016 в 15:26, pantagruel964 сказал: Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на Показать контент <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на Показать контент <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; Подскажите как в админке завести twig, opencart из админке формат twig пытается как tpl загрузить Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 Тогда специально для Вас https://github.com/opencart/opencart/tree/dev/upload/admin/view/template/catalog Ну и к чему это? Это я и без вас видел. Если я создам файл twig, opencart его не скомпилирует. Именно в этом был вопрос Надіслати Поділитися на інших сайтах More sharing options...
throwzenon Опубліковано: 7 жовтня 2016 Автор Share Опубліковано: 7 жовтня 2016 @pantagruel964, Спасибо, добрый человек! Это то что и было нужно. У нас магазин на 1.5.4.1 и все шаблоны в twig-формате, что и было единственным препятствием для перехода на новый движок. Еще раз огромное спасибо Вам, к сожалению, не могу даже плюсануть сообщение(( Надіслати Поділитися на інших сайтах More sharing options...
melnykserhiy Опубліковано: 20 липня 2017 Share Опубліковано: 20 липня 2017 Подскажите пожалуйста возможен ли вариант использования и twig и tpl шаблоны, например если есть .tpl, то использовать его, если нет то твиг? Надіслати Поділитися на інших сайтах More sharing options...
MSKyl Опубліковано: 5 листопада 2020 Share Опубліковано: 5 листопада 2020 В 07.10.2016 в 15:26, pantagruel964 сказал: Если вы не смогли подключить твиг, вы его и настроить не сможете, а в сыром виде он не так вкусен. Но раз так хочется.. ---------------------- 1. Скачайте последнюю версию твига с сайта, не берите старье из репы опенкарта. По хорошему, устанавливать надо через composer require, но опенкарт не сможет его корректно подгрузить. Папку Twig копируете в 'upload/system/library/template/' 2. Содержимое файла upload/system/library/template/php.php меняете на Показать контент <?php namespace Template; final class PHP { private $data = array(); public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { $file = DIR_TEMPLATE . $template . '.tpl'; if (is_file($file)) { extract($this->data); ob_start(); require($file); return ob_get_clean(); } trigger_error('Error: Could not load template ' . $file . '!'); exit(); } } 3. Файл upload/system/library/template/tiwg.php переименовываете в twig.php, содержимое меняете на Показать контент <?php namespace Template; final class Twig { private $twig; private $data = []; public function __construct() { include_once DIR_SYSTEM . 'library/template/Twig/Autoloader.php'; \Twig_Autoloader::register(); $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE); $this->twig = new \Twig_Environment($loader, [ 'autoescape' => false, 'cache' => DIR_SYSTEM . 'storage/cache/twig', 'auto_reload' => true, 'debug' => true ] ); $this->twig->addExtension(new \Twig_Extension_Debug()); } public function set($key, $value) { $this->data[$key] = $value; } public function render($template) { try { // load template $template = $this->twig->loadTemplate($template); return $template->render($this->data); } catch (Exception $e) { trigger_error('Error: Could not load template ' . $template . '!'); exit(); } } } 4. Файл upload/catalog/controller/event/theme.php приводите к такому виду Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data, &$output) { if ( ! $this->config->get($this->config->get('config_theme') . '_status')) { exit('Error: A theme has not been assigned to this store!'); } // This is only here for compatibility with older extensions if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } // If the default theme is selected we need to know which directory its pointing to if ($this->config->get('config_theme') == 'theme_default') { $theme = $this->config->get('theme_default_directory'); } else { $theme = $this->config->get('config_theme'); } if (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = $theme . '/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.twig')) { $this->config->set('template_type', 'twig'); $view = 'default/template/' . $view . '.twig'; } elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = $theme . '/template/' . $view; } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $view . '.tpl')) { $this->config->set('template_type', 'php'); $view = 'default/template/' . $view; } } } 5. upload/admin/controller/event/theme.php к такому Показать контент <?php class ControllerEventTheme extends Controller { public function index(&$view, &$data) { // This is only here for compatibility with old templates if (substr($view, -3) == 'tpl') { $view = substr($view, 0, -3); } if (is_file(DIR_TEMPLATE . $view . '.twig')) { $this->config->set('template_engine', 'twig'); } elseif (is_file(DIR_TEMPLATE . $view . '.tpl')) { $this->config->set('template_engine', 'php'); } } } 6. В файле upload/system/engine/loader.php строку $output = $template->render($route . '.tpl'); меняете на $output = $template->render($route); 7. В файле upload/system/config/catalog.php добавляете строку $_['template_type'] = 'twig'; Подскажите как в админке завести twig, opencart из админке формат twig пытается как tpl загрузить Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts