Вывод переменной из таблицы SQL в шаблоне opencart

Краткая заметка на тему вывода переменной из собственной таблицы из БД сайта в шаблон страницы CMS Opencart.

Итак, вы создали таблицу в БД, которая хранит какие-либо данные (Для примера, в данной заметке рассматривается таблица, в которой хранится процент скидки для оптовиков). Следующим шагом будет выведение данной переменной где-нибудь на страницах сайта. Например, на списке товара (для карточки товара, страницы результатов поиска и страницы бренда алгоритм решения идентичен).

В папке catalog есть следующие папки: model, controller, view. Они-то и понадобятся нам для решения этой задачи.

Шаг первый. Модификация файла в model. 

Файл модели категории (списка товаров) расположен по адресу:

/catalog/model/catalog/category.php

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

public function getCombo() {
    $combo_name = array();
        $query = $this->db->query("SELECT OPT_SKIDKA FROM my_price_upd");

        foreach ($query->rows as $result) {
                $combo_name = $result;
    }
   
    return $combo_name;
    }

Что она делает, должно быть понятно — делается запрос на выборку в БД и записывается в массив. На этом манипуляции с моделью закончены.

Шаг второй. Модификация файла в controller.

Файл категории находится по адресу:

/catalog/controller/product/category.php

Тут надо добавить всего одну строку (она у меня расположилась на 190 строке, после переменной $product_total):

$data['combo_name'] = $this->model_catalog_product->getCombo();

Она, собственно, выполняет одну простую функцию — записывает значение из таблицы в php-переменную.

Шаг третий. Вызов переменной в view.

В view файл категории находится (в стандартном шаблоне) по адресу:

/catalog/view/theme/default/template/product/category.tpl

И тут, в нужном месте её можно вызвать, например, следующим образом:

<?foreach($combo_name as $hleb){echo $hleb;};?>

Ну вот, в принципе, и все. Алгоритм действий простой и никакой «магии» тут нет.