Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Include


LadaDed

Recommended Posts

У меня почему-то include ищет файлы только в storage/modification/catalog/view/theme/ 
Т.е. если его положить в той же директории, не найдет, а вот если туда - ищет. Причем, не рядом со своим братом в модификейшн а именно вот просто в теме.

Вообще, как-то неказисто работает этот твиг.. Ни тебе дебага ни print_r просто 500-я ошибка и все. а если пускать на локалке - там хотя бы PHP ругается, можно понять, что не так.

Я уже print_r научился делать через форыч, ну, чтобы проверить контроллер, но это же... моветон!

Надіслати
Поділитися на інших сайтах


читал! ну. то, что нашел. https://twig.symfony.com/doc/2.x/tags/include.html
Ужо пытался и путь весь передавать. Кстати, было бы неплохо. Может, у меня повторяющиеся блоки будут лежать в отдельной директории.. НО нет. Только из одного места и берет. 
Наверное, какие-то настройки нужны дополнительные. Но это, как-то странно. Мало того, что из примитивного фреймворка с громким названием "язык программирования"  PHP сделали фреймворк, чтобы было удобнее, чем то, что и так, в общем-то, удобно. Но так теперь еще нужно читать документацию по настройкам, чтобы понять, почему мне удобно?
А то так, вообще-то, не чувствуется удобства-то особого. 


 

Надіслати
Поділитися на інших сайтах


У меня почему-то не работает полный путь.. Но, можно же было сделать так, что если лежит в той-же директории, то можно и без пути? А то, заморочно.

Насколько я понимаю, твиг не дает __DIR__ вызвать.

Неудобно это..

Надіслати
Поділитися на інших сайтах


4 hours ago, LadaDed said:

У меня почему-то не работает полный путь.. Но, можно же было сделать так, что если лежит в той-же директории, то можно и без пути? А то, заморочно.

Насколько я понимаю, твиг не дает __DIR__ вызвать.

Неудобно это..

в какой той же директории? директория всегда одна та в которой index.php лежит.

 

у твига есть параметр в котором пути поиска файлов задаются. можно его добавить и после использовать просто {% include "controller/action.twig" %}

 

$loader->addPath($template_dir);

 

где template_dir будет равняться "/catalog/view/theme/default/template/", где опять же вместо default название темы

 

 

Надіслати
Поділитися на інших сайтах


по простому сделал так. файл /system/library/template/twig.php в функции render.

        $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE);

        if(!defined("DIR_CATALOG")){
            $loader->addPath(DIR_TEMPLATE.'default/template/');
        }

ну естественно вместо default свою тему.

единственный недостаток жестко привязано к теме будет. в данном файле нет привязки к реестру и поэтому к конфигу нельзя добраться, чтобы каталог текущей темы получить. chukcha предлагал через события сделать, но я не вникал как это, меня так устраивало пока

Змінено користувачем lexxkrt
Надіслати
Поділитися на інших сайтах


покопался в своих старых наработках. вообщем чтобы к теме не привязывалось.

файл /catalog/controller/event/theme.php

функция override дописать в самом конце перед закрытием функции

$args['template_directory'] = $this->config->get('template_directory');

 

файл /system/library/template/twig.php

добавить после лоадера

if(isset($this->data['template_directory'])){
   $loader->addPath(DIR_TEMPLATE.$this->data['template_directory']);
}

 

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Может кому пригодится.

 

Начиная, как я понимаю, с 3.0.3.5 в опенкарте поменяли загрузчик шаблонов на ArrayLoader, соответственно теперь ничего через include не работает. Исправляется это таким образом:

 

в system/library/template/twig.php меняем

$loader = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code));

на

$loader1 = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code));
$loader2 = new \Twig\Loader\FilesystemLoader([DIR_TEMPLATE]);
$loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]);

ну а дальше в любом шаблоне включаем свой шаблон в виде:

{% include 'мой_шаблон/template/partials/breadcrumb.twig' %}

Проверено на 3.0.3.6

 

На гитхабе на эту тему есть пулл-реквест, но Даниэль живёт в своём формате и поэтому ожидать, что это войдёт в релиз не приходится.

  • +1 3
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.