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

intcorp

  • Захожу иногда
  • 456
  • 12 / 0
Подскажите условие для шаблона, чтобы на определенных разрешениях экрана модули не грузились.
К примеру, не вижу смысла выводить тяжелые слайдеры на экранах до 320 и 240 пикс.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Модуль в шаблоне выводится в позиции, которая, как правило, обернута в определенный div с определенным классом. В стилях шаблона добавьте что-то вроде:
Код: css
@media screen (min-width:320px) {.класс-обертка_нужной_позиции {display:none;}}
Возможно, потребуется дополнительная доверстка.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
На php это сделать не реально. Можно реализовать проверку разрешения на js и подгрузку модулей аяксом. Но это сложнее. Проще всего скрыть модули используя CSS медиазапросы.
интернет-блог: http://websiteprog.ru
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
На php это сделать не реально.
Почему же? проверить в модуле какое устройство и разрешить ему дальше работать или умереть :)
*

intcorp

  • Захожу иногда
  • 456
  • 12 / 0
Медиа запросы не подходят потому, что в случае загрузки кода и графики, скрывать их смысла не вижу, т.к. цель убрать "лишний" траффик, иначе можно просто подогнать под адекватный вид.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Как вы на php определите тип устройства? Это же серверная технология
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
по User Agent

Максимум что вы получите оттуда это тип браузера, версию.
интернет-блог: http://websiteprog.ru
*

intcorp

  • Захожу иногда
  • 456
  • 12 / 0
Если бы было решение типа
Код
<?php if($this->screen(min-width:320px)) : ?><jdoc:include type="modules" name="module" style="xhtml" /><?php else: ?>альтернативное значение<?php endif; ?>
было бы норм :)
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Как вы на php определите тип устройства? Это же серверная технология
Существуют различные скрипты определения мобильных агентов, с различной степенью детализации и обновляемостью базы.
Пишем плагин - определяет агента (+ в куки). Если мобильный - подсовывать мобильную версию шаблона (зачем? - читаем Люка Вроблевски "Сначала мобильные"), все эти "адаптивные" не годятся из-за специфики моб.устройств и сетей, и используются по принципу "лучше так, чем никак".
Веб-разработка: заказ. Только новая разработка.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Существуют различные скрипты определения мобильных агентов, с различной степенью детализации и обновляемостью базы.

Скрипты на php? На js можно определить разрешение и записать в куку, если только так. А так я могу и на десктопе поставить 320x200 разрешение.
интернет-блог: http://websiteprog.ru
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Скрипты на php?
да.
где-то себе подборку делал в прошлом году, быстро не нашел. все никак руки не дойдут сделать то, что написал. сам сапожник без сапог.)

UPD. ну страница то загружается с index.PHP по запросу конкретного браузера, и в ней шаблон сайту подсовывается.
« Последнее редактирование: 23.03.2015, 14:39:29 от fsv »
Веб-разработка: заказ. Только новая разработка.
*

Ilhom666

  • Завсегдатай
  • 1384
  • 184 / 0
на гитхабе напр лежит Browser.php
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
на гитхабе напр лежит Browser.php
Этот скрипт уже более 2х лет не обновлялся, устарел малость. По приведенной мною ссылке более навороченный вариант.
*

fbr

  • Завсегдатай
  • 1675
  • 208 / 7
http://mobiledetect.net/
вещь конечно хорошая, только она не дает главного - разрешение экрана ...
что толку от isMobile() = true, если у мобилы разрешение больше моего ноута ))
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Тогда только медиа-запросами, которые обрабатываются только браузерами, разрешение экрана на сервер не передается.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Можно определить через js и записать в куку, но только ведь при этом надо отдавать редирект в шаблоне получается. Или подгружать модули аяксом. Незнаю что лучше/проще.
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как в резиновом шаблоне сначала выводить модули?

Автор Skelvin

Ответов: 1
Просмотров: 1649
Последний ответ 11.06.2014, 20:53:51
от sakharok74
Модули в шаблоне и их позиционирование

Автор dkucher

Ответов: 2
Просмотров: 2229
Последний ответ 15.03.2014, 12:13:31
от kilnart