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

Как на встроенных модулях типа хиты продаж оставлять товары у которых количество больше 0


sinco

Recommended Posts

Как на встроенных модулях типа хиты продаж оставлять товары у которых количество больше 0.

То есть когда то я напродавал один товар, а сейчас он уже закончился (количество 0), по этому его нужно скрыть пока он снова не появится в наличии

Это относится к модулям акции, хиты продаж, рекомендуемые

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


<?php
class ControllerModuleBestSeller extends Controller {
	protected function index($setting) {
		$this->language->load('module/bestseller');
 
      	$this->data['heading_title'] = $this->language->get('heading_title');
		
		$this->data['text_sale'] = $this->language->get('text_sale');
				
		$this->data['button_cart'] = $this->language->get('button_cart');
		
		$this->data['button_wishlist'] = $this->language->get('button_wishlist');
		
		$this->data['button_compare'] = $this->language->get('button_compare');
		
		$this->load->model('catalog/product');
		
		$this->load->model('tool/image');

		$this->data['products'] = array();

		$results = $this->model_catalog_product->getBestSellerProducts($setting['limit']);
		
		foreach ($results as $result) {
			if ($result['image']) {
				$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
			} else {
				$image = false;
			}
			//this for swap image
				
				$images = $this->model_catalog_product->getProductImages($result['product_id']);

            if(isset($images[0]['image']) && !empty($images[0]['image'])){
                  $images =$images[0]['image'];
               } 
			   
				//
			
			if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
				$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
			} else {
				$price = false;
			}
					
			if ((float)$result['special']) {
				$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
			} else {
				$special = false;
			}	
			
			if ($this->config->get('config_review_status')) {
				$rating = $result['rating'];
			} else {
				$rating = false;
			}
							
			$this->data['products'][] = array(
				'product_id' => $result['product_id'],
				'thumb'   	 => $image,
				// for swap image
					'thumb_swap'  => $this->model_tool_image->resize($images, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')), 
					//
				'name'    	 => $result['name'],
				'price'   	 => $price,
				'special' 	 => $special,
				'rating'     => $rating,
				'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
				'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id']),
			);
		}

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

		$this->render();
	}
}
?>

где именно и как прописать это???
Вот код контроллера

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


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

в контроллере, выводить только если quantity > 0

там выборка с LIMIT

 

1 минуту назад, sinco сказал:

где именно

в модели поправить

только убедится что выборка только этим модулем используется

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

1 минуту назад, Otvet сказал:

там выборка с LIMIT

Да, верно, но я подумал что если человек задал такой вопрос то про модель будет сложно)

 

Тем более трудно представить ситуацию чтобы самые хитовые товары кончались и продавец не бежал их сам покупать) Ну в общем так чтоб самому сделать я ответил

 

Ну вот, выше все описано))

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

если в контроллере - обернуть $this->data['products'][] = array(

в условие

 

if ($result['quantity'] > 0) {
			$this->data['products'][] = array(
				'product_id' => $result['product_id'],
				'thumb'   	 => $image,
				// for swap image
					'thumb_swap'  => $this->model_tool_image->resize($images, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')), 
					//
				'name'    	 => $result['name'],
				'price'   	 => $price,
				'special' 	 => $special,
				'rating'     => $rating,
				'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
				'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id']),
			);
}

 

но гораздо проще в самой модели getBestSellerProducts добавить условие в выборку

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

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

трудно представить ситуацию чтобы самые хитовые товары кончались

на то они и хитовые чтоб продавались и соответственно кончались

 

не кончается то что не продается

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

6 минут назад, AlexDW сказал:

если в контроллере - обернуть $this->data['products'][] = array(

в условие

 


if ($result['quantity'] > 0) {
			$this->data['products'][] = array(
				'product_id' => $result['product_id'],
				'thumb'   	 => $image,
				// for swap image
					'thumb_swap'  => $this->model_tool_image->resize($images, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')), 
					//
				'name'    	 => $result['name'],
				'price'   	 => $price,
				'special' 	 => $special,
				'rating'     => $rating,
				'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
				'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id']),
			);
}

 

но гораздо проще в самой модели getBestSellerProducts добавить условие в выборку


 

Отлично, помогло!
Большое спасибо!

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


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

в контроллере, выводить только если quantity > 0

 

8 минут назад, AlexDW сказал:

если в контроллере - обернуть $this->data['products'][] = array(

в условие

Единственное при таком способе нужно указывать количество(лимит) выводимых товаров больше...Иначе  при лимите скажем в 5 товаров в настройках, отсекаем 1-2 с количеством ноль и на выходе имеем не понятную картинку с тем что в настройках и что по факту)))) 

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

спрашивали про контроллер - про контроллер и написал ;)

проще и правильней для этого добавить условие в саму выборку модели

 

в данном случае, если речь про стандартный модуль

в файле catalog\model\catalog\product.php

в секции public function getBestSellerProducts($limit) {

после

AND p.status = '1'

добавить

AND p.quantity > '0'

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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