Новости 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 Гость просматривают эту тему.
  • 16 Ответов
  • 1614 Просмотров
*

Grikhno

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Формула в атрибуте
« : 25.04.2014, 15:20:03 »
Добрый день.
Возникла следующая задача - есть магазин красок, краска поставляется либо белой, либо с добавлением цветных пигментов.
Соответственно цена цветной краски высчитывается по формуле  ( цена за ед. измерения + наценка за колеровку ) * литраж.
Есть 3 разных варианта колеровки по насыщенности цвета.

Вопрос заключается в том, возможно ли каким-то чудо способом забить формулу в атрибут, чтобы не загружать все цены вручную, а чтобы они сами рассчитывались для базовой краски, при назначении атрибутов?
Надеюсь понятно сформулировал  ^-^
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #1 : 25.04.2014, 16:23:00 »
независимые атрибуты не то?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Формула в атрибуте
« Ответ #2 : 25.04.2014, 16:27:54 »
в краску можно добавить сразу несколько пигментов разных по насыщенности?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #3 : 25.04.2014, 16:33:22 »
Насколько я понимаю, считается итоговый цвет. Т.е. грубо говоря атрибут Насыщенность с тремя опциями - Слабая, Средняя, Сильная. И просто выбираем один из вариантов. Ну и второй атрибут Фасовка - 1л, 3л, 5л, 10л.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Формула в атрибуте
« Ответ #4 : 25.04.2014, 16:52:11 »
у разработчика был плагин, который рассчитывает стоимость умножая базовую цену на значение свободного атрибута

в данном случае насыщенность и объём надо сделать атрибутами

например:
базовая цена - 100 руб./литр
насыщенность - 1.1
объём - 10 литров
итоговая стоимость - 1100 рублей
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #5 : 25.04.2014, 16:56:30 »
насколько я понимаю, тут нет свободных атрибутов. покупатель не вводит цифры руками.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Формула в атрибуте
« Ответ #6 : 25.04.2014, 17:05:41 »
насколько я понимаю, тут нет свободных атрибутов. покупатель не вводит цифры руками.
свободные атрибуты не сложно заменить готовыми вариантами
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #7 : 25.04.2014, 17:30:17 »
ну в таком разе и в плагине просчета, о котором вы говорите, тоже особо сложного нет ничего :)  просто я не понимаю, зачем? почему не обычные независимые атрибуты?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Grikhno

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Формула в атрибуте
« Ответ #8 : 07.05.2014, 12:12:10 »
Покупатель не вводит никаких цифр.
Все должно быть уже забито...
Независимый атрибут прибавляет к общей сумме. А как сделать чтобы прибавлялось к базовой и умножалось на объем?
*

Grikhno

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Формула в атрибуте
« Ответ #9 : 07.05.2014, 12:16:26 »
А не подскажите где вообще посмотреть функцию независимых атрибутов?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #10 : 07.05.2014, 12:21:32 »
что значит
Цитировать
Независимый атрибут прибавляет к общей сумме
?

что значит
Цитировать
функцию независимых атрибутов
?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Grikhno

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Формула в атрибуте
« Ответ #11 : 07.05.2014, 12:33:58 »
Независимый атрибут работает по следующему принципу на сколько я понимаю:

Банка краски 10 литров стоит например 1000 рублей. Я добавляю атрибут Коллеровка1 (200 р.)
Получается 1000 + 200 = 1200

А если например есть несколько фасовок, то прибавится все также 200.

А нужно куда-то вставить формулу (Базовая цена + наценка за колеровку) * количетво
Вот даже код есть действующий, не знаю просто куда его приспособить
Код
<?php  $this->product_basic_price_calculate_pg = ($this->product->product_basic_price_calculate + 35 ) * $this->product->product_basic_price_weight; ?>

Вот и ищу где рассчитывается цена независымых атрибутов.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #12 : 07.05.2014, 13:25:59 »
Вы попробовали, или так, просто рассуждаете?

Создайте 2 независимых атрибута: Колеровка и Фасовка. Создайте для них опции. Для Колеровка задайте Светлая +200, Средняя +300, Темная +500 в зависимости от насыщенности. Для Фасовка задайте 2 литра *2, 5 литров *5, 10 литров *10 в зависимости от объема. Все.

Порядок вычислений в формуле проводится последовательно и определяется порядком атрибутов, т.е. для например выбранных Колеровка Средняя + Фасовка 5л при базовой цене 1000 итоговая стоимость будет равна 1000+300 = 1300 * 5 = 6500. А если будет порядок Фасовка + Колеровка, то будет 1000*5 = 5000 + 300 = 5300
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Grikhno

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Формула в атрибуте
« Ответ #13 : 07.05.2014, 13:49:10 »
А не зависымые атрибуты от базовой цены считаются?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #14 : 07.05.2014, 13:56:28 »
не вижу смысла в дальнейшем обсуждении. если вы не хотите делать, а хотите только поговорить, то извините, времени нет
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Grikhno

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Формула в атрибуте
« Ответ #15 : 07.05.2014, 14:57:47 »
Ну вот пример http://ecora.ru/shop/strojmaterialy/gruntovki/caparol-samtggrund. Он прибавляет к цене, а не к базовой цене. Или я что-то не так понимаю?

И возникает еще одна загвоздка: фасовка у меня через зависимые атрибуты задается, потому что у разных фасовок разные атрибуты.
« Последнее редактирование: 07.05.2014, 15:27:10 от Grikhno »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Формула в атрибуте
« Ответ #16 : 07.05.2014, 18:46:40 »
я не понимаю что там у вас базовая цена, а что просто цена. вот вам конкретный пример: http://demo.nevigen.com/cars/honda-crv.html

Цена товара - 10000 Евро (переключитесь на евро для удобства вверху слева)
Для атрибутов задано следующее:



Соответственно например

Blue + 15 стоит 10000 + 100 = 10100 * 2 = 20200

а

Black + 17 стоит 10000 + 500 = 10500 * 5 = 52500
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться