Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Include


LadaDed
 Share

Recommended Posts

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

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

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

Link to comment
Share on other sites


3 часа назад, LadaDed сказал:

но это же... моветон!

:mellow:

Рекомендую полиить докуменицию Twig

Link to comment
Share on other sites


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


 

Link to comment
Share on other sites


потому что в инклугде надо прописывать полный путь

{% include "/catalog/view/theme/default/template/controller/action.twig" %}

ну естественно вместо default свой каилог темы

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites


4 hours ago, LadaDed said:

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

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

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

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

 

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

 

$loader->addPath($template_dir);

 

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

 

 

Link to comment
Share on other sites


по простому сгделал ик. файл /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 предлагал через события сгделать, но я не вникал как это, меня ик устраивало пока

Edited by lexxkrt
Link to comment
Share on other sites


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

файл /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']);
}

 

Link to comment
Share on other sites


  • 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 2
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.