Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

Задача не раз подымалась - "Как сделать свой шаблон для категорий?"

И вот тоже столкнулся с такой штукой, но все что пишут в "интернетах" не подходит, так как по тем инструкциям можно назначить шаблон только для категории с определенным ID.
Я решил сделать все по-другому. Может быть не совсем правильно, но все же думаю идея заслуживает внимания.
 

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

Создаем новую схему  - Система - Дизайн - Схемы   - Назовем ее "Подкатегория" и id у нее - '12'

В админке у нужной категории на вкладке "Дизайн" выбираете созданную схему "Под категория"

 

Теперь в папке с шаблоном создаете шаблон для вывода вашей "особенной" категории к примеру catalog/view/theme/.../product/subcategory.tpl - содержимое можно взять с оригинала category.tpl (и изменить под себя)

 

Теперь в контролере категорий - 

catalog/controller/product/category.php

Задаем определение схемы отображения:

после 10 строки $this->load->model('tool/image'); 

 

добавляем

if ('product/category' && isset($this->request->get['path'])) {
$path = explode('_', (string)$this->request->get['path']);
$this->data['layout_id'] = $this->model_catalog_category->getCategoryLayoutId(end($path)); 
}

дальше находим примерно 405 строка (в версии 1.5.4.1 - 350 строка)

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

И заменяем на

if ($this->data['layout_id'] == 12) {$this->template = $this->config->get('config_template') . '/template/product/subcategory.tpl';
} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
} 

где 12 это id вашей схемы "Подкатегория", а subcategory.tpl ваш файл с шаблоном вывода категории

 

Все теперь шаблон для вашей категории будет браться из файла subcategory.tpl

Аналогично можно сделать и для информационных страниц!!!

 

Не забудьте, что модули тоже придется вывести в схему "Подкатегория"

Надіслати
Поділитися на інших сайтах

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

Надіслати
Поділитися на інших сайтах

  • 1 month later...

У меня не сработал данный способ, версия osstore 1541, сделал всё 1 в 1, создал лейаут, ид16, подключил категорию на этот лейаут, отредактировал category.php

в результате выводится тот же самый шаблон category.tpl, а subcategory.tpl нет.

 

upd в версии 1541 нужно менять строки 350 в шаблоне category.php

всё подключилось!

Надіслати
Поділитися на інших сайтах


У меня не сработал данный способ, версия osstore 1541, сделал всё 1 в 1, создал лейаут, ид16, подключил категорию на этот лейаут, отредактировал category.php

в результате выводится тот же самый шаблон category.tpl, а subcategory.tpl нет.

 

upd в версии 1541 нужно менять строки 350 в шаблоне category.php

всё подключилось!

Спасибо за тестирование на 1541, я на нем не проверял (только на 1551)

Надіслати
Поділитися на інших сайтах

  • 3 years later...
В 17.02.2014 в 01:27, Waha сказал:

Задача не раз подымалась - "Как сделать свой шаблон для категорий?"

И вот тоже столкнулся с такой штукой, но все что пишут в "интернетах" не подходит, так как по тем инструкциям можно назначить шаблон только для категории с определенным ID.
Я решил сделать все по-другому. Может быть не совсем правильно, но все же думаю идея заслуживает внимания.
 

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

Создаем новую схему  - Система - Дизайн - Схемы   - Назовем ее "Подкатегория" и id у нее - '12'

В админке у нужной категории на вкладке "Дизайн" выбираете созданную схему "Под категория"

 

Теперь в папке с шаблоном создаете шаблон для вывода вашей "особенной" категории к примеру catalog/view/theme/.../product/subcategory.tpl - содержимое можно взять с оригинала category.tpl (и изменить под себя)

 

Теперь в контролере категорий - 


catalog/controller/product/category.php

Задаем определение схемы отображения:

после 10 строки $this->load->model('tool/image'); 

 

добавляем


if ('product/category' && isset($this->request->get['path'])) {
$path = explode('_', (string)$this->request->get['path']);
$this->data['layout_id'] = $this->model_catalog_category->getCategoryLayoutId(end($path)); 
}

дальше находим примерно 405 строка (в версии 1.5.4.1 - 350 строка)


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

И заменяем на


if ($this->data['layout_id'] == 12) {$this->template = $this->config->get('config_template') . '/template/product/subcategory.tpl';
} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
} 

где 12 это id вашей схемы "Подкатегория", а subcategory.tpl ваш файл с шаблоном вывода категории

 

Все теперь шаблон для вашей категории будет браться из файла subcategory.tpl

Аналогично можно сделать и для информационных страниц!!!

 

Не забудьте, что модули тоже придется вывести в схему "Подкатегория"

приветствую. В опенкарт 2.2 и дальше в controller/product/category.php вторая замена выглядит иначе. Что здесь можно поменять, чтоб задать условие для определённых значений id категорий?

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
                $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));
            } else {
                $this->response->setOutput($this->load->view('default/template/product/category.tpl', $data));
            }

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.