Расположение файла контроллера соответствующего файла .tpl в opencart 2.0.3 - PullRequest
0 голосов
/ 17 сентября 2018

Я пытался отобразить пользовательские данные на домашней странице Opencart, и мне не удалось найти контроллер, откуда данные отправляются в файл .tpl. И я использую pavo flshshop theme 2.0.3. Я добавил данные в файл catalog/controller/product/product.php (который я не уверен, правильный контроллер или нет). Когда я вызываю эту переменную в файле .tpl, она говорит "неопределенная переменная". Кто-то, пожалуйста, помогите мне откуда данные.

Это мой путь .tpl:

C: \ XAMPP \ HTDOCS \ grceducators \ каталог \ вид \ тема \ pav_flashshop \ шаблон \ Common \ продукт \ default.tpl

Вот код default.tpl:


<div class="product-meta clearfix">
    <h6 class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h6>
    <h6 class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['custom_desc']; ?></a></h6>

    <?php if( isset($product['description']) ){ ?>
        <p class="description"><?php echo utf8_substr( strip_tags($product['description']),0,200);?>...</p>
    <?php } ?>
    <div class="bottom clearfix">
        <?php if ($product['price']) { ?>
            <div class="price">
              <?php if (!$product['special']) { ?>
              <span class="price-new"><?php echo $product['price']; ?></span>
              <?php } else { ?>
              <span class="price-new"><?php echo $product['special']; ?></span><span class="price-old"><?php echo $product['price']; ?></span>
              <?php } ?>
            </div>


        <?php } ?>
         <?php if ($product['description']) { ?>
        <div class="price">
              <span class="price-new"><?php echo $product['custom_desc']; ?></span>

            </div>
            <?php } ?>
    </div>
</div>

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 21 сентября 2018

Некоторые из файлов контроллера, которые вы видите в папке catalog / controller / common, являются «контейнерами чего-то еще».Я объясню вам, что происходит, например, в файле home.php

Если вы откроете этот файл, вы увидите только несколько строк кода, некоторые из них выглядят так:

$ data ['column_left'] = $ this-> load-> controller ('common / column_left') ;

С этой единственной строкой кода Opencart загружает все модули, назначенные столбцу слева отДомашняя страница (от администратора, перейдите на страницу Дизайн -> макеты -> Главная ).

$ data ['column_left'] - это большой объект со списком модулей внутри:

( Это простопсевдокод, чтобы дать вам представление о том, как работают вещи ):

$data['column_left'] {

      module 1  {...}  controller + template    
      module 2  {...}  controller + template
      module 3  {...}  controller + template
}

каждый модуль имеет свой собственный контроллер + (модель) + шаблон

Чтобы быстро получить контроллер, который отображает ваш шаблон, сначала вы должны взглянуть на макет домашней страницы (из панели администратора).Вы увидите четыре основных раздела: содержимое вверху , содержимое внизу , столбец слева , столбец справа".

Проверьте на своей домашней странице, где распечатывается ваш контент. Если, например, он находится в левом столбце, модуль, отображающий файл tpl, является одним из модулей, перечисленных в левом столбце вашего (Admin) домашнего макета.

Обычно имен модулей достаточно, чтобы узнать, какие модули (затем какие контроллеры) отображают tpl (обычно вам нужно только заглянуть в каталог catalog / controller / extension / module, чтобы найти имя файла, совпадающее с именем модуля).на странице макета).

Метод, который я описал вам, работает в большинстве случаев без необходимости использования какого-либо инструмента отладки.

Я встречал сторонние расширения, написанные как кубики Рубика.В случаях, когда вы должны использовать debug_backtrace () .

Эта функция, особенно на больших платформах, может выводить тонны данных.t функция, я советую вам:

  1. найти, в каком разделе страницы отображается содержимое ( верх сверху , низ снизу , столбец слева , столбец справа ), затем откройте файл каталог / контроллер / общий / [ your_section ]. Php

  2. скопируйте следующий код внизу этого файла (я вставляю вам модифицированную версию debug_backtrace (), она форматирует вывод, чтобы вы могли легко прочитать ее из браузера):


// PHP < 5.3.6    
foreach (debug_backtrace() as $trace) {    
echo sprintf("\n%s:%s %s::%s", (isset($trace['file'])? $trace['file'] : '') , (isset($trace['line'])? $trace['line'] : ''), (isset($trace['class'])? $trace['class'] : ''), (isset($trace['function'])? $trace['function'] : ''));    

}    
die;

// PHP >= 5.3.6    
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);    
die;
...