Иногда возникает ситуация где нужно считать сколько товаров в корзине и выводить нужное слово в зависимости от количества товаров. Как же это можно сделать? Да достаточно просто))
1. Открываем хелпер модуля корзины
И в самом низу или любом другом месте класса 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