Разные шаблоны страниц

категория: , Дорабатываем


Опубликовано: 02.11.2015 Просмотров: 4522 Комментарии: 4


Разные шаблоны страниц

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


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

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

<?php if($product_id == 563){ ?>
	Расположение: <?php echo $location; ?><br>
	Код производителя: <?php echo $sku; ?>
<?php } ?>

Этот подход хорош тем, что его сделать не сложно, быстро и удобно. Однако, в ситуациях когда для каждого товара надо сделать вывод разных данных этот метод превратит код шаблона 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 т.к. он будет отвечать лишь за отображения товара в котором мы прописали этот шаблон.


Комментарии:


Фото комментатора

LikePro 11.02.2016

Да давай больше говнокода в opencart. А потом после таких горе-специалистов приводить все порядок приходиться...
Администратор

Ответ for-opencart.com 11.02.2016

И в чем "говнокод"?)) Докажи. И что после этого исправлять надо будет? Если ты считаешь это говнокодом - чего же ты тут делаешь?

Фото комментатора

Сергей 10.10.2016

Вы пишите: "Однако, учитывая особенность структуры opencart создать для каждого товара свой шаблон не составит труда." - но приводите пример на применении с переделкой языкового кода, и последующего его вывода но путем вставки вместо его, нужного кода в наш шаблон? Я правильно понял?
Администратор

Ответ for-opencart.com 10.10.2016

Я не совсем понял. В статье описано техника применения разных шаблонов, которые настраиваются.

Фото комментатора

Сергей 17.05.2017

Вы пишите: "Однако, учитывая особенность структуры opencart создать для каждого товара свой шаблон не составит труда." - но приводите пример на применении с переделкой языкового кода, и последующего его вывода но путем вставки вместо его, нужного кода в наш шаблон? Я правильно понял?
Администратор

Ответ for-opencart.com 17.05.2017

Не совсем понял о чем разговор, какой языковый код??

Если речь о php конечно надо его править что бы работало.

Сам процесс не сложный и легко реализуется

Фото комментатора

Екатерина 05.10.2017

Спасибо за статью, помогла разобраться в вопросе, который мучал целых два дня! Спасибо автроу за разжованную инструкцию :)
Администратор

Ответ for-opencart.com 05.10.2017

Пожалуйста, пользуйтесь :)

Быстрый поиск

Новое на сайте