Склонение слова товаров в зависимости от цифр

Alexeina66

Мой дом здесь!
Регистрация
26 Авг 2013
Сообщения
426
Реакции
445
Имеется opencart 2.0.3.1 + шаблон xds coloring 1.3.4
Корзина товаров имеет такой вид
a5b65d468126.png

Необходимо решить такую задачу, то есть, чтобы выводилось «1 товар», «2 товарА», «5 товарОВ», а не «1 товаров» и «2 товаров» и т.д.
 
Вот пример, а дальше сами
PHP:
<?php
  function getWord($number, $suffix) {
    $keys = array(2, 0, 1, 1, 1, 2);
    $mod = $number % 100;
    $suffix_key = ($mod > 7 && $mod < 20) ? 2: $keys[min($mod % 10, 5)];
    return $suffix[$suffix_key];
  }
  $array = array("минута", "минуты", "минут");   $n = 21;
  $word = getWord($n, $array);
  echo "$n $word<br />";
  $n = 11;
  $word = getWord($n, $array);
  echo "$n $word<br />";
  $n = 4;
  $word = getWord($n, $array);
  echo "$n $word<br />";
?>
Самое главное, понятен алгоритм
 
Так а куда его вставлять? Контролер? Модель? Представление?
 
где идет вывод текста, туда и вставляйте
 
я не силен в опенкарте, но думаю не там
ищите место где выводится само количество товаров, там же нужно выполнить эту функцию
будет примерно так:
Код:
function getWord($number, $suffix) {
    $keys = array(2, 0, 1, 1, 1, 2);
    $mod = $number % 100;
    $suffix_key = ($mod > 7 && $mod < 20) ? 2: $keys[min($mod % 10, 5)];
    return $suffix[$suffix_key];
}
$array = array("товар", "товара", "товаров");
echo getWord($this->cart->count, $array);
повторюсь, в опенкарте не силен. незнаю какого вида в нем переменные
 
в языке
Код:
$_['text_items']    = 'Товаров %s (%s)';

в выводе
Код:
<span id="cart-total"><?php echo $text_items; ?></span>
 
ищите где объявляется переменная $text_items
 
Нашел
Код:
$data['text_items'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total));
 
Код:
$count = $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0);
function getWord($number, $suffix) {
$keys = array(2, 0, 1, 1, 1, 2);
$mod = $number % 100;
$suffix_key = ($mod > 7 && $mod < 20) ? 2: $keys[min($mod % 10, 5)];
return $suffix[$suffix_key];
}
$array = array("товар", "товара", "товаров");
$data['text_items'] = $count .' '. getWord($count, $array);
 
Назад
Сверху