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


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

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

jbprice

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

#1 tapakan

tapakan

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

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

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

 

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

  1. // Получаем из материала элемент цены по его идентификатору
  2. $jbprice = $item->getElement('ELEMENT_ID');
  3.  
  4. // Создаем/Получаем объект JBCartVariantList. С ним и работаем.
  5. $list = $jbprice->getList();
  6.  
  7. if($list->current()->inStock(1)) {
  8.     echo '<div class="container-in-stock"></div>';
  9. } else {
  10.     echo '<div class="container-notin-stock"></div>';
  11. }

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

  1. // Получаем из материала элемент цены по его идентификатору
  2. $jbprice = $item->getElement('ELEMENT_ID');
  3.  
  4. // Создаем/Получаем объект JBCartVariantList. С ним и работаем.
  5. $list = $jbprice->getList();
  6.  
  7. // Узнаем итоговую стоимость
  8. $total = $list->getTotal();
  9.  
  10. // Если стоимость товара больше 3000 рублей.
  11. if($total->compare('3000 rub', '=>')) {
  12.     echo '<div class="container-rich"></div>';
  13. } else {
  14.     echo '<div class="container-poor"></div>';
  15. }

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

  1. // Получаем из материала элемент цены по его идентификатору
  2. $jbprice = $item->getElement('ELEMENT_ID');
  3. // Создаем/Получаем объект JBCartVariantList. С ним и работаем.
  4. $list = $jbprice->getList();
  5.  
  6. $total = $list->getTotal();
  7. $price = $list->getPrice();
  8.  
  9. $discount = $total->minus($price, true);
  10. $discount->positive();
  11.  
  12. if(!$discount->isEmpty()) {
  13.     echo '<div class="container-discount"></div>';
  14. } else {
  15.     echo '<div class="container-no-discount"></div>';
  16. }

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

  1. // Получаем из материала элемент цены по его идентификатору
  2. $jbprice = $item->getElement('ELEMENT_ID');
  3. // Создаем/Получаем объект JBCartVariantList. С ним и работаем.
  4. $list = $jbprice->getList();
  5.  
  6. // Получаем элемент цены с актуальными данными
  7. $element = $list->current()->get('ELEMENT_ID');
  8. // Value элемента
  9. $value = $element->get('value');
  10.  
  11. if($value == 'Искомое значение') {
  12.     echo '<div class="container-foundit"></div>';
  13. } else {
  14.     echo '<div class="container-no-results"></div>';
  15. }

Сообщение отредактировал 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

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

Сообщение отредактировал 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

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

 

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

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

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

  1. 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

Вместо:

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

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

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

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

#9 isay777

isay777

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

Условие на проверку нескольких цен: 
  1. <?php
  2.  
  3. // проверяем два id
  4. $priceList = [
  5. 'ваш id 1',
  6. 'ваш id 2'
  7. ];
  8.  
  9. $total = JBCart::val(0);
  10.  
  11. foreach($priceList as $priceId) {
  12. $jbprice = $item->getElement($priceId);
  13.  
  14. // Создаем/Получаем объект JBCartVariantLis
  15. $list = $jbprice->getList();
  16. // Узнаем итоговую стоимость
  17. $total->add($list->getTotal());
  18. }
  19.  
  20. // Если - ваше условия из стартпоста (для примера моё)
  21. if($total->compare('0 rub', '<=')) {
  22. echo '<div class="container-rich"><h4>По запросу</h4></div>';
  23. } else {
  24. echo '<div class="container-poor">_Нечего не выводим_</div>';
  25. }
  26. ?>

Сообщение отредактировал 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!