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

soldat

  • Захожу иногда
  • 80
  • 3 / 0
Arkadiy
Огромное спасибо!!!!
 *DRINK*    ^-^
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
а какое условие писать чтобы модуль отображался только на главной сайта? только когда заходишь на сайт например test1.ru ? В этом вот блоке понимаю что это для магазина указаны параметры:
Всем привет! если кому то еще нужно, то нашел решение:

<?php if (($_GET['page'] == 'shop.browse') || ($_GET['page'] == 'shop.product_details')) {} else { ?>
                                                                              <jdoc:include type="modules" name="user10" style="xhtmlround" /> <?php } ?>


и еще вопросик- как вообще называютс страницы ну типа  shop.browse ? где найти такие названия? или можно прям ссылку вставлять вместо shop.browse на которой нужно отображать только какой то определенный модуль?
« Последнее редактирование: 15.07.2009, 12:57:56 от mrstorm »
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
Товарищи. Подскажите пожуолайста, как выглядит условие на страницу с адресом www.test1.ru/index.php ? думаю на чтото надо сменить переменную page? но у страницы www.test1.ru/index.php ни id ни page нет. Че можно сделать? оч нужно. Просто на сайте два одинаковых компонента и они должны выводиться строго в определенных условиях. Так вот когда например из корзины виртуал марта удаляешь чтото, то страница автоматически отображается в обоих компонентах, что само собой не нужно мне. оч нужно. поскажите
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
попробуй <?php if (empty($_GET['page'])...
*

mrstorm

  • Захожу иногда
  • 71
  • 3 / 1
попробуй <?php if (empty($_GET['page'])...

Спасибо друг! Помог! реально помогло и стало работать так как надо! Респект и уважуха тебе! Порадовал!!! Жаль плюс наверное поставить не могу!!! Пасиб!

Чето я поспешил радоваться :) половино условия стало к сожалению работать не так как надо! Но все же я смог переделать условия чтобы отображалось как надо!
« Последнее редактирование: 21.07.2009, 17:57:37 от mrstorm »
*

soldat

  • Захожу иногда
  • 80
  • 3 / 0
В логах апача:

Цитировать
[Fri Oct 30 09:57:57 2009] [error] [client 192.168.2.52] PHP Notice:  Undefined index:  page in F:\\Site\\templates\\feel_free\\index.php on line 97
[Fri Oct 30 09:57:57 2009] [error] [client 192.168.2.52] PHP Notice:  Undefined index:  page in F:\\Site\\templates\\feel_free\\index.php on line 97
[Fri Oct 30 09:57:57 2009] [error] [client 192.168.2.52] PHP Notice:  Undefined index:  page in F:\\Site\\templates\\feel_free\\index.php on line 110
[Fri Oct 30 09:57:57 2009] [error] [client 192.168.2.52] PHP Notice:  Undefined index:  page in F:\\Site\\templates\\feel_free\\index.php on line 110
[Fri Oct 30 09:58:00 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed
[Fri Oct 30 09:58:02 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:02 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru
[Fri Oct 30 09:58:03 2009] [warn] [client 192.168.2.52] mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed, referer: http://dm-sakh.ru

в index.php

строки:
Цитировать
97      <?php if (($_GET['page'] == 'shop.browse') || ($_GET['page'] == 'shop.product_details')) {} else { ?>
         <div id="usermods_2"><div id="user5">
            <jdoc:include type="modules" name="user5" style="xhtml" />
         </div>

         <div id="user4">
            <jdoc:include type="modules" name="user6" style="xhtml" />
         </div>
         
   <?php } ?>   



110      <?php if (($_GET['page'] == 'shop.browse') || ($_GET['page'] == 'shop.product_details')) {} else { ?>   
         <?php if($this->countModules('right')) : ?>

         <td width="195">

         <div id="logo2">
            <a href="<?php echo $this->baseurl ?>/"><img src="/templates/feel_free/images/logo_2.png" width="170" height="120" title="<?php echo $mainframe->getCfg('sitename') ;?>" /></a>
         </div>

         <div class="clear"></div>

         <div id="modules_r">
            <jdoc:include type="modules" name="right" style="xhtml" />
         </div>
   </td>
         <?php endif; ?>

Подскажите, что не так?
Спасибо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться