Showing message Twig_Error_Loader in open cart

2019-07-31 16:26发布

问题:

I am using open cart version 3. And I got the following message: Twig_Error_Loader in open cart after replacing theme files.

Full error:

 Fatal error: Uncaught exception 'Twig_Error_Loader' with message 'Unable to 
find template "common/column_left.twig" (looked into: 
C:/xampp/htdocs/fast/catalog/view/theme).' in 
C:\xampp\htdocs\fast\system\library\template\Twig\Loader\Filesystem.php:215 
Stack trace: #0  
 C:\xampp\htdocs\fast\system\library\template\Twig\Loader\Filesystem.php(139 
Twig_Loader_Filesystem->findTemplate('common/column_l...') #1 
C:\xampp\htdocs\fast\system\library\template\Twig\Environment.php(312): 
Twig_Loader_Filesystem->getCacheKey('common/column_l...') #2 
C:\xampp\htdocs\fast\system\library\template\Twig\Environment.php(378): 
Twig_Environment->getTemplateClass('common/column_l...', NULL) #3 
C:\xampp\htdocs\fast\system\library\template\twig.php(52): Twig_Environment-
>loadTemplate('common/column_l...') #4 
C:\xampp\htdocs\fast\system\library\template.php(22): Template\Twig-
>render('common/column_l...', false, 'fastor') #5 
C:\xampp\htdocs\fast\system\engine\loader.php(86): Template-
>render('common/column_l...', Object(Registry), '1') #6 C:\xampp\ in 
C:\xampp\htdocs\fast\system\library\template\Twig\Loader\Filesystem.php on 
line 215

Your help will be greatly appreciated

回答1:

it looks that the problem resides in catalog/controller/event/theme.php

the Code assigns a path only when $theme:info isn't set.

    if ($theme_info) {
        $template = html_entity_decode($theme_info['code'], ENT_QUOTES, 'UTF-8');
    }elseif (is_file(DIR_TEMPLATE . $theme . '/template/' . $route . '.twig')) {
        $this->config->set('template_directory', $theme . '/template/');
    } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $route . '.twig')) {
        $this->config->set('template_directory', 'default/template/');
    }

I modified the code to this. Now a path is asigned and the whole thing works. You still have to reload the cache to see modification.

if ($theme_info) {
        $template = html_entity_decode($theme_info['code'], ENT_QUOTES, 'UTF-8');
    } 
    if (is_file(DIR_TEMPLATE . $theme . '/template/' . $route . '.twig')) {
        $this->config->set('template_directory', $theme . '/template/');
    } elseif (is_file(DIR_TEMPLATE . 'default/template/' . $route . '.twig')) {
        $this->config->set('template_directory', 'default/template/');
    }