Jump to content

Вывод вариантов с нулевым количеством


Recommended Posts

Добрый день. Подскажите пожалуйста, как вывести варианты с нулевым количеством в карточке товара?

Сейчас варианты скрываются если в view/Product.php есть:

foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) 

Если заменить на:

foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v) 

То все работает как надо, но встречается другая проблема, а именно:

если все варианты по нулям, и потом заменить какой-то из вариантов на бесконечность, то карточка товара показывает, что товара нет в наличии.

 

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

Добрый день. Подскажите пожалуйста, как вывести варианты с нулевым количеством в карточке товара?

Сейчас варианты скрываются если в view/Product.php есть:


foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) 

Если заменить на:


foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v) 

То все работает как надо, но встречается другая проблема, а именно:

если все варианты по нулям, и потом заменить какой-то из вариантов на бесконечность, то карточка товара показывает, что товара нет в наличии.

 

разлогиньтесь )

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

разлогиньтесь )

юмор так себе...

но а если серьезно, то когда выводит что товара нет в наличии, если дважды нажать в админке сохранить товар, то выводит нормально, но зачем нажимать дважды?)) 

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

юмор так себе...

но а если серьезно, то когда выводит что товара нет в наличии, если дважды нажать в админке сохранить товар, то выводит нормально, но зачем нажимать дважды?)) 

на чистой симпле такого не наблюдаю

Link to post
Share on other sites
12 часов назад, get31 сказал:

встречается другая проблема, а именно:

если все варианты по нулям, и потом заменить какой-то из вариантов на бесконечность, то карточка товара показывает, что товара нет в наличии.

 

В стандартном шаблоне отдельного товара нигде не используется количество. Поэтому вопрос индивидуальный. Если хотите получить содержательный ответ, но надо выкладывать все свои изменения. Скорее всего, количество у Вас берет из ПЕРВОГО попавшегося варианта, поэтому и результат такой.

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

В стандартном шаблоне отдельного товара нигде не используется количество. Поэтому вопрос индивидуальный. Если хотите получить содержательный ответ, но надо выкладывать все свои изменения. Скорее всего, количество у Вас берет из ПЕРВОГО попавшегося варианта, поэтому и результат такой.

Проверил на стандартной, да действительно. Изменений много, что уже запутался)))

Но в стандартной вообще не выводятся варианты c 0 даже если убрать 'in_stock'=>true, а значит у меня тоже не отображается.

в ProductView.php у меня:

		$product_url = $this->request->get('product_url', 'string');
		
		if(empty($product_url))
			return false;

		// Выбираем товар из базы
		$product = $this->products->get_product((string)$product_url);
		if(empty($product) || (!$product->visible && empty($_SESSION['admin'])))
			return false;

		$product->images = $this->products->get_images(array('product_id'=>$product->id));
		$product->image = reset($product->images);

		$product->colors = array();
		$variants = array();

		foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) {
			$variants[$v->id] = $v;
			if($v->name){
				if(!in_array($v->name, $product->colors))
					$product->colors[] = $v->name;
			}
		}
    
		$product->variants = $variants;
    


		// Вариант по умолчанию
		if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id]))
			$product->variant = $variants[$v_id];
		else
			$product->variant = reset($variants);
          
		$product->features = $this->features->get_product_options(array('product_id'=>$product->id));
		$product->features = $this->featuresgroupe->get_product_gfoptions(array('product_id'=>$product->id));
    
		$temp_options = array();
		foreach($product->features as $option) {
			$temp_options[$option->feature_id]->feature_id = $option->feature_id;
			$temp_options[$option->feature_id]->name = $option->name;
			$temp_options[$option->feature_id]->values[] = $option->value;   
		}
		foreach($temp_options as $id => $option)
			$temp_options[$id]->value = implode(', ', $temp_options[$id]->values);        
    
		$product->features = $temp_options;

 

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

Но в стандартной вообще не выводятся варианты c 0 даже если убрать 'in_stock'=>true, а значит у меня тоже не отображается.

Совершенно неверное утверждение. Если Вы делали изменения, тем более много изменений, в которых уже сами с трудом ориентируетесь, то отображение в стандартной Simpla, вообще говоря, с отображением у Вас никак не связано...

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

Совершенно неверное утверждение. Если Вы делали изменения, тем более много изменений, в которых уже сами с трудом ориентируетесь, то отображение в стандартной Simpla, вообще говоря, с отображением у Вас никак не связано...

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...