Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

Marple20

  • Новичок
  • 4
  • 0 / 0
Здравствуйте, прошу помощи, ну, или хотя бы маленькой подсказки =) есть магазин на JoomShopping, там продается всего 2 электронных товара. Модуля корзины нет, т.е. заказ как заявка. Проблема в том, что когда покупатель делает заказ, он может уйти со страницы оформления заказа, а товар в корзине останется. Т.е. когда он в следующий раз нажмет кнопку "купить", в корзине будет уже 2 товара и соответствующая удвоенная цена. Мне количество товара вообще не нужно, я хочу убрать эти кнопки в принципе. Только вот после этого нужно сделать так, чтобы количество товара всегда было 1. Иначе магазин посчитает, что раз кнопка "купить" была нажата два раза, покупается 2 единицы товара и покупатель должен будет перечислить двойную цену. Подскажите, пожалуйста, как это можно сделать, что где искать?
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
в настройках выставьте максимальное кол-во товара в заказе
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Marple20

  • Новичок
  • 4
  • 0 / 0
Спасибо за отклик, это я пробовала, но тогда покупатель не может вернуться в корзину вообще, потому что он туда попадает только по кнопке "купить", а при таком варианте (т. к. в корзине уже лежит товар) ее не нажать (ошибка - "Maксимальное количество единиц товара в заказе - 1") и заказ не продолжить.
Мне надо чуть-чуть по-другому: чтобы цена не умножалась на количество. Т. е. нужно, чтобы можно было заказывать много, но на выходе товар всегда был 1.

---

Нашла решение, вдруг кому-нибудь понадобится (вроде работает):
в файле /models/cart.php в следующих строках убрать умножение на количество (quantity)

Код
    function loadPriceAndCountProducts(){
        $jshopConfig = JSFactory::getConfig();
        $this->price_product = 0;
        $this->price_product_brutto = 0;
        $this->count_product = 0;
        if (count($this->products)){
            foreach($this->products as $prod){
                $this->price_product += $prod['price'] * $prod['quantity'];
                if ($jshopConfig->display_price_front_current==1){
                    $this->price_product_brutto += ($prod['price']*(1+$prod['tax']/100)) * $prod['quantity'];
                }else{
                    $this->price_product_brutto += $prod['price'] * $prod['quantity'];
                }
                $this->count_product += $prod['quantity'];
            }
        }
« Последнее редактирование: 23.02.2013, 01:56:11 от Marple20 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Уведомление о превышении доступного количества товара

Автор goga_pgasovav

Ответов: 1
Просмотров: 839
Последний ответ 03.02.2025, 18:48:10
от kit2m2
Артикул или код товара?

Автор goga_pgasovav

Ответов: 3
Просмотров: 1086
Последний ответ 28.11.2024, 19:03:59
от goga_pgasovav
Странная задача: получить псевдоним товара по его ID в шаблоне статьи

Автор goga_pgasovav

Ответов: 4
Просмотров: 1543
Последний ответ 04.07.2024, 13:06:45
от goga_pgasovav
Ошибка при изменении статуса товара

Автор itbc

Ответов: 4
Просмотров: 1346
Последний ответ 08.05.2024, 10:31:16
от itbc
Медленно загружается карточка товара

Автор svarg

Ответов: 7
Просмотров: 1502
Последний ответ 10.07.2023, 16:14:36
от svarg