Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 3711 Просмотров
*

artemij

  • Осваиваюсь на форуме
  • 18
  • 1 / 0
Собственно вопрос по теме:
Как сделать так, чтобы слово "товар" склонялось в корзине именно на ВМ2?
Хочется, чтобы при количестве товаров больше 5 корзина говорила: "6 товароВ", а не "6 товарА"
Дело в том, что есть куча решений для 1.х ветки, но так как не силен в РНР не смог полноценно адаптировать решение для второй версии Вирта.
Но даже если методом научного перебора вариантов сделать следующее в файле mod_virtuemart_cart.php :
Код
if ($data->totalProduct>1) $data->totalProductTxt = JText::sprintf('COM_VIRTUEMART_CART_X_PRODUCTS', $data->totalProduct);
else if ($data->totalProduct >= 5) $data->totalProductTxt = JText::sprintf('СТРОКА_В_ЯЗЫКОВОМ_ФАЙЛЕ', $data->totalProduct);
else if ($data->totalProduct == 1) $data->totalProductTxt = JText::_('COM_VIRTUEMART_CART_ONE_PRODUCT');
else $data->totalProductTxt = JText::_('COM_VIRTUEMART_EMPTY_CART');

работает половинчасто. После обновления страницы все ОК, но при нажатии на кнопку "купить" ажакс не хочет обновлять текст на нужный.
Сначала грешил на файл com_virtuemart/controllers/cart.php - там тоже есть подобные строки кода. Но изменив их, делу не помогло.
Проблема в ажаксе? Если да, то ткните носом чего можно сделать.
*

T-rain

  • Осваиваюсь на форуме
  • 29
  • 6 / 0
Re: Склонение "товар" в корзине
« Ответ #1 : 24.05.2012, 18:00:06 »
<?
if (IntVal($arResult["NUM_PRODUCTS"])>0)
{
?>
   <a href="<?=$arParams["PATH_TO_BASKET"]?>">
   <? $numprod = intval($arResult["NUM_PRODUCTS"]);
      $dlinastroki = strlen($numprod);
      $lastsymbol = intval ( substr($numprod, $dlinastroki - 1));
   if ($numprod < 20)
       {if ( $numprod == 1) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_1'));}
        if ( $numprod > 1 && $numprod < 5) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_2to4'));}
      if ( $numprod < 21 && $numprod > 4) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_5to20'));}}
   else
      {if ( $lastsymbol == 1) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_1'));}
      if ( $lastsymbol == 0) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_5to20'));}
        if ( $lastsymbol > 1 && $lastsymbol < 5) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_2to4'));}
      if ( $lastsymbol < 11 && $lastsymbol > 4) {echo str_replace('#NUM#', $numprod, GetMessage('YOUR_CART_5to20'));}}
   ?>
    </a>
<?
}
else
{
?>
   <a href="<?=$arParams["PATH_TO_BASKET"]?>"><?echo GetMessage('YOUR_CART_EMPTY')?></a>
<?
}
?>

и
<?
$MESS['YOUR_CART'] = 'Ваша корзина #NUM#';
$MESS['YOUR_CART_1'] = 'В вашей корзине #NUM# товар';
$MESS['YOUR_CART_2to4'] = 'В вашей корзине #NUM# товара';
$MESS['YOUR_CART_5to20'] = 'В вашей корзине #NUM# товаров';
$MESS['YOUR_CART_EMPTY'] = 'Ваша корзина';
?>
Это я со своего сайта на Битриксе выдрал, из 2х файлов. Просто там логика такая )

Надеюсь разберётесь. Окончания работают нормально, только в районе от 105 до 120 могут быть проблемы вроде, но сейчас не помню, пофиксил или нет.
Если время будет, переделаю. Мне кстати и надо будет это сделать в скором времени.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться