Перейти к содержимому


Фотография
* * * * * 2 Голосов

Условия на основе элемента цены

jbprice

Сообщений в теме: 20

#1 tapakan

tapakan

Отправлено 25 August 2015 - 11:10

*
Популярное сообщение!

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

 

1. Условие от наличия товара на складе.

// Получаем из материала элемент цены по его идентификатору
$jbprice = $item->getElement('ELEMENT_ID');

// Создаем/Получаем объект JBCartVariantList. С ним и работаем.
$list = $jbprice->getList();

if($list->current()->inStock(1)) {
    echo '<div class="container-in-stock"></div>';
} else {
    echo '<div class="container-notin-stock"></div>';
}

2. Условие от стоимости товара.

// Получаем из материала элемент цены по его идентификатору
$jbprice = $item->getElement('ELEMENT_ID');

// Создаем/Получаем объект JBCartVariantList. С ним и работаем.
$list = $jbprice->getList();

// Узнаем итоговую стоимость
$total = $list->getTotal();

// Если стоимость товара больше 3000 рублей.
if($total->compare('3000 rub', '=>')) {
    echo '<div class="container-rich"></div>';
} else {
    echo '<div class="container-poor"></div>';
}

3. Есть/Нет скидки.

// Получаем из материала элемент цены по его идентификатору
$jbprice = $item->getElement('ELEMENT_ID');
// Создаем/Получаем объект JBCartVariantList. С ним и работаем.
$list = $jbprice->getList();

$total = $list->getTotal();
$price = $list->getPrice();

$discount = $total->minus($price, true);
$discount->positive();

if(!$discount->isEmpty()) {
    echo '<div class="container-discount"></div>';
} else {
    echo '<div class="container-no-discount"></div>';
}

4. Произвольное условие.

// Получаем из материала элемент цены по его идентификатору
$jbprice = $item->getElement('ELEMENT_ID');
// Создаем/Получаем объект JBCartVariantList. С ним и работаем.
$list = $jbprice->getList();

// Получаем элемент цены с актуальными данными
$element = $list->current()->get('ELEMENT_ID');
// Value элемента
$value = $element->get('value');

if($value == 'Искомое значение') {
    echo '<div class="container-foundit"></div>';
} else {
    echo '<div class="container-no-results"></div>';
}

Сообщение отредактировал tapakan: 25 August 2015 - 12:10

  • 9

#2 woodman

woodman

Отправлено 25 August 2015 - 18:19

Спасибо огромное за шпаргалку. Многим пригодится.


  • 0

#3 isay777

isay777

Отправлено 25 August 2015 - 19:05

Где же вы раньше были ((((


  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#4 Max

Max

Отправлено 04 December 2015 - 10:28

Как этим пользоваться в file:///test/media/zoo/applications/jbuniversal/templates/uikit/renderer/item/full.php?

при вставке кода - Fatal error: Call to a member function getList() on a non-object in

<?php
			// Получаем из материала элемент цены по его идентификатору
			$jbprice = $item->getElement('ELEMENT_ID');
			 
			// Создаем/Получаем объект JBCartVariantList. С ним и работаем.
			$list = $jbprice->getList();
			 
			// Узнаем итоговую стоимость
			$total = $list->getTotal();
			 
			// Если стоимость товара больше 3000 рублей.
			if($total->compare('3000 rub', '=>')) {
			    echo '<div class="container-rich"></div>';
			} else {
			    echo '<div class="container-poor"></div>';
			}
			?>

Сообщение отредактировал Max: 04 December 2015 - 10:29

  • 0

Joomla: 3.4.8 JBZoo: 2.2.5 Pro rev3095 Zoo: 3.3.7 WidgetKit: 2.4.3


#5 CB9TOIIIA

CB9TOIIIA

Отправлено 04 December 2015 - 10:30

Вы ID меняли на свой?


  • 0

#6 Max

Max

Отправлено 04 December 2015 - 10:37

Да, в типе материала - скопировал из

 

Цена (JBZoo Price Plain)

  • Element ID
    41d22afa-ea15-4623-a167-b592ee90d125

  • 0

Joomla: 3.4.8 JBZoo: 2.2.5 Pro rev3095 Zoo: 3.3.7 WidgetKit: 2.4.3


#7 Max

Max

Отправлено 04 December 2015 - 10:47

Спасибо, разобрался, смотрел товар другого типа,

 

на это ругается

if($total->compare('3000 rub', '=>'))

а так нормально

if($total->compare('3000 rub', '>')) 

  • 0

Joomla: 3.4.8 JBZoo: 2.2.5 Pro rev3095 Zoo: 3.3.7 WidgetKit: 2.4.3


#8 Cheren-dow

Cheren-dow

Отправлено 04 December 2015 - 12:21

Вместо:

if($total->compare('3000 rub', '=>'))

Попробуйте использовать:

if($total->compare('3000 rub', '>='))

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

#9 isay777

isay777

Отправлено 04 March 2016 - 14:38

Условие на проверку нескольких цен: 
 <?php

// проверяем два id
$priceList = [
   'ваш id 1',
   'ваш id 2'
];

$total = JBCart::val(0);

foreach($priceList as $priceId) {
    $jbprice = $item->getElement($priceId);

    // Создаем/Получаем объект JBCartVariantLis
    $list = $jbprice->getList();
			 
    // Узнаем итоговую стоимость
    $total->add($list->getTotal());
}

// Если - ваше условия из стартпоста (для примера моё)
if($total->compare('0 rub', '<=')) {
  echo '<div class="container-rich"><h4>По запросу</h4></div>';
} else {
  echo '<div class="container-poor">_Нечего не выводим_</div>';
}  
 ?>    

Сообщение отредактировал SmetDenis: 04 March 2016 - 14:44
чуть чуть форматирование кода

  • 4
ХОСТИНГ для сайтов jbzoo (все попугаи)

#10 sarmin

sarmin

Отправлено 24 April 2016 - 19:09

В teaser.php у меня нормально все получилось, а в full.php пропадают все кнопки. просто ничего не выводится в теге jbprice-detail-buttons - так где кнопки должны быть.


  • 0





Темы с аналогичным тегами jbprice

Click to return to top of page in style!