Новости 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 Ответов
  • 1457 Просмотров
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Пересмотрел, перепробовал но нет исчерпывающей инфы, кто знает подскажите.
Joomla 3.2.3
JoomShopping 4.3.3
Нужно пунктом меню вывести на страницу "Условия доставки"
В меню создал пункт меню, вписал id = 8, вписал свой альяс dostavka-i-oplata , но выбрасывало на страницу 404.
После уже не помню, манипуляций с настройкой пункта меню, все таки создал рабочую ссылку, каторая имеет такой вид
 site.ru/dostavka-i-oplata
но так же эта самая страница доступна по ссылке
 site.ru/content/view/shipping
Последняя мне больше по душе, но не возьму в толк как пункт меню направить на нее, а ту следовательно убрать.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Пункт меню на статический текст
« Ответ #1 : 02.05.2014, 21:49:52 »
так в чем проблема? создайте пункт меню как Внешний URL на site.ru/content/view/shipping
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Re: Пункт меню на статический текст
« Ответ #2 : 02.05.2014, 23:23:48 »
Точно, то что нужно. Просто уперся совсем не в то, ну раз есть эти страницы то и пункты как бы должны.
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Re: Пункт меню на статический текст
« Ответ #3 : 03.05.2014, 00:00:14 »
Да вот только есть НО, только что заметил, этому пункту меню в активном состоянии не передается класс current active, а к этому классу ведь привязан CSS.
Наверное придется делать как я сделал и через редирект отправлять и ботов и пользователей на нужную страницу.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Пункт меню на статический текст
« Ответ #4 : 10.05.2014, 11:07:47 »
А Если попробовать создать пункт меню на внешний URL без ЧПУ?
index.php?option=com_jshopping&controller=content&task=view&page=Тут псевдоним статического текста (виден только в базе MySQL или при создании текста)
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Re: Пункт меню на статический текст
« Ответ #5 : 10.05.2014, 11:29:44 »
Только что попробовал, вместо "content/view/shipping" вписал "index.php?option=com_jshopping&controller=content&task=view&page="   не помогает, выкидывает на 404
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Пункт меню на статический текст
« Ответ #6 : 10.05.2014, 19:19:51 »
после page=
index.php?option=com_jshopping&controller=content&task=view&page=Тут псевдоним статического текста (виден только в базе MySQL или при создании текста)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Re: Пункт меню на статический текст
« Ответ #7 : 11.05.2014, 02:16:37 »
не а 404 и ссылка становится такого вида
Код
http://site.ru/index.php?option=com_jshopping&controller=content&task=view&page=content/view/shipping&Itemid=123
думаю этот момент опустить, и искать другое решение.Может вообще изменить вывод ссылки допустим не в меню а отдельно, самостоятельной кнопкой.
Почитать бы мат часть, пусть на инглиш, для чего они это вообще сделали внедрили по умолчанию эти страницы.
Возможно нужно категории создавать отдельно с таким же названием.
Да еще, времени пока нет в плотную этим заняться.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Пункт меню на статический текст
« Ответ #8 : 11.05.2014, 09:50:11 »
bulls, надо указывать псевдоним, а не путь.
В Вашем случае это
Код
http://site.ru/index.php?option=com_jshopping&controller=content&task=view&page=shipping&Itemid=123
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

bulls

  • Захожу иногда
  • 134
  • 3 / 0
Re: Пункт меню на статический текст
« Ответ #9 : 11.05.2014, 15:10:57 »
Да по этой ссылке открывает
Код
index.php?option=com_jshopping&controller=content&task=view&page=shipping&Itemid=123
а че толку пункт меню не активный
Код
<li class="item-123">
а нужно что бы передавался
Код
<li class="item-123 current active"> 
Что бы через CSS классу .active прописать стили
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться