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

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Joomshop + модули от SmartAddons. Но это не принципиально.
Модули выводят картинки товаров, забирая их из кэша.
На страничке несколько модулей с разными опциями вывода товаров

Вот фрагмент кода одного из модулей, который генерит картинку:
<div class="item-img-info">
   <a href="<?php echo $item->link;?>" <?php echo JsSlider::parseTarget($params->get('target'));?>>
      <?php $img = JsSlider::getAImage($item, $params); echo JsSlider::imageTag($img);?>
                              </a>


Вот фрагмент HTML, который генерит модуль:

<div class="item-img-info">
   <a href="/tgshop/hats/tg-buff" >
      <img src="/administrator/cache/resized/bb179fbef2d9321b67998bfa00d899e4.jpg" alt="Бафф "Тарасова Гора"" title="Бафф "Тарасова Гора""/>                              </a>
                           </div>


Картинка, ссылка на которую указано, реально присутствует на хосте.
Т.е. все правильно
Если почистить кэш броузера, то при открытии страницы ни одна картинка не выводится.
Так происходит со всеми картинками, данных модулей на странице.

Но!
Если вручную, при помощи правой кнопочки мыши, открыть любую  картинку в новой вкладке, она открывается. И потом при перезагрузке страницы все картинки всех модулей нормально загружаются и все работает.
Ситуация и на компе и на андроиде.

Вроде все в коде правильно, но почему так происходит?
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
а папка /administrator/ у вас никак не защищена?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Все папки пути - 755
*

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Убрал функцию формирования тэга img - echo JsSlider::imageTag($img); Не стал в ней разбираться, т.к. в ней вызовы других функций плюс расширение класса. В-общем поленился.
Подозрения были на то, что в конце тега зачем-то стоит символ "/" слэш. Возможно он и есть проблема.

Вывел обычным способом
echo '<img src="'.$img[src].'" alt="'.$img[alt].'" title="'.$img[title].'" >';
 
Все заработало.
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Скорее всего в той функции было формирование миниатюр (если они использовались).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Alex_gs

  • Захожу иногда
  • 161
  • 2 / 0
Скорее всего вы правы. На я пожертвовал, т.к. магазин маленький, как приложение к основному сайту. Продажа атрибутики мотофестиваля. Товаров до 100 будет, скорость не важна особо. Размер фоток отредактировал CSSкой.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Работа а админке 5 минут потом выкидывает

Автор August

Ответов: 13
Просмотров: 1620
Последний ответ 06.03.2025, 10:39:54
от web1
На главную выводится кнопка добавить комментарий, как убрать?

Автор pilotgta

Ответов: 6
Просмотров: 3339
Последний ответ 21.09.2023, 15:32:35
от bugmenot
php код в новом модуле комментируется и не выводится

Автор makalex86

Ответов: 3
Просмотров: 831
Последний ответ 31.03.2023, 09:19:30
от sivers