Главная » Статьи » Как вывести артикул в OpenCart

Как вывести артикул в OpenCart

Как вывести артикул в OpenCart

От автора: приветствую вас, друзья. Итак, мы продолжаем цикл статей, посвященных знакомству с одной из популярнейших CMS для создания интернет-магазинов – OpenCart (Оперкарт). В этой статье мы поговорим о том, как вывести артикул в OpenCart.

В OpenCart для товара предусмотрено множество полей с различными данными, не все из которых выводятся в карточке товара. Одним из таких полей является артикул товара. Это поле есть в админской части сайта, но его нет в пользовательской части сайта и артикул не выводится в карточке товара.

Собственно, для большинства интернет-магазинов этого и не нужно, поскольку артикул является служебной информацией и пользователю он без надобности. Однако, ситуации бывают разными и вполне возможно, что вам потребуется добавить и вывести артикул в карточке товара.

Сделать это не сложно, но придется немного покопаться в коде. Далее мы напрямую будем работать с файлами движка, что не является рекомендуемым путем. Но в следующих статьях мы будем рассматривать тему создания модулей для Опенкарт и сделаем все правильно, написать соответствующий модификатор.

Итак, давайте откроем файл контроллера товара – это файл catalog/controller/product/product.php – и найдем в нем следующую строку коде:

$data['model'] = $product_info['model'];

После или перед найденной строкой добавьте вот эту:

$data['sku'] = $product_info['sku'];

Данная строка кода получает в переменную поле артикула, которое в базе данных называется sku. Теперь в шаблоне активной темы (в моем случае это catalog/view/theme/mytheme/template/product/product.tpl) будет доступна переменная $sku, которую мы и можем использовать. Давайте выведем артикул после кода товара, третьей строкой:

Для этого найдем следующую строку кода:

<li><?php echo $text_model; ?> <?php echo $model; ?></li>

И добавим после нее этот код:

<?php if($sku): ?> <li>Артикул: <?=$sku;?></li>
<?php endif; ?>

Теперь взглянем на результат:

Отлично, артикул появился. Но это еще не все. Смотрите, мы прямо в шаблоне прописали наименование поля – Артикул. Если речь идет о русской версии сайта – тогда никаких проблем. Но если переключиться на английскую версию сайта или другой язык, который там используется, то мы, по-прежнему, будем видеть ту же строку – Артикул.

Как же перевести ее и показывать нужный перевод в зависимости от языка? Очень просто. В OpenCart есть языковые файлы, которые расположены в папке catalog/language/папка_языка. Нам необходимо вписать соответствующие переводные наименования именно туда и получить их затем в контроллере и использовать в шаблоне. Давайте попробуем.

В моем случае сайт использует два языка: английский и русский. В файл catalog/language/en-gb/product/product.php я добавлю в начало эту строку:

$_['text_sku'] = 'Vendor Code:';

А в файл catalog/language/ru-ru/product/product.php – эту:

$_['text_sku'] = 'Артикул:';

Теперь вернемся в контроллер product и там, где мы получали артикул, добавим строку, которая получит соответствующий перевод из нужного языкового файла:

$data['text_sku'] = $this->language->get('text_sku');

Осталось лишь вывести перевод в шаблоне. Вернемся в шаблон и немного изменим строку, добавленную ранее. Теперь она будет такой:

<li><?= $text_sku; ?> <?=$sku;?></li>

Проверим изменения в разных языковых версиях сайта. В русской версии все осталось без изменений, тот же Артикул, а вот в английской версии теперь видим Vendor Code:

Ну что же, на этом, пожалуй, остановимся. Больше об OpenCart вы можете узнать из наших бесплатных или платных уроков.