Перейти к содержанию
  • В связи с блокировкой банка QIWI оплата через сайт не возможна.
    Для оплаты и получения дополнений просьба писать в личные сообщения
    Admin*у
    После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

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


Рекомендуемые сообщения

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...