Opencart добавляет дополнительный макет tpl для категории

Я пытаюсь настроить дополнительные макеты страниц и категорий в Opencart 1.5.4.

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

Если я укажу изменение в файле .htaccess, новый шаблон загрузится, как и ожидалось, но это не правильный ответ на проблему (хотя он работает).

Дополнение к .htaccess (уверен, не правильный метод)

RewriteRule ^skis$ index.php?route=product/categories&path=1  [L,QSA]

Я создал два новых файла

/catalog/view/theme/default/template/product/categories.tpl
/catalog/controller/product/categories.php

В /catalog/controller/product/categories.php я изменил содержимое, чтобы отразить новый файл tpl;

class Controllerproductcategories extends Controller {

.

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

Подводя итоги

  1. Если я укажу перезапись в файле .htaccess, макет загрузится, если я этого не сделаю, то нет.
  2. Я добавил новый макет в OC и выбрал его по категориивведите описание изображения здесьвведите здесь описание изображения

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

Tx заранее

Стью


person Stuart    schedule 29.11.2012    source источник


Ответы (2)


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

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

person Jay Gilford    schedule 30.11.2012
comment
Таким образом, макеты предназначены для использования с модулями OC, а не для переопределения файла шаблона. Ах, это отстой. Спасибо за ссылку на плагин, но я буду придерживаться подхода .htaccess, моя вера в плагины с каждым днем ​​становится все хуже, обновления, отсутствие тестирования, особенно с большими наборами продуктов и т. д. - person Stuart; 30.11.2012

В конце концов я выбрал этот подход ... может помочь кому-то еще.

if ($this->data['heading_title'] == "Skis") {

    $this->template = $this->config->get('config_template') . '/template/product/categories.tpl';

} elseif ($this->data['heading_title'] == "Softgoods") {

    $this->template = $this->config->get('config_template') . '/template/product/category.tpl';

} elseif ($this->data['heading_title'] == "Outlet Store") {

    $this->template = $this->config->get('config_template') . '/template/product/category.tpl';

} else {

    $this->template = $this->config->get('config_template') . '/template/product/category.tpl';

}
person Stuart    schedule 30.11.2012
comment
Хорошо, хотя вам, вероятно, было бы лучше использовать оператор switch, а не все эти операторы if else. - person Jay Gilford; 30.11.2012