Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Не выводить товары в категории не имеющие изображений


Recommended Posts

Здравствуйте, уважаемые форумчане!

Стоит задача: не выводить в категории товары у которых нет изображений. Простое добавление условия в контроллере или в отображении не подходит, так как этот метод getTotalProducts() считает количество товаров с изображениями и без, в связи с этим при пагинации могут быть пустые страницы. Да и просто не правильно подобные вещи не в модели делать. Но отсюда вытекает проблема: у меня плохо с построением sql запросов(тем более модели opencart это что-то). Не могу разобраться куда что добавить.

 

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

 

Буду очень благодарен за помощь)

Link to post
Share on other sites

Я надеюсь Вы не сильно покалечили файлы контроллера и модели? )))

Link to post
Share on other sites

В общем там где у Вас создается массив в контроллере категории

$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

До 

$data['products'][] = array(

Написать следующее
 

if (!empty ($image)) {

И после 

);

Поставить 

}

 

Link to post
Share on other sites

Чтобы не изменять файлы контроллера лучше написать модификатор.

Могу сделать.

Link to post
Share on other sites

добавить в модель условие
 

Цитата

AND p.image != ''

 

  • +1 1
Link to post
Share on other sites

3 минуты назад, thentru сказал:

добавить в модель условие
 

 

Зачем лезть в модель? А если гдето еще она будет использоваться, тогда что?

Link to post
Share on other sites
6 минут назад, legioner26 сказал:

Зачем лезть в модель? А если гдето еще она будет использоваться, тогда что?

Логично, что если товар скрывается на витрине, то и в любых других местах его не должно быть

Link to post
Share on other sites

Только что, thentru сказал:

Логично, что если товар скрывается на витрине, то и в любых других местах его не должно быть

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

Link to post
Share on other sites
6 минут назад, legioner26 сказал:

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

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

В данном вот случае ваше решение будет актуальным ? :)

В контроллере если делать, то можно доп условие задать, к примеру кроме этой категории.

Link to post
Share on other sites
1 минуту назад, legioner26 сказал:

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

 

В модели самое правильное решение, т.к. в случае правки контроллера придется отнимать от product_total товары без картинок, а так добавил условие и туда и туда и все в порядке, при этом при заходе напрямую товар будет работать

Link to post
Share on other sites
3 минуты назад, legioner26 сказал:

В данном вот случае ваше решение будет актуальным ? :)

В такой задаче добавить проверку на логин админа

Link to post
Share on other sites

5 минут назад, spectre сказал:

 

В модели самое правильное решение, т.к. в случае правки контроллера придется отнимать от product_total товары без картинок, а так добавил условие и туда и туда и все в порядке, при этом при заходе напрямую товар будет работать

Ну не знаю, модель если трогать, то трогать в крайних случаях. Лучше с контроллером поработать. А product_total да, надо отнимать разницу.

Link to post
Share on other sites

Ладно пойду чайку попью :) Всем спасибо за деббаты ))))

Link to post
Share on other sites
2 часа назад, legioner26 сказал:

Зачем лезть в модель? А если гдето еще она будет использоваться, тогда что?

 

Ответ

3 часа назад, yourmaze сказал:

Простое добавление условия в контроллере или в отображении не подходит, так как этот метод getTotalProducts() считает количество товаров с изображениями и без, в связи с этим при пагинации могут быть пустые страницы.

 

Link to post
Share on other sites
17 hours ago, legioner26 said:

В общем там где у Вас создается массив в контроллере категории


$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

До 


$data['products'][] = array(

Написать следующее
 


if (!empty ($image)) {

И после 


);

Поставить 


}

 

 

Спасибо за ответы, но указанный метод не поможет, так как

14 hours ago, Tom said:

Простое добавление условия в контроллере или в отображении не подходит, так как этот метод getTotalProducts() считает количество товаров с изображениями и без, в связи с этим при пагинации могут быть пустые страницы.

 

В связи с этим принял решение, что лучше изменять модель, так как проект писался с нуля и модулей использующих эту модель как-то необычно нет. Везде, где используется метод получения товаров из категории требуется фильтрация товаров без изображения. Я понимаю, что "по-феншую" нужно создать новый метод, где я поменяю то что мне нужно и буду вызывать его в нужных мне контроллерах) Но это решение временное и проект я веду, так что когда будет нужно верну все назад)

 

17 hours ago, thentru said:

добавить в модель условие
 

 

Да, до этого я дойти смог) Но не понял где добавлять. Добавлял везде, но метод начал возвращать просто пустые ячейки с id товарами. Моэете уточнить, куда именно мне дописать это условие?

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.