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

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
В Беларуси с 1 июля проводится деноминация национальной валюты 10000/1
Требование Минторга - все магазины и интернет-магазины до 31 декабря 2016 года обязаны выставлять на ценниках и т.п. две цены - новую (6 руб.) и старую (60000 руб.).
 Как подобное можно реализовать в JoomShopping?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
вторую цену ведь будет достаточно только отображать
в таком случае можно написать плагин который будет её выводить рядом с основной
*

nevigen

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

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
вторую цену ведь будет достаточно только отображать
в таком случае можно написать плагин который будет её выводить рядом с основной
Да, цену ДО деноминации только отображать достаточно... Для информации


так а что мешает прямо в шаблоне вывести еще один блок с ценой ?
т.е. будет
цена текущая
цена текущая/10000
А как правильно это сделать?
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
Главной валютой ставите BYN а в коде шаблона списка товаров пишете так:
Код: php
<?php if ($product->_display_price){?>
            <div class = "jshop_price">
                <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?>
                <?php if ($product->show_price_from) print _JSHOP_FROM." ";?>
                <span><?php print formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span>
                
            </div>
/* Добавляем вывод расчётной цены до деноминации */
            <div class="price-072016">
                <p>цена до 01.07.2016г</p>
                <?php print formatprice(round($product->product_price*10000,-2));?>
            </div>
        <?php }?>

в карточке товара по тому-же принципу
« Последнее редактирование: 29.06.2016, 10:28:11 от ViktorMah »
*

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
ViktorMah, спасибо, буду пробовать...
*

buto

  • Давно я тут
  • 570
  • 1 / 0
Да смотри тут расписали эти *** люди как должно быть http://www.mintorg.gov.by/index.php?option=com_content&task=view&id=2750&lang=ru задача то простая, но стремная (электронные платежи/счета) бр.....
*

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
отображается дополнительная цена
-----
4,50 р.
45 000,00 р.
-----
То есть задан формат новой цены с двумя символами после запятой. А в старой цене (45 000,00 р.) можно как-то эти нули обрезать?
« Последнее редактирование: 11.07.2016, 01:49:30 от Alienoff »
*

nevigen

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

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
ПХП round()
Игорь, спасибо, что не теряете бдительность и оперативно отвечаете в темах. Но, всё же есть у меня кое-что сказать...
Я задал вопрос не потому, что мне лень что-то писать на PHP, а потому, что я PHP не знаю и написать код не смогу. Я этого не скрываю. Думаю, что вы это понимаете. Как понимаете и то, что ваш ответ мне ровным счётом ничего не сказал. Даже загуглив ваш ответ, я не смогу грамотно вставить round в мой код. Потому что, повторюсь, я не PHP-писатель.
Форумы созданы в том числе и для того, чтобы помогать таким, как я. А не показывать кто есть кто. Ну, мне так всегда казалось.
Поэтому пожелание - можете помочь (или хотите помочь) - помогите, как сделал это ViktorMah выше. Не можете (не хотите) - ну не пишите вы ничего...
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Форумы созданы в том числе и для того, чтобы помогать таким, как я.
совершенно верно, для помощи. просто каждый понимает помощь по разному. вы понимаете помощь как "сделай вместо меня", а я (и видимо nevigen) понимаю как "подскажи путь к решению". вы даже не попытались, но виноваты вокруг все кроме вас :) вот и вся разница. потратили бы время на гугление и попытки что-то сделать, вместо того чтобы пост такой писать, что вам тут никто ничем не помогает :) ну а если нет желания, и все таки хочется "сделай вместо меня", то имхо есть замечательный коммерческий раздел
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Alienoff

  • Захожу иногда
  • 186
  • 0 / 0
dmitry_stas, похоже, что вы прочитали мой пост не с той стороны.
1. Я не писал, что никто не помогает. Как раз наоборот - внимательней посмотрите. Речь шла о другом.
2. Вы не можете знать, пытался ли я что-то сделать. Я об этом не писал. Пытался.
3. Я никого ни в чём не обвинял - не перевирайте мои слова.

"Сделай вместо меня", как вы выразились, не мой принцип.
Просто нужно понимать, что человек, который превратит round() в правильное выражение после наводки на этот самый round() не будет здесь задавать таких вопросов, который задал я, в принципе.
Не буду повторяться, выше я изложил свои мысли по этому поводу..
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
похоже, что вы прочитали мой пост не с той стороны.
это похоже вы мой так прочли :) не перевирайте, внимательней посмотрите... глупости какие то... вы пытаетесь оправдаться или что то объяснить? совершенно лишнее. потому что я ни в чем вас не обвинял и ничего не пытался вам доказать. я написал как это выглядит со стороны. а там дальше как хотите, так и воспринимайте это. хотите - принимайте к сведению, хотите - не принимайте, мне абсолютно все равно.

"Сделай вместо меня", как вы выразились, не мой принцип.
раз не ваш - берите, и делайте. подсказать вам подсказали, дальше мяч на вашей стороне. что то не получается при этом - задавайте вопросы. одно дело ответить на вопросы, когда вы пытались и что-то не получилось. помочь так сказать решить конкретную проблему. и совсем другое, когда включается режим блондинки
Просто нужно понимать, что человек, который превратит round() в правильное выражение после наводки на этот самый round() не будет здесь задавать таких вопросов, который задал я, в принципе.
вы ж не девочка, у вас это не работает :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
:)
та не за что благодарить :)
я думал Вы все таки зайдете на php.su
введете в поиск round
посмотрите что вам пишут и сделаете то что надо.
но вместо 6 символов и еще 5 для поиска, Вы решили написать множество иных, ничем не приближающих Вас к цели и не решающих ровным счетом ничего.
зато существенно подставляющих под удар тех, кто пытался Вам помочь.
Ведь другие будут читать тему и всё это: о желаниях и несостоятельности, о необходимости расти над собой и работать над решением своих проблем самостоятельно (либо как Вы знаете платить) и не стесняться / не бояться.
а ведь искать будут информацию об округлении...
форум это обмен мнениями и совместный поиск решений.
но никак не площадка где более знающие сидят и с нетерпением ждут (как собаки) кому бы стать нужным в случае его потребности ;)
отвечать на последнюю фразу не обязательно. это аллегория. и никоим образом не оскорбление. относитесь правильно ;) как и к моему первому ответу :)

П.С.и офтоп:
я никогда не занимался сваркой металла ! В ЖИЗНИ НИКОГДА !
но вот взял и попробовал, потому что надо было... и знаете... Я ВСЕ ЕЩЕ ЖИВ ! :)
получилось убого, но держится. и я получил новый экспириенс ;)
и если будет надо то сделаю в следующий раз лучше ;)

попробуйте почитать про round ;)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

buto

  • Давно я тут
  • 570
  • 1 / 0
Главной валютой ставите BYN а в коде шаблона списка товаров пишете так:
Код: php
<?php if ($product->_display_price){?>
            <div class = "jshop_price">
                <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?>
                <?php if ($product->show_price_from) print _JSHOP_FROM." ";?>
                <span><?php print formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span>
                
            </div>
/* Добавляем вывод расчётной цены до деноминации */
            <div class="price-072016">
                <p>цена до 01.07.2016г</p>
                <?php print formatprice([b]round[/b]($product->product_price*10000,-2));?>
            </div>
        <?php }?>

в карточке товара по тому-же принципу

Вроде в примере расписал он с round (просто кликните на round сразу направит куда нужно)
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
Немного переписал код под пожелание
можно как-то эти нули обрезать?

Код: php
<?php if ($product->_display_price){?>
            <div class = "jshop_price">
                <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?>
                <?php if ($product->show_price_from) print _JSHOP_FROM." ";?>
                <span><?php print formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span>
 
            </div>
/* Добавляем вывод расчётной цены до деноминации */
            <div class="price-072016">
                <p>цена до 01.07.2016г</p>
                <span class="byr-price">
                <?php
                    $denominaciya = round($product->product_price*10000,-2);
                    print number_format($denominaciya, 0, ',', ' '). ' ' . $this->config->currency_code;                  
                ?>
                </span>
            </div>
<?php }?>

теперь так:
Цитировать
558.25 руб.
цена до 01.07.2016г
5 582 500 руб.

причина по которой у ТС не получалось с round() заключалась в  formatprice( " подставляет параметры заданные в настройка/валюта  " ) в которую и был вложен код пересчёта в "белки"
« Последнее редактирование: 19.07.2016, 10:30:04 от ViktorMah »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Товар - файл. Как ограничить добавление в корзину только 1 шт?

Автор SLV

Ответов: 15
Просмотров: 2361
Последний ответ 24.07.2025, 11:34:21
от SLV
JoomShopping, вывод всех категории к которым принадлежит товар

Автор Valent777

Ответов: 12
Просмотров: 2472
Последний ответ 01.11.2024, 14:57:28
от kit2m2
Пакетная загрузка изображений в товар/категорию JoomShopping

Автор Frost68

Ответов: 3
Просмотров: 1950
Последний ответ 13.08.2024, 06:54:24
от Lemonez
JoomShopping 5 в части браузеров не удалить товар

Автор oslyabya

Ответов: 3
Просмотров: 1517
Последний ответ 05.07.2024, 15:11:29
от kit2m2
Разные ссылки и названия на один товар

Автор gooodwin67

Ответов: 2
Просмотров: 1183
Последний ответ 04.11.2023, 12:34:19
от nevigen