Jump to content


Photo
- - - - -

JBColor - "нет в наличии"

jbcolor нет в наличии

Best Answer Cheren-dow , 14 April 2016 - 10:08

Staff, такой возможности у элемента JBZColor нет. Если у вас есть навыки в PHP, то вкратце необходимо в хелпере:

\media\zoo\applications\jbuniversal\framework\helpers\jbhtml.php

добавить доп. параметр в методе  color().

$variants = array()

В шаблоне элемента колор:

\media\zoo\applications\jbuniversal\cart-elements\price\color\tmpl\color.php

Получить вариации и передать в хелпер:

$variations = $this->getElement('_value')->getJBPrice()->get('variations'); // вариации

echo $this->_jbhtml->colors('radio', $dataColor, $name, $value, null, $width, $height, array(), $variations);

Далее внутри хелпера вам будет доступен массив вариациий:

Далее на основании вариации и баланса и текущего значения цвета делайте проверку и добавляйте класс

jb9m_200x0.png

Примерно так (мой вариант не 100% рабочий он служит примером):

$colorEl = '884c3ebb-392d-4bb1-9a8b-cba34a52373e';
foreach ($variants as $variant) {
    if (
        isset($variant['_balance']['value']) && $variant['_balance']['value'] == 0 &&
        isset($variant[$colorEl]) && $variant[$colorEl]['value'] == $value
    ) {
        $labelAttr['class'][] = 'not-in-stock';
    }
}
Go to the full post


  • This topic is locked This topic is locked
2 replies to this topic

#1 Staff

Staff
  • JBZoo User (rus)
  • User rate: 2.5
  • posts: 97
  • topics: 27

Posted 14 April 2016 - 02:32

Доброго времени суток.

Столкнулся с такой задачей: необходимо отобразить все возможные цвета. Но, те которых нет в наличии вывести другим цветом и сделать не активными для заказа. Делаю так - 1 цвет = 1 элемент JBColor (чтобы был множественный выбор). Использование элемента Остаток в шаблоне материала не подходит, т.к. проверка на наличие осуществляется только после нажатия на цвет а их всего ничего 48 штук. Может хоть какой-то CSS class подкинуть в выводе элемента (тем цветам, которых нет), а там-то уже jQuery и вперед =)


  • 0

#2 Cheren-dow

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

Posted 14 April 2016 - 10:08   Best Answer

Staff, такой возможности у элемента JBZColor нет. Если у вас есть навыки в PHP, то вкратце необходимо в хелпере:

\media\zoo\applications\jbuniversal\framework\helpers\jbhtml.php

добавить доп. параметр в методе  color().

$variants = array()

В шаблоне элемента колор:

\media\zoo\applications\jbuniversal\cart-elements\price\color\tmpl\color.php

Получить вариации и передать в хелпер:

$variations = $this->getElement('_value')->getJBPrice()->get('variations'); // вариации

echo $this->_jbhtml->colors('radio', $dataColor, $name, $value, null, $width, $height, array(), $variations);

Далее внутри хелпера вам будет доступен массив вариациий:

Далее на основании вариации и баланса и текущего значения цвета делайте проверку и добавляйте класс

jb9m_200x0.png

Примерно так (мой вариант не 100% рабочий он служит примером):

$colorEl = '884c3ebb-392d-4bb1-9a8b-cba34a52373e';
foreach ($variants as $variant) {
    if (
        isset($variant['_balance']['value']) && $variant['_balance']['value'] == 0 &&
        isset($variant[$colorEl]) && $variant[$colorEl]['value'] == $value
    ) {
        $labelAttr['class'][] = 'not-in-stock';
    }
}

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

#3 Staff

Staff
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 2.5
  • posts: 97
  • topics: 27

Posted 14 April 2016 - 12:59

Спасибо за помощь! Буду разбираться
  • 0





Also tagged with one or more of these keywords: jbcolor, нет в наличии

Click to return to top of page in style!