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

DeLight

  • Захожу иногда
  • 64
  • 2 / 0
Добрый день. На 2х сайтах требуется убрать автоматическую подстройку под размеры окна браузера. В настройках шаблонов ничего подобного нет. Собственно, как это можно сделать?
*

fbr

  • Завсегдатай
  • 1675
  • 208 / 7
в файле index.php вашего шаблона, вероятно подключен

media/jui/css/bootstrap-responsive.min.css

отключите
*

DeLight

  • Захожу иногда
  • 64
  • 2 / 0
fbr, поиском по файлам нашел только одно упоминание файла bootstrap-responsive.min.css - в \www\libraries\cms\html\bootstrap.php
Закомментировал там строку с упоминанием, но ничего не произошло.
*

fbr

  • Завсегдатай
  • 1675
  • 208 / 7
Он может быть и в папке CSS шаблона
Это не важно, стиль подключается или в index.php или в файле который инклудится в него
т.е нужно найти где он подключается или через <link> или $doc->addStyleSheet()
и отключить эту строку

а откуда берется стилевой файл - FireBug ' ом посмотрите

Хотя, не знаю, что у вас за шаблон ... могут быть варианты
*

DeLight

  • Захожу иногда
  • 64
  • 2 / 0
На первом сайте (шаблон jm-lifestyle) вообще не нашел где подключается bootstrap-responsive.min.css в шаблоне. Попробовал убрать подключение файлов bootstrap_responsive_rtl.less, bootstrap_responsive.less, template_responsive.less - вроде стало похоже на дело, но обрезается фоновая картинка под размер окна браузера и ширина всего <body> уменьшилась пикселей на 150 (независимо от размера окна).
На втором сайте (шаблон Motif) нашел где подключается bootstrap-responsive.min.css, но после его отключения стало еще хуже - модули стали накладываться друг на друга при изменении размера окна браузера.
*

fbr

  • Завсегдатай
  • 1675
  • 208 / 7
Если клубный шаблон - лучше обратиться к ним в поддержку

они могли этот код у себя в шаблоне разместить где угодно
*

DeLight

  • Захожу иногда
  • 64
  • 2 / 0
С первым сайтом разобрался.
Чтобы убрать автоматическую подстройку под размеры окна браузера в шаблоне jm-lifestyle Joomla 3, нужно сделать следующее:
В файле /templates/jm-lifestyle/tpl/blocks/head.php заккоментировать строки:
Код
Строка 63: $this->addCompiledStyleSheet(JMF_TPL_PATH.DIRECTORY_SEPARATOR.'less'.DIRECTORY_SEPARATOR.'bootstrap_responsive_rtl.less');
Строка 66: $this->addCompiledStyleSheet(JMF_TPL_PATH.DIRECTORY_SEPARATOR.'less'.DIRECTORY_SEPARATOR.'bootstrap_responsive.less');
Строка 77: $this->addCompiledStyleSheet(JMF_TPL_URL.DIRECTORY_SEPARATOR.'less'.DIRECTORY_SEPARATOR.'template_responsive.less');
Затем, чтобы фон не обрезался под размер окна браузера, нужно выставить для body минимальную ширину в файле /templates/jm-lifestyle/css/template.css у меня это выглядит так:
Код
body {
  line-height: 1.9em;
  background: #fff;
  margin: 0;
  padding: 0;
  min-width: 1170px;
}
Если после отключения файлов из head.php съехала верстка, то необходимо внести изменения в файл /templates/jm-lifestyle/css/bootstrap.css в соответствии с теми данными, что были ранее прописаны в /templates/jm-lifestyle/css/bootstrap_responsive.css
Для того, чтобы меню не переключалось в выпадающий список, нужно в админке перейти в Менеджер модулей -> DJ-Menu
И значение параметра Display SELECT for small screens поменять на "Нет".
Рабочий пример здесь
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Где настраивается и как убрать Sidebar в Helix Ultimate?

Автор varella

Ответов: 5
Просмотров: 1358
Последний ответ 20.09.2022, 23:12:13
от varella
Модуль меню прячется при изменении окна браузера

Автор kunsaid

Ответов: 2
Просмотров: 829
Последний ответ 19.01.2022, 14:23:10
от kunsaid
Убрать надпись в футере

Автор kunsaid

Ответов: 6
Просмотров: 903
Последний ответ 22.12.2021, 18:06:35
от kunsaid
Не могу понять где могу убрать Google карту со страницы

Автор itbc

Ответов: 2
Просмотров: 924
Последний ответ 18.11.2021, 13:12:34
от itbc
Как убрать из URL знак решётка, меню Bootstrap?

Автор leo78

Ответов: 1
Просмотров: 987
Последний ответ 14.05.2021, 11:43:07
от leo78