Перейти к содержанию

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня не сработал данный способ, версия 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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 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));
            }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От redmoon
      Всем привет, суть задачи: есть категория в которой товары выводяться например по 15 штук по 4 ряда и 4 столбца, тоесть последняя клетка грубо говоря пустая. Вот в нее нужно поместить ссылку на следующую страницу в категории, при переходее не нее уже будет на ее месте ссылка на следующую и так далее. Никогда не работал  с классом  Pagination, как правильно с него получить данные о следуюющей странице и вывести в списке товаров? Ocstore 2.3
    • От autonavi
      Вопрос к знающим.
      Если зайти в категорию "1", далее зайти в любой товар в этой категории и после попытаться снова нажать на категорию "1" - назад не выйти, только стрелкой в браузере или в любую другую категорию. Заметил такое на шаблоне Unishop. (Проблема такая же и в демо шаблона)
       
      Вот пример: http://unishop-template.tw1.ru/ipod-classic
      Нельзя снова нажать на категорию "Компьютеры и периферия"
      На любую другую - можно.
       
      Кто знает как решить? 
    • От spectre
      499.00 руб
      Скачать/Купить дополнение


      Скрытие категорий от групп покупателей Hide Categories From Customer Groups 2.1-2.3.x
      Модуль позволяет скрыть категории товаров и товары которые в них находятся от некоторых групп покупателей путем установки галочки напротив группы покупателей в настройках категории (на скриншоте)
       
      Примеры использования: 
      - Оптовые категории и и товары в них и розничные, которые не пересекаются
      - "Временные категории" для обработки прайсов, недооформленных товаров и тп
      - Переучет в какой-либо категории
      - и многое другое
       
       
      Версия для 2.3.x и 2.1.х
       
      Кому нужно - могу дать потрогать демо
       
      Адаптация под версии линейки 2.х - бесплатная после покупки
       
       
      ОЧЕНЬ ВАЖНО!!!
      Модуль использует стандартный функционал и изменяет стандартные модели категории и товара для определения доступа
       
      Если у вас какой-то модуль супермегаменю или суперстена категорий, который использует свои модели, отличающиеся от "родных" - адаптация недорогая но платная
       
      Под популярные шаблоны - >300 покупок на форуме - адаптация бесплатная, под остальные - недорого, пишите в лс
       
      Уточняйте эти моменты ДО покупки!
       
       
      Имеются патчи под шаблоны:
      1. Newstore
      2. To be continued
       
      Лицензия - 1 домен
       
      Какие-то вопросы - пишите в личку, разберемся
       
      Добавил spectre Добавлено 21.06.2018 Категория Модули Системные требования Сайт разработчика https://freelancer.od.ua Старая цена 800 Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3  
    • От spectre
      Модуль позволяет скрыть категории товаров и товары которые в них находятся от некоторых групп покупателей путем установки галочки напротив группы покупателей в настройках категории (на скриншоте)
       
      Примеры использования: 
      - Оптовые категории и и товары в них и розничные, которые не пересекаются
      - "Временные категории" для обработки прайсов, недооформленных товаров и тп
      - Переучет в какой-либо категории
      - и многое другое
       
       
      Версия для 2.3.x и 2.1.х
       
      Кому нужно - могу дать потрогать демо
       
      Адаптация под версии линейки 2.х - бесплатная после покупки
       
       
      ОЧЕНЬ ВАЖНО!!!
      Модуль использует стандартный функционал и изменяет стандартные модели категории и товара для определения доступа
       
      Если у вас какой-то модуль супермегаменю или суперстена категорий, который использует свои модели, отличающиеся от "родных" - адаптация недорогая но платная
       
      Под популярные шаблоны - >300 покупок на форуме - адаптация бесплатная, под остальные - недорого, пишите в лс
       
      Уточняйте эти моменты ДО покупки!
       
       
      Имеются патчи под шаблоны:
      1. Newstore
      2. To be continued
       
      Лицензия - 1 домен
       
      Какие-то вопросы - пишите в личку, разберемся
       
    • От chobitok
      Привет ребят, помогите пожалуйста с идеей фикс, в opencart 2.1.0.1 не могу додуматься как реализовать следующую задачу: 
      Имеется ветка категорий а->б->в
      на фронтэнде - на странице категории "в" , выводится имя категории "в"   
      Как реализовать вывод  на странице категории "в" имя категорий в таком виде "имя категории б" "какой то там знак" "имя категории в" (в контроллере что делать не знаю 😞) 
       
      Другими словами у меня реализация самих категорий на сайте в таком виде  родительская>дочерняя1>дочерняя2>дочерняя3
      надо в категории дочерняя3 чтоб выводилось имя категорий дочерняя2>дочерняя3, следовательно в дочерняя2 выводилось дочерняя1>дочерняя2 и так далее
  • Последние посетители   0 пользователей онлайн

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

×