От автора: приветствую вас, друзья. Итак, мы продолжаем цикл статей, посвященных знакомству с одной из популярнейших 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 вы можете узнать из наших бесплатных или платных уроков.