Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Товарищи, надоело мне, что в корзине отображается "1 товаров" и решил я попробовать тут красоту навести.
Нашёл в интернетах функцию, которая якобы это всё делать должна, но почему-то не срабатывает.

В файле шаблона корзины mytemplate/html/mod_multi_basket_ajax/default.php добавил следующее:
Код
<?php
function RusEnding($n, $n1, $n2, $n5) {
    $n = $cart->count_product;
    if($n >= 11 and $n <= 19) return $n5;
    $n = $n % 10;
    if($n == 1) return $n1;
    if($n >= 2 and $n <= 4) return $n2;
    return $n5;
    }
?>

Ну и, собственно, в месте вывода нужного текста сделал так:
Код
<?php echo '<span class="total_text">'.$cart->count_product.' '.RusEnding($cart->count_product, "товар", "товара", "товаров").'</span> <b>'.formatprice($cart->getSum(0,1), null, 0, 1).'</b>'; ?>

Почему-то всегда выводится только последнее значение — «товаров».
Может кто поймёт почему так? Или может кто-то уже свой велосипед для этого давно изобрёл.

P.S.: я знаю, что надо всё в языковые переменные вынести. Я так и сделал уже, просто для упрощения примера текст прямо в коде.
« Последнее редактирование: 14.02.2023, 13:40:48 от goga_pgasovav »
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re:
« Ответ #1 : 13.02.2023, 19:29:40 »
Попробуйте этот вариант:
Код
function quant($cnt=0, $one=' штука', $two=' штуки', $five=' штук', $withnum=false) {
        if(in_array($cnt%100,array(11,12,13,14))||in_array($cnt%10,array(0,5,6,7,8,9))) {
            return ($withnum ? $cnt : '').$five;
        } elseif($cnt%10==1) {
            return ($withnum ? $cnt : '').$one;
        } else {
            return ($withnum ? $cnt : '').$two;
        }
    }

Если последний параметр true, то число будет выведено перед количественным словом.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Re:
« Ответ #2 : 14.02.2023, 13:32:36 »
sivers, просто восхитительно!
Низкий поклон  :D

Для тех кто, так же как и я, не так силён в программировании, вывод делается следующим образом:
Код
<?php
echo quant($cart->count_product);
?>
« Последнее редактирование: 14.02.2023, 13:41:27 от goga_pgasovav »
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Re:
« Ответ #3 : 14.02.2023, 13:51:15 »
По ходу воплощения задуманного возник ещё один вопрос:
Если я в параметры функции передаю текстовую переменную, а не просто строку (текст), то получаю белый экран.
Я имею в виду, если так делаю:

Код
function quant($cnt=0, $one=JText::_('СART_TOTAL1'), $two=JText::_('СART_TOTAL2'), $five=JText::_('СART_TOTAL'), $withnum=false)

Как это правильно сделать не понимаю.

P.S.: Вот теперь точно всё! Дошло до меня  ^-^
Надо передавать все параметры при вызове функции:
Код
echo quant($cart->count_product, JText::_('CART_TOTAL1'), JText::_('CART_TOTAL2'), JText::_('CART_TOTAL'));

Ещё раз огромное спасибо товарищу sivers!
« Последнее редактирование: 14.02.2023, 14:03:46 от goga_pgasovav »
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re:
« Ответ #4 : 14.02.2023, 14:13:46 »
Надо передавать все параметры при вызове функции:

Да, верно. Параметры по умолчанию добавил просто для наглядности.

Пользуйтесь на здоровье.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Re:
« Ответ #5 : 14.02.2023, 14:30:56 »
Ещё небольшое дополнение для тех, кто захочет повторить.
Т.к. у нас корзина не простая, а AJAX, то при обновлении количества товаров в реальном времени текст заменяется на статический (в итоге всё равно получаем «1 товаров»).

Сначала в файл mytemplate/html/mod_multi_basket_ajax/default.php в самом конце добавляем три строки:
Код
<span class="datac-p1"><?php echo JText::_('CART_TOTAL1')?></span>
<span class="datac-p2"><?php echo JText::_('CART_TOTAL2')?></span>
<span class="datac-p3"><?php echo JText::_('CART_TOTAL')?></span>
Естественно, языковые переменные должны были быть уже обозначены (либо в админке переопределением языковых констант, либо в .tpl_ языковом файле вашего шаблона).

С javascript у меня чуть получше, чем с РНР, поэтому чуть погуглив сделал так:

1. Открываем файл yoursite/modules/mod_multi_basket_ajax/js/ajax.js
2. В начале файла там целый список языковых переменных для JS, примерно после 15-й строки добавляем следующее:
Код
p1=jQuery('span.datac-p1').text();
p2=jQuery('span.datac-p2').text();
p3=jQuery('span.datac-p3').text();
3. Ниже добавим функцию, аналогичную той, что привёл sivers, только для JS:
Код
function num_word(value, words)
value = Math.abs(value) % 100;
var num = value % 10;
if(value > 10 && value < 20) return words[2];
if(num > 1 && num < 5) return words[1];
if(num == 1) return words[0];
return words[2];
}
4. Ну и, в нужном месте, там где раньше выводился статический текст, вставляем этот код:
Код
num_word(a.count_product, [p1, p2, p3])
где a.count_product — текущее количество товаров в корзине.

На этом всё   yes!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Стоимость доставки для нескольких товаров. Должна ли рассчитываться?

Автор goga_pgasovav

Ответов: 1
Просмотров: 239
Последний ответ 20.05.2025, 04:09:09
от kit2m2
Не сохраняется порядок товаров в админке

Автор heartlink

Ответов: 7
Просмотров: 1561
Последний ответ 08.10.2024, 10:24:02
от kit2m2
[Решено] Не удаляются товары из корзины (Multi basket ajax)

Автор goga_pgasovav

Ответов: 0
Просмотров: 860
Последний ответ 14.08.2024, 23:19:57
от goga_pgasovav
Сортировка товаров внутри категории

Автор oslyabya

Ответов: 1
Просмотров: 970
Последний ответ 02.08.2024, 22:06:39
от nevigen
Обновление количества товаров в корзине без кнопки "Обновить корзину"

Автор kit2m2

Ответов: 4
Просмотров: 2455
Последний ответ 23.07.2024, 12:23:33
от Шрек