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

djwolf

  • Захожу иногда
  • 58
  • 1 / 0
Сейчас выводится вот так
https://ibb.co/Z2RChQ8

Код
<option value="0">Выберите</option>

Нужно что бы выводилось за место "Выберите" название самого атрибута например "Цвет" Название атрибута выводится через переменную <?php print $attribut->attr_name?>

Код
<option value="0" hidden>Цвет</option>
<option value="4">Белые</option>
<option value="5">Розовые</option>

Вывод атрибутов

Код
 if ($jshopConfig->product_attribut_first_value_empty){
$first = array();
$first[] = JHTML::_('select.option', '0', _JSHOP_SELECT, 'val_id','value_name');
$options = array_merge($first, $options);
}
путь: components/com_jshopping/tables/product.php

Если просто заменить константу _JSHOP_SELECT на <?php print $attribut->attr_name?> то ничего не получается

Подскажите пожалуйста как это реализовать. Версия JoomShopping последняя
« Последнее редактирование: 19.04.2020, 16:30:40 от djwolf »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Если просто заменить константу _JSHOP_SELECT на <?php print $attribut->attr_name?> то ничего не получается
Меняй на $v->name
*

djwolf

  • Захожу иногда
  • 58
  • 1 / 0
Меняй на $v->name
Спасибо, помогло
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Захотелось так же сделать. Прописал таким образом.
Код
$first[] = JHTML::_('select.option', '0', _JSHOP_SELECT, '<?php print $attribut->$v->name ?>');
Сама надпись  "Выберите" пропала. Название атрибута не выводится. Подскажите плииз.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Код
<?php print $attribut->$v->name ?>
заменить на
Код
<?php print $v->name ?>
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Код
<?php print $attribut->$v->name ?>
заменить на
Код
<?php print $v->name ?>
К сожалению не сработало. (((
« Последнее редактирование: 14.01.2022, 17:43:33 от Akeksandr »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
что выведет ?
Код
var_dump( $attribut) ;
$first[] = JHTML::_('select.option', '0', _JSHOP_SELECT, '<?php print $attribut->$v->name ?>');
или такой вариант
Код
$first[] = JHTML::_('select.option', '0',$v->name, '<?php print $attribut->$v->name ?>');
« Последнее редактирование: 14.01.2022, 18:36:39 от draff »
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
что выведет ?
Код
var_dump( $attribut) ;
$first[] = JHTML::_('select.option', '0', _JSHOP_SELECT, '<?php print $attribut->$v->name ?>');
или такой вариант
Код
$first[] = JHTML::_('select.option', '0',$v->name, '<?php print $attribut->$v->name ?>');
В обоих случаях выводит - NULL
Я ведь правильно прописал?
Код
...
defined('_JEXEC') or die();
include_once JPATH_JOOMSHOPPING.'/models/productlistinterface.php';
var_dump ($attribut);
..................................
if ($jshopConfig->product_attribut_first_value_empty){
$first = array();
$first[] = JHTML::_('select.option', '0',$v->name, '<?php print $attribut->$v->name ?>');
//$first[] = JHTML::_('select.option', '0', _JSHOP_SELECT, 'val_id','value_name');
$options = array_merge($first, $options);
}
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Разбираем ? Если нужно отключить вывод Выберите, то в конфиге ДЖШ отключите Первое значение атрибута - пусто$jshopConfig->product_attribut_first_value_empty
Если включено и нужно заменить, то тогда инструкция будет работать
Код
 $first[] = JHTML::_('select.option', '0', $v -> name , 'val_id','value_name');
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Если включено и нужно заменить, то тогда инструкция будет работать
Код
 $first[] = JHTML::_('select.option', '0', $v -> name , 'val_id','value_name');
:D :D :D *DRINK* *DRINK* *DRINK*
Большое человеческое спасибо!
У меня включено. Теперь работает отлично!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести описание атрибута

Автор Napst3r

Ответов: 2
Просмотров: 1253
Последний ответ 31.07.2024, 12:24:00
от Napst3r
Вывод характеристик товара в списке товаров (категории)

Автор voland

Ответов: 4
Просмотров: 3821
Последний ответ 17.09.2022, 13:21:03
от victorantoniak
Отображение Атрибута в категориях (Решено)

Автор darkghost

Ответов: 1
Просмотров: 2600
Последний ответ 01.10.2021, 17:30:36
от darkghost
Не меняется цена товара в зависимости от выбранной опции атрибута

Автор kit2m2

Ответов: 82
Просмотров: 14413
Последний ответ 21.07.2021, 17:29:07
от nevigen
Как передать значение атрибута в свободный атрибут?

Автор votuksol

Ответов: 3
Просмотров: 2759
Последний ответ 26.02.2021, 08:50:38
от kit2m2