Стандартное исполнение интернет-магазина на движке OpenCart позволяет выполнить покупателю и продавцу выполнить элементарные вещи, это найти интересующий товар в каталоге, положить его в корзину, и оформить заказ. Иногда этого бывает вполне достаточно для функционирование простого магазина на OpentCart. Однако рано или поздно те или иные доработки интернет-магазина приведут к тому, что возникнет необходимость оперировать дополнительными данными в системе. Как мы знаем в администраторской части по умолчанию предусмотрено множество полей с различными данными, однако не все из них показываются в публичной части сайта, далее речь пойдет о данных в карточки товара. В этом посту рассмотрим простой пример, как можно вывести артикул в OpenCart на карточке товара. Артикул товара вы можете заметить в администраторской части, на форме редактирования товара.
В публичной части его нет, да и не всегда он бывает нужен. Однако, когда возникнет потребность в его использовании, у вас есть возможность вывести его.
Итак, если вы немного знакомы с тем как работает движок, у вас уже есть представление о контроллере, и виде. Данная концепция разделения кода и отображения (MVC) в целом используется в подавляющем большинстве движков, по этой причине если вам уже приходилось сталкиваться с подобным, вам будет проще.
Первым делом, нужно добавить данные в контроллере, чтобы в последующем ими можно было воспользоваться в «виде» страницы.
Откройте файл контроллера:
catalog/controller/product/product.php
Далее следует найти строку вида:
$data['model'] = $product_info['model'];
Добавьте перед этой строкой или после строку:
$data['sku'] = $product_info['sku'];
Передавая в массив данные с ключом sku в шаблоне отображения страницы, мы теперь получим переменную $sku, в которой собственно и будет находиться значение артикула. Таким образом, при надобности можно производить какие-либо манипуляции с данными, мы же просто выведем значение этой переменной в шаблоне активной темы.
Откройте шаблон отображения страницы товара:
catalog/view/theme/mytheme/template/product/product.tpl
Далее найдите следующую строку кода:
<li><?php echo $text_model; ?> <?php echo $model; ?></li>
Добавляем вывод значения переменной $sku:
<?php if($sku): ?> <li>Артикул: <?=$sku;?></li> <?php endif; ?>
В примере мы название параметра «Артикул» прямо в самом шаблоне. Хорошим тоном является выводить данные значения в языковые файлы. Это избавить вас от лишней волокиты при переключении языков на сайте. Добавить значение в языковой файл не составляет большого труда, давайте это сделаем. Первым делом следует добавить значение в языковой файл, который располагается по следующему пути:
catalog/language/язык_сайта
Добавляем в начале или в конце строку:
$_['text_sku'] = 'Vendor Code:'; // для анг. языка $_['text_sku'] = 'Артикул:'; // для русского языка
Далее, как и говорилось ранее, чтобы воспользоваться
значениями в самом шаблоне отображения, в контроллере следует добавить данные в массив:
$data['text_sku'] = $this->language->get('text_sku');
Имя параметра будет взято в соответствии с текущим языком
сайта. В свою очередь в шаблоне отображения следует вписать переменную $text_sku таким образом:
<li><?= $text_sku; ?> <?=$sku;?></li>
После сохранения изменений самое время проверить результаты правок. Если всё было верно, то в качестве значения в переменной $text_sku будет передано название параметра SKU на языке сайта, а в переменной $sku будет передано значение самого артикула.