Иногда возникает ситуация где нужно считать сколько товаров в корзине и выводить нужное слово в зависимости от количества товаров. Как же это можно сделать? Да достаточно просто))
1. Открываем хелпер модуля корзины
сайт\modules\mod_jbzoo_basket\helper.php
И в самом низу или любом другом месте класса JBZooBasketHelper добавляем новый метод - например
/** * @param int $int * @param array $data * @return string */ public function caseWord($int = 0, $data = array()) { $int = (int)$int; if (isset($data['one']) && isset($data['one_of_plural']) && isset($data['plural'])) { $resString = $int % 10 == 1 && $int % 100 != 11 ? $data['one'] : ($int % 10 >= 2 && $int % 10 <= 4 && ($int % 100 < 10 || $int % 100 >= 20) ? $data['one_of_plural'] : $data['plural']); $output = $int . ' ' . $resString; return $output; } return $int; }
Далее после строк, в шаблоне модуля
$summa = $basketHelper->getSumm($basketItems); $count = $basketHelper->getCount($basketItems); $countSku = $basketHelper->getCountSku($basketItems); $currency = $basketHelper->getCurrency($basketItems); $basketUrl = $basketHelper->getBasketUrl(); $emptyUrl = $basketHelper->getBasketEmptyUrl();
добавляем
$getCaseItem = $basketHelper->caseWord($count, array( 'one' => 'товар', 'plural' => 'товаров', 'one_of_plural' => 'товара' ));
Теперь в месте где выводится общее число товаров
echo '<p>' . JText::_('JBZOO_CART_TOTAL_COUNT') . ': <span class="total-items">' . $count . ' ' . JText::_('JBZOO_CART_COUNT_ABR') . '</span></p>';
вместо $count вставляем нашу переменную $getCaseItem
echo '<p>' . JText::_('JBZOO_CART_TOTAL_COUNT') . ': <span class="total-items">' . $getCaseItem . ' ' . JText::_('JBZOO_CART_COUNT_ABR') . '</span></p>';
Вот и все, теперь будут добавляться нужные склонения в зависимости от кол-ва товаров в корзине.
ВНИМАНИЕ!!!
- Будьте внимательны при замене файлов.
- Проверьте с начало на тестовом сайте а уже потом загружайте на рабочий сайт.
- Это решение(модификация) тестировалось на
Joomla: 3.3.1
JBZoo: 2.1.4 Pro
Zoo: 3.1.6, - Не забывайте - это решение(модификация) и при следующих обновлениях эти изменения могут пострадать.
- При появлении проблем Тех.Поддержка ответственности не несет.
Добавлено: 08.07.2014
Сообщение отредактировал Cheren-dow: 08 July 2014 - 14:54