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

traintop

  • Осваиваюсь на форуме
  • 18
  • 2 / 0
Заметил такой непонятный баг.

В пакете обновлений Joomla c 2.5.9 на 2.5.10 произошли изменения в файле:
administrator/components/com_menus/helpers/menus.php
100-я строка.
Было:
Код
		// Only take the option, view and layout parts.
foreach ($request as $name => $value)
{
if (!in_array($name, self::$_filter))
{
// Remove the variables we want to ignore.
unset($request[$name]);
}
}
Стало:
Код
		// Only take the option, view and layout parts.
foreach ($request as $name => $value)
{
if ((!in_array($name, self::$_filter)) && (!($name == 'task' && !array_key_exists('view', $request))))
{
// Remove the variables we want to ignore.
unset($request[$name]);
}
}

После обновления этого файла при открытии пункта меню JoomShopping значение типа сбивается.

До обновления данного файла при открытии пункта меню показывает нормально тип пункта:


После обновления файла показывается пустой тип все-время и при попытке сохранить он по-прежнему остается пустым:


Что нужно в JoomShopping изменить чтобы бага не было?
« Последнее редактирование: 25.12.2013, 15:19:37 от ELLE »
*

dmitry_stas

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

nevigen

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
*

dmitry_stas

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
А почему кстати, перестало в последних версиях Joomla работать "protected static $_filter = array('option', 'view', 'layout', 'controller'); ? Можно каким то хаком вернуть тип пункта меню?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в первом сообщении вернуть administrator/components/com_menus/helpers/menus.php как до 2.5.10

PS для общего понимания так сказать хочу спросить: а зачем вообще надо хакать, возвращать и т.д.? пункт же меню - дело такое... раз сделали - и забыли. или нет?
« Последнее редактирование: 01.09.2013, 11:10:19 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Во всём должен порядок быть, если положено что пункт меню должен отображаться, значит должен отображаться!
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
вернуть administrator/components/com_menus/helpers/menus.php как до 2.5.10

А ничего в системе не порушится? Зачем то ведь дополнительное условие задали...
*

nevigen

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Вы просили хак ? Вам сказали что поправить, теперь что надо попробовать сделать это и убедить вас ?

Да не надо меня убеждать. Просто я знаю, что есть люди гораздо опытнее меня, которые могут знать или догадываться ... зачем в стоковой версии сделано конкретное изменение и предполагать чем чревато возвращение к старому коду. Может этим условием дырку какую то закрыли в защите, а я её "открою" и буду потом месяц "наслаждаться" вычищая шелы и мобильные редиректы. И вот ещё что - если я прошу хак, то наверное из контекста должно быть понятно, что я имею в виду код, исправляющий что то, не в ущерб общей работоспособности и тем более не в ущерб зашите.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
та никто не заморачивался...
меня если честно тоже напрягает...
но менять Joomla ради ЖШ это уж слишком :) ИМХО :)
ну вернее если Joomla не хотят править, значит связано с тем что потянет за собой многое...
так же как и максы не хотят менять формат хранения данных.. потому что все расширения переделывать :)

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
но менять Joomla ради ЖШ это уж слишком :) ИМХО :)

Ну почему? Если гора не идёт к Магомету, мы сами выходим навстречу. Меня напрягает зияющая пустота - я в свой пакет хаков включу его... и буду смиренно ждать пока максы не поймут наконец, что борьба с ветрянными мельницами бессмысленна и причешут код в соответствие с требованиями системы. )
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
и буду смиренно ждать пока максы не поймут наконец, что борьба с ветрянными мельницами бессмысленна и причешут код в соответствие с требованиями системы. )

к сожалению 99.99% что не дождетесь. слишком значительные изменения нужны, думаю они на это не пойдут уже. разве что ЖШ вообще когда нибудь перестанет работать после очередного обновления Joomla
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Ну то есть что? Пока ещё не очень сильно увяз сваливать на ВМ?
*

nevigen

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

rabinzonoff

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
на работу не влияет.
конечно стремно смотреть на пустое место и не помнишь что там давал за пункт..
но насколько мне не изменяет память такое всегда было
сначала всегда были Товары а теперь емпти.

Не сказал бы что совсем не влияет... Если у вас установлен Advanced Module Manager и условия вывода каких либо модулей "только на главной странице", а JS установлен как главная, то при редактировании пункта меню (ну захотел я допустим товары по другому вывести на главной), после сохранения как все уже знают Тип пункта меню пропадает, но так и условия вывода перестают работать, тоесть модули у которых в Advanced Module Manager условие "только на главной странице" - не отображаются на главной вообще...
*

rabinzonoff

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
После сохранения в ссылке пункта меню в конце почему то добавляется вот это &extra_fields_1[0]= . Удаляем это из ссылки в БД, тк в пунке меню она не активна и тогда все возвращается как будто вы не заходили в пункт меню.

Конечно это не удобно после каждого редактирования пункта меню лазить в БД и исправлять ссылку, но как вариант может кому нить пригодиться)))
*

dmitry_stas

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

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
и буду смиренно ждать пока максы не поймут наконец, что борьба с ветрянными мельницами бессмысленна и причешут код в соответствие с требованиями системы. )
Требования системы подразумевают использование современного кода, а не пережитков со времен версии 1.5.
Однако до сих пор используется код типа:
Код
if (!file_exists(JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS.'jshopping.php')){
    JError::raiseError(500,"Please install component \"joomshopping\"");
}
ИМХО: Я уже перестал верить... Перестал верить в чистоту кода, но верю в ЖШ как компонент, который имеет плюсов больше чем минусов.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 25
Просмотров: 35703
Последний ответ 23.09.2025, 11:22:23
от Alex_gs
Атрибуты полей при оформлении заказа в JoomShopping

Автор goga_pgasovav

Ответов: 1
Просмотров: 623
Последний ответ 12.08.2025, 11:21:29
от kit2m2
Конфликт js шаблонов JoomShaper helix3 J5 с JoomShopping 5

Автор heartlink

Ответов: 6
Просмотров: 1399
Последний ответ 22.07.2025, 12:40:12
от heartlink
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 2
Просмотров: 2043
Последний ответ 04.07.2025, 10:30:36
от sergeytolkachyov
[Решено] Сбросить счётчик ID товаров JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 1354
Последний ответ 13.02.2025, 00:11:20
от goga_pgasovav