Как же бывает часто при разработке интернет-магазина на базе opencart надо для некой категории или для определенного товара делать вывод по другому шаблону или же для определенных позиций выводить специфические данные.

Как правило, многие программисты делают условия для вывода другого дизайна, зная id категории или товара, например:

 Расположение: 
Код производителя:

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

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

Для начала сделаем поле для ввода имени используемого шаблона страницы в админке. Для этого я рекомендую использовать любую ненужную вам переменную, например mpn, эта переменная появилась в версии 1.5.5.1 и на практике лишь единицы её используют. Если вы в ней не сохраняете никаких данных то смело можно использовать под наши цели. mpn в opencart имеет ограничение в 64 символa на уровне базы данных, но для названия шаблона страницы хватит. Для того, что бы её задействовать в магазине достаточно просто изменить языковый файл и переименовать «mpn» в «Имя шаблона» в файле /admin/language/russian/catalog/product.php

Далее в админке пишем название, например template_for_notebook, в директории /catalog/view/theme/default/template/product копируем файл product.tpl и назначаем ему имя которое соответствует введенному только уже с расширение .tpl в нашем случае это template_for_notebook.tpl.

Для того что бы все это заработало нам необходимо просто заменить пару строчек в файле /catalog/controller/product/product.php. Находим:

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/product.tpl'; } else { $this->template = 'default/template/product/product.tpl'; } 

Заменяем на код

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$product_info['mpn'].'.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/'.$product_info['mpn'].'.tpl'; } else { if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/product.tpl'; } else { $this->template = 'default/template/product/product.tpl'; } }

После этих манипуляций можно смело редактировать файл /catalog/view/theme/default/template/product/template_for_notebook.tpl т.к. он будет отвечать лишь за отображения товара в котором мы прописали этот шаблон.


02.11.2015 21289
Новости из этой категории
11.09.2019 5068
В Opencart при копировании товара удаляет
Во втором Opencart замечен странный баг который вместо копирования товара в списке его удаляет. Что бы исправить необходимо открыть файлadmin/view/template/catalog/produc..
15.11.2018 17423
Как вывести любую информацию в любом месте в карточке товара
Приветствую тебя юный разработчик! Очень часто в заданиях или целых проектах у меня бывают похожие пункты. Очень популярный это вывод информационного блока в карточке тов..
29.09.2018 8222
Исправляем баг Opencart редирект с page=1 на страницу категории
В пагинации Opencart зарыто очень много багов. Например при перелистывании категории кнопками 1.2.3... у нас создаются дубли страниц, которые можно решить с помощью внедр..
11.02.2018 8005
Как задать разный порядок сортировки товара для каждой из категорий к которому он привязан
Приветствую! Недавно мне написал заказчик который попросил меня сделать достаточно интересную доработку. Суть ее в том что надо сделать порядок сортировки товара который ..
23.01.2018 9945
Пропадают заказы в Opencart - как вылечить?
Очень часто ко мне обращаются мои клиенты с просьбой разобраться почему у них пропадают заказы. То есть клиенты звонят и говорят что заказ сделали но никто не перезванива..
Вся информация, представленная на сайте, является демонстрационной и оставляя информацию о своих персональных данных, вы добровольно делаете их общедоступными.
Рекомендуем использовать обезличенные данные. Мы используем файлы cookie для вашего удобства пользования сайтом и повышения качества рекомендаций. Подробнее