Поиск файла контроллера соответствующего файла .tpl в opencart 2.0.3

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

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

C:\xampp\htdocs\grceducators\catalog\view\theme\pav_flashshop\template\common\product\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>

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

Можете ли вы показать код контроллера, где вы устанавливаете эту переменную?

MorganFreeFarm 17.09.2018 16:55

попробуйте использовать notepad ++ для поиска, где отображаются default.tpl. Используйте «Найти в файлах» и добавьте поисковую фразу default.tpl

K. B. 17.09.2018 21:22

@MorganFreeFarm Я включил сюда два блока кода моего контроллера. здесь // $ data ['duration'] = html_entity_decode ($ product_info ['duration'], ENT_QUOTES, 'UTF-8'); $ data ['расписание'] = html_entity_decode ($ product_info ['расписание'], ENT_QUOTES, 'UTF-8'); и здесь // $ data ['products'] [] = array ('duration' => $ result ['duration'], 'schedule' => $ result ['schedule'], 'href' => $ this- > url-> ссылка ('product / product', 'product_id ='. $ result ['product_id'])); используя этот контроллер, я действительно успешно отображаю на странице продукта.

Sadhik Husain 18.09.2018 13:49

@ K.B. Спасибо за ответ . Я уже пробовал искать, но безуспешно.

Sadhik Husain 18.09.2018 13:50

@ в общем / домашнем контроллере у меня есть эти файлы. if (isset ($ this-> request-> get ['route'])) {$ this-> document-> addLink (HTTP_SERVER, 'canonical'); } $ data ['column_left'] = $ this-> load-> controller ('common / column_left'); $ data ['column_right'] = $ this-> load-> controller ('common / column_right'); $ data ['content_top'] = $ this-> load-> контроллер ('common / content_top'); $ data ['content_bottom'] = $ this-> load-> контроллер ('common / content_bottom'); $ data ['нижний колонтитул'] = $ this-> load-> controller ('common / footer'); $ data ['header'] = $ this-> load-> controller ('общий / заголовок');

Sadhik Husain 18.09.2018 13:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
641
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Некоторые файлы контроллеров, которые вы видите в папке 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 ().

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

  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;

Это действительно хорошее объяснение, Фрэнк. Поскольку я новичок в Opencart, я изучил поток данных на домашнюю страницу. так как я использую версию pavo flshshop 2.0.3. Первым делом не повозился с контроллером. поскольку нет файла с таким именем. поэтому я выбрал второй метод. и я вставляю предоставленный вами код и получаю эту ошибку. Примечание: Неопределенный индекс: класс в C: \ xampp \ htdocs \ grceducators \ catalog \ controller \ common \ context nt_top.php в строке 77.

Sadhik Husain 24.09.2018 09:01

Привет, Садхик, спасибо, я отредактировал этот код, я не тестировал его, но вы больше не должны получать эту ошибку уведомления

Frank 24.09.2018 12:53

Другие вопросы по теме