Как только мы установили модуль корзины Virtuemart - сразу замечаем непорядок.
Добавляем 1 товар - видим в корзине "1 Товар"
еще один товар - видим в корзине "2 Товары"
еще один товар - видим в корзине "3 Товары"
еще один товар - видим в корзине "4 Товары"
еще один товар - видим в корзине "5 Товары"
и так далее.
Нехорошо, неаккуратненько. Не спортивно
А ведь есть простая и красивая функция для решения этой проблемы:
function sklonenie($n, $forms) { return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]); }
где $n - наше число, а
$forms=array('товар', 'товара', 'товаров');
Открываем \administrator\components\com_virtuemart\html\shop.basket_short.php
и вместо
if ($amount > 1) { $total_products = $amount ." ". $VM_LANG->_('PHPSHOP_PRODUCTS_LBL'); } else { $total_products = $amount ." ". $VM_LANG->_('PHPSHOP_PRODUCT_LBL'); }
пишем
function sklonenie($n, $forms) { return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]); } $total_products = $amount ." ". sklonenie($amount , array('товар', 'товара', 'товаров') ) ;
Обязательно конвертируем в кодировку UTF без BOM (например, с помощью notepad++), сохраняем и наслаждаемся...
P.S. Зоркий читатель Mtwserv заметил недочет решения - "А как можно убрать надпись "Товаров 00 руб." когда корзина пуста ?"
Рассказываю. После кода дописать
if ($amount < 1) { $total_products ='В корзине ничего нет, самое время что-нибудь купить'; }