Search code examples
phpopencart-3

Showing message Twig_Error_Loader in open cart


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


Solution

  • 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/');
        }