2016-10-17 4 views
1

Я создаю настраиваемую тему для OpenCart 2.3, и мне нужно показать дополнительную информацию в заголовке страницы (header.tpl). Поэтому я добавил некоторые переменные в каталог/контроллер/общее/header.php:Как добавить переменную в контроллер header.php и использовать ее в header.tpl

$data['some_var'] = 'some_value'; 

И тогда я пытаюсь использовать эти данные в header.tpl:

<?php echo $this->data['some_var']; ?> 

Но я всегда получаю эта ошибка:

Примечание: Undefined индекс: some_var в /var/www/store_com/public_html/catalog/view/theme/mystore/template/common/header.tpl на линии 133

Если я пытаюсь использовать этот код:

<?php echo $some_var; ?> 

Тогда я получаю другую ошибку:

Примечание: Undefined переменной: some_var в /var/www/store_com/public_html/catalog/view/theme/mystore/template/common/header.tpl на line 133

И даже когда я делаю echo print_r ($ this-> data) в header.tpl Я даже не вижу эту переменную в массиве $ data.

Что я делаю неправильно? Пожалуйста помоги.

EDIT
Вот полный код моего файла контроллера header.php. Я добавил свою пользовательскую переменную в самом конце файла.

class ControllerCommonHeader extends Controller { 
public function index() { 
    // Analytics 
    $this->load->model('extension/extension'); 

    $data['analytics'] = array(); 

    $analytics = $this->model_extension_extension->getExtensions('analytics'); 

    foreach ($analytics as $analytic) { 
     if ($this->config->get($analytic['code'] . '_status')) { 
      $data['analytics'][] = $this->load->controller('extension/analytics/' . $analytic['code'], $this->config->get($analytic['code'] . '_status')); 
     } 
    } 

    if ($this->request->server['HTTPS']) { 
     $server = $this->config->get('config_ssl'); 
    } else { 
     $server = $this->config->get('config_url'); 
    } 

    if (is_file(DIR_IMAGE . $this->config->get('config_icon'))) { 
     $this->document->addLink($server . 'image/' . $this->config->get('config_icon'), 'icon'); 
    } 

    $data['title'] = $this->document->getTitle(); 

    $data['base'] = $server; 
    $data['description'] = $this->document->getDescription(); 
    $data['keywords'] = $this->document->getKeywords(); 
    $data['links'] = $this->document->getLinks(); 
    $data['styles'] = $this->document->getStyles(); 
    $data['scripts'] = $this->document->getScripts(); 
    $data['lang'] = $this->language->get('code'); 
    $data['direction'] = $this->language->get('direction'); 

    $data['name'] = $this->config->get('config_name'); 

    if (is_file(DIR_IMAGE . $this->config->get('config_logo'))) { 
     $data['logo'] = $server . 'image/' . $this->config->get('config_logo'); 
    } else { 
     $data['logo'] = ''; 
    } 

    $this->load->language('common/header'); 

    $data['text_home'] = $this->language->get('text_home'); 

    // Wishlist 
    if ($this->customer->isLogged()) { 
     $this->load->model('account/wishlist'); 

     $data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), $this->model_account_wishlist->getTotalWishlist()); 
    } else { 
     $data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), (isset($this->session->data['wishlist']) ? count($this->session->data['wishlist']) : 0)); 
    } 

    $data['text_shopping_cart'] = $this->language->get('text_shopping_cart'); 
    $data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', true), $this->customer->getFirstName(), $this->url->link('account/logout', '', true)); 

    $data['text_account'] = $this->language->get('text_account'); 
    $data['text_register'] = $this->language->get('text_register'); 
    $data['text_login'] = $this->language->get('text_login'); 
    $data['text_order'] = $this->language->get('text_order'); 
    $data['text_transaction'] = $this->language->get('text_transaction'); 
    $data['text_download'] = $this->language->get('text_download'); 
    $data['text_logout'] = $this->language->get('text_logout'); 
    $data['text_checkout'] = $this->language->get('text_checkout'); 
    $data['text_category'] = $this->language->get('text_category'); 
    $data['text_all'] = $this->language->get('text_all'); 

    $data['home'] = $this->url->link('common/home'); 
    $data['wishlist'] = $this->url->link('account/wishlist', '', true); 
    $data['logged'] = $this->customer->isLogged(); 
    $data['account'] = $this->url->link('account/account', '', true); 
    $data['register'] = $this->url->link('account/register', '', true); 
    $data['login'] = $this->url->link('account/login', '', true); 
    $data['order'] = $this->url->link('account/order', '', true); 
    $data['transaction'] = $this->url->link('account/transaction', '', true); 
    $data['download'] = $this->url->link('account/download', '', true); 
    $data['logout'] = $this->url->link('account/logout', '', true); 
    $data['shopping_cart'] = $this->url->link('checkout/cart'); 
    $data['checkout'] = $this->url->link('checkout/checkout', '', true); 
    $data['contact'] = $this->url->link('information/contact'); 
    $data['telephone'] = $this->config->get('config_telephone'); 

    // Menu 
    $this->load->model('catalog/category'); 

    $this->load->model('catalog/product'); 

    $data['categories'] = array(); 

    $categories = $this->model_catalog_category->getCategories(0); 

    foreach ($categories as $category) { 
     if ($category['top']) { 
      // Level 2 
      $children_data = array(); 

      $children = $this->model_catalog_category->getCategories($category['category_id']); 

      foreach ($children as $child) { 
       $filter_data = array(
        'filter_category_id' => $child['category_id'], 
        'filter_sub_category' => true 
       ); 

       $children_data[] = array(
        'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 
        'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) 
       ); 
      } 

      // Level 1 
      $data['categories'][] = array(
       'name'  => $category['name'], 
       'children' => $children_data, 
       'column' => $category['column'] ? $category['column'] : 1, 
       'href'  => $this->url->link('product/category', 'path=' . $category['category_id']) 
      ); 
     } 
    } 

    $data['language'] = $this->load->controller('common/language'); 
    $data['currency'] = $this->load->controller('common/currency'); 
    $data['search'] = $this->load->controller('common/search'); 
    $data['cart'] = $this->load->controller('common/cart'); 

    // For page specific css 
    if (isset($this->request->get['route'])) { 
     if (isset($this->request->get['product_id'])) { 
      $class = '-' . $this->request->get['product_id']; 
     } elseif (isset($this->request->get['path'])) { 
      $class = '-' . $this->request->get['path']; 
     } elseif (isset($this->request->get['manufacturer_id'])) { 
      $class = '-' . $this->request->get['manufacturer_id']; 
     } elseif (isset($this->request->get['information_id'])) { 
      $class = '-' . $this->request->get['information_id']; 
     } else { 
      $class = ''; 
     } 

     $data['class'] = str_replace('/', '-', $this->request->get['route']) . $class; 
    } else { 
     $data['class'] = 'common-home'; 
    } 

    //CUSTOM THEME VARIABLES BEGIN 
    $data['some_var'] = 'some_value'; 
    //CUSTOM THEME VARIABLES END 

    return $this->load->view('common/header', $data);  
} 
} 
+0

Вы видите другие переменные? Определены другие переменные? – 4EACH

+0

Да, я могу видеть все переменные по умолчанию этого контроллера, и я могу даже увидеть переменную «newsblog_categories», которая не определена в файле header.php, и я полагаю, что это связано с недавно установленным расширением блогов. Но я не вижу никаких моих переменных. –

+0

Какое расширение? Я загружу его, чтобы проверить env. – 4EACH

ответ

0

Я наконец нашел решение моей проблемы, но я не уверен, что это правильный способ сделать это. Я обнаружил, что мне нужно внести изменения в систему system/storage/modify/catalog/controller/common/header .php. Похоже, что после установки некоторого расширения через Vqmod файл контроллера был скопирован в эту папку. Если я добавлю свои переменные, я могу получить к ним доступ без каких-либо проблем.

+0

Это неправильный способ, если вы очистите свой ocmod-кеш, все ваши изменения будут потеряны, правильный способ - создать xml-файл для ocmod или vqmod. – DigitCart

0

Мне нужно видеть контроллер, чтобы получить полную картину, а потом я дам вам полный ответ, но посмотрите на контроллере и убедитесь, что вы связываете свои данные, как образец ниже:

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) { 
     return $this->load->view($this->config->get('config_template') . '/template/common/header.tpl', $data); 
    } else { 
     return $this->load->view('default/template/common/header.tpl', $data); 
    } 

Благодаря

+0

Спасибо за ваш ответ. Я пробовал ваше решение, но безуспешно. Я редактировал свой вопрос. Посмотрите полный код моего файла контроллера header.php. –

 Смежные вопросы

  • Нет связанных вопросов^_^