Jump to content


Photo
- - - - -

Убрать кнопку «В корзину» при нулевом остатке и можно ли контролировать остаток

корзина форма заказа

Best Answer pholex315 , 27 March 2015 - 05:08

Нашел остаток, оказалось совсем просто. Сделал так:
 
В сайт\media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl\tmpl_default.php:
 

<? foreach ($this->getIndexData() as $key => $data): ?>
   <div class="jsJBPriceAdvance jbprice-advance <?php echo $uniqClass; ?>" id="<?php echo $iniqId . $key; ?>">
       <div class="sku"><?php echo $skuTmpl; ?></div>
	  <? /**  <div class="desc"><?=$data['params']['description']?></div> */?>
       <div class="cena"> <?php echo $pricesTmpl; ?></div>
	   <div class="sklad"><?php echo $balanceTmpl; ?></div> 
	    <div class="kol">
			<?php 
					if($data['balance']>0){
					echo $countTmpl;
					}
			?>
		 </div> 
		<div class="but">
			<?php 
					if($data['balance']>0){
					echo $buttonsTmpl;
					}
			?>
			</div> 
    </div>

Осталось только заставить нормально работать кнопку «Добавить в корзину». Но это уже другая история.

Go to the full post


3 replies to this topic

#1 pholex315

pholex315
  • JBZoo User (rus)
  • User rate: 0
  • posts: 73
  • topics: 22

Posted 25 March 2015 - 05:12

Добрый день, специалисты!

Воспользовался советом от i001 и прикрутил к товару варианты:
 
some-articles-per-item.jpg
 
Но для довольно большой части товаров нужно выводить вот такую форму:
 
no-articles-per-item.jpg

Это нужно делать, когда товара нет в наличии.
 
Нашел вариант, когда кнопка скрыта при нулевой цене. Но мне нужно скрыть не только кнопку, а и поле «количество» со всеми атрибутами.

 

Понятно, что заменить надпись «Нет в наличии» на нужную мне я вполне сумею, а вот что подкрутить в \media\zoo\applications\jbuniversal\elements\jbpriceadvance\jbpriceadvance.php и \media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl\tmpl_default.php боюсь сам не справлюсь :-(

 

Помогите, пожалуйста!

 

Второй вопрос про количество: могу ли я как-то указать количество товара для каждой вариации (с первого скриншота), чтоб это количество автоматом убавлялось при перемещении товара в корзину. Или это только в новой версии?

Сейчас у меня: Joomla: 2.5.28     JBZoo: 2.1.5 Pro (build 1)     Zoo: 3.3.4


  • 0

#2 Cheren-dow

Cheren-dow
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 25 March 2015 - 15:25

pholex315, доброго времени суток. В любом из шаблоне элемента jbpriceadvance получить все данные о цене можно с помощью:

<?php
// например в сайт\media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl\tmpl_default.php
$priceData = $this->data();
var_dump($priceData);
?>

так мы видим все данные:

cthf_200x0.png

 

Получаем остаток следующим образом:

$priceData = $this->data();
$balance   = $priceData['basic']['balance'];

Теперь на основании значения можете скрывать или показывать свои блоки


  • 0
Изображение
 

#3 pholex315

pholex315
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 73
  • topics: 22

Posted 26 March 2015 - 03:58

В любом из шаблоне элемента jbpriceadvance получить все данные о цене можно с помощью:

<?php
// например в сайт\media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl\tmpl_default.php
$priceData = $this->data();
var_dump($priceData);
?>

...

 

Получаем остаток следующим образом:

$priceData = $this->data();
$balance   = $priceData['basic']['balance'];

Теперь на основании значения можете скрывать или показывать свои блоки

 

Спасибо! Победил задачу, все работает!

 

Upd. Думал, что работает (sweat) Но проблема пока есть, во всяком случае для меня. Приведенный вариант решения хорош, когда у товара нет вариаций. 

А что делать, когда они есть и их может быть разное количество и довольно много? Как добраться до того [balance], который лежит внутри? И так, чтобы это было оптимально? Насколько я вижу, тут и так цикл:

<? foreach ($this->getIndexData() as $key => $data): ?>
   <div class="jsJBPriceAdvance jbprice-advance <?php echo $uniqClass; ?>" id="<?php echo $iniqId . $key; ?>">
       <div class="sku"><?php echo $skuTmpl; ?></div>
       <div class="cena"> <?php echo $pricesTmpl; ?></div>
	   
<?php
/* Так я, увы, получаю количество только для базового варианта, и все проверки работают только для него */

	$priceData = $this->data();
	$balance   = $priceData['basic']['balance'];
?>	   
		<div class="sklad"><?php echo $balanceTmpl; ?></div> 
		<div class="kol">
		<?php 
			if($balance>'0'){
			echo $countTmpl;
			}
		?>
		</div> 
		<div class="but">
		<?php 
			if($balance>'0'){
			echo $buttonsTmpl;
			}
		?>
	     </div> 
 </div>

Edited by pholex315, 26 March 2015 - 06:15.

  • 0

#4 pholex315

pholex315
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 73
  • topics: 22

Posted 27 March 2015 - 05:08   Best Answer

Нашел остаток, оказалось совсем просто. Сделал так:
 
В сайт\media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl\tmpl_default.php:
 

<? foreach ($this->getIndexData() as $key => $data): ?>
   <div class="jsJBPriceAdvance jbprice-advance <?php echo $uniqClass; ?>" id="<?php echo $iniqId . $key; ?>">
       <div class="sku"><?php echo $skuTmpl; ?></div>
	  <? /**  <div class="desc"><?=$data['params']['description']?></div> */?>
       <div class="cena"> <?php echo $pricesTmpl; ?></div>
	   <div class="sklad"><?php echo $balanceTmpl; ?></div> 
	    <div class="kol">
			<?php 
					if($data['balance']>0){
					echo $countTmpl;
					}
			?>
		 </div> 
		<div class="but">
			<?php 
					if($data['balance']>0){
					echo $buttonsTmpl;
					}
			?>
			</div> 
    </div>

Осталось только заставить нормально работать кнопку «Добавить в корзину». Но это уже другая история.


  • 0





Also tagged with one or more of these keywords: корзина форма заказа

Click to return to top of page in style!