Краткая заметка на тему вывода переменной из собственной таблицы из БД сайта в шаблон страницы 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;};?>
Ну вот, в принципе, и все. Алгоритм действий простой и никакой «магии» тут нет.