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

отображение блока при условии

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

Здравствуйте.

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

Спасибо.

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


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

В catalog/controller/product/product.php примерно 73 строка добавьте

$this->data['cat_id'] = $category_id;

и в catalog/view/theme/ваш_шаблон/template/product/product.tpl в нужном месте

<?php if ($cat_id == 0) { ?><div class="ваш_класс_блока"></div><?php } ?>

вместо 0 подставьте айди нужной категории

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


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

на месте блока выдает ошибку:

Notice: Undefined variable: cat_id in/home/m/maslenkaru/public_html/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl on line 238

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


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

не помогает. чистил содержимое директории /system/cache

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


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

))) хорошие ответы на авось ))) Не зная версии давать ответы еще и приблизительно указывая строчку ))

 

lof

укажите версию движка и желательно сайт, дабы знать как устроен урль до товара.

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


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

opencart 1.5.2.1

http://maslenkaspb.ru/

блок "запись в автосервис" должен отображаться только в категории в карточках товаров, которые находятся в категории "Моторное масло" (в нем 3 подкатегории, ну и дальше там ветвление)

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


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

перед 

$this->load->model('catalog/manufacturer');	

добавить это

$cat = explode('_', (string)$this->request->get['path']);
$this->data['cat_id'] = $cat[0];

а далее в шаблоне как написали выше..

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


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

работает, но проявилась ошибка: если переходишь в карточку товара по иерархическому пути, т.е. жмешь моторное масло -> оригинальное масло -> производитель -> марка масла (карточка товара), то все ок, но если перейти в карточку товара минуя подкатегории, а сразу нажать на товар в блоке "хиты продаж", то выдает ошибку: Notice: Undefined index: path in /home/m/maslenkaru/public_html/vqmod/vqcache/vq2-catalog_controller_product_product.php on line 45 

и не выводит нужный блок

в блоке "хиты продаж" нет категории с айди

 

upd. на сколько мне подсказывает логика, надо запилить новую категорию, дать ей свой айди и запихнуть в "хиты продаж" вместо того, что сейчас там, и в условии дописать что-то типа:

if (($cat_id == xx) || ($cat_id == yy))

но пока не понимаю, как это сделать

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


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

нет. При переходе с главной, мы не знаем к какой категории принадлежит товар. На скорую руку (чтобы не было ошибки) можно только проверять существование переменной if (isset($cat_id))

А по хорошему надо дописывать функционал в контроллере, на предмет... получения корневой категории товара.

Или ставить сеопро... тогда откуда не заходи.. будет ссылка с категориями

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


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

с проверкой блок отображается, но все равно сверху ошибка

Notice: Undefined index: path in /home/m/maslenkaru/public_html/vqmod/vqcache/vq2-catalog_controller_product_product.php on line 45

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


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

нет. При переходе с главной, мы не знаем к какой категории принадлежит товар. На скорую руку (чтобы не было ошибки) можно только проверять существование переменной if (isset($cat_id))

А по хорошему надо дописывать функционал в контроллере, на предмет... получения корневой категории товара.

Или ставить сеопро... тогда откуда не заходи.. будет ссылка с категориями

я php знаю на базовом уровне, сам вряд ли осилю

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


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

Не мучайтесь - вот решение без правки файлов и всего такого

SEO CMS 5 PRO

Там есть связь с категориями

 

http://opencartadmin.com/occms-5-kak-dobavit-v-kartochku-produkta-obzor-tab.html

Ну и суть вы поймете, фактически таб - это блок, можно с другой привязкой, тогда блок будет в нужном вам месте,

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


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

в контроллере замените на это

if (isset($this->request->get['path'])) {
$cat = explode('_', (string)$this->request->get['path']);
$this->data['cat_id'] = $cat[0];
} else {
$this->data['cat_id'] = false;
}

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


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

правильно я понимаю, это: 

$cat = explode('_', (string)$this->request->get['path']);
$this->data['cat_id'] = $cat[0]; 

заменить на это:

 

 

в контроллере замените на это

if (isset($this->request->get['path'])) {
$cat = explode('_', (string)$this->request->get['path']);
$this->data['cat_id'] = $cat[0];
} else {
$this->data['cat_id'] = false;
}

 

?

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


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

да

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


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

да

именно с таким кодом вообще никакого эффекта О_о

блок по-прежнему отображается во всех карточках товаров

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


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

значит ищите ошибку. 

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


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

Не решили проблему?

Тоже очень нужно...

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.