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

ws_green

  • Захожу иногда
  • 71
  • 1 / 0
Сделал в шаблоне для отображения системных сообщений отдельный div и задал ему определенный стиль, но этот стиль (бордер для дива с системными сообщениями) отображается даже если сообщений нету. Вопрос: как сделать в шаблоне условие - если сообщение есть, то показывать div, если сообщений нету, то скрывать этот див.
Попробовал так:
<?php if (message!=0) { ?>
      <div class="header_category_2">
      <jdoc:include type="message" />
      </div>
      <?php  } else { } ?>

Но не прокатило) Значит неправильно сделал условие, подскажите, пожалуйста, решение проблемы!
*

ws_green

  • Захожу иногда
  • 71
  • 1 / 0
Re: Условие для <jdoc:include type="message" />
« Ответ #1 : 13.11.2009, 01:25:25 »
 8) решил проблему, если кому пригодится:
смотрим в исходном коде страницы класс сообщения об ошибках и прописываем нужное этому классу в css
Получилось вот так:
index.php:
<div id="content_box">

      
      <jdoc:include type="message" />
   
      
   <jdoc:include type="component" />
      </div>
style.css:
#system-message {background:url(gr.gif) 0 0 repeat-x; height:85px; width:96%; padding:15px 0px 0px 5px; color:red;}
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Условие для <jdoc:include type="message" />
« Ответ #2 : 13.11.2009, 01:33:20 »
еще я писал здесь
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
Re: Условие для <jdoc:include type="message" />
« Ответ #3 : 13.11.2009, 08:17:12 »
Попробовал так:
<?php if (message!=0) { ?>
      <div class="header_category_2">
      <jdoc:include type="message" />
      </div>
      <?php  } else { } ?>
Но не прокатило) Значит неправильно сделал условие, подскажите, пожалуйста, решение проблемы!

Код
		<?php if($this->getBuffer('message')) : ?>
<div id="message">
<jdoc:include type="message" />
</div>
<?php endif; ?>

*

oppo

  • Захожу иногда
  • 365
  • 82 / 8
  • ΨΨΨ я - УКРАЇНЕЦЬ
Re: Условие для <jdoc:include type="message" />
« Ответ #4 : 25.01.2011, 15:45:10 »
тут расписаны условия для шаблонов ССЫЛКА
*

shurikkan

  • Осваиваюсь на форуме
  • 46
  • 1 / 0
  • Joomla-support.ru :: Shurikkan
Re: Условие для <jdoc:include type="message" />
« Ответ #5 : 09.01.2015, 22:07:31 »
Может кому-то понадобится :)
Просто только сегодня озаботился этой темой. Вот как проще всего можно сделать:

Код: php
<?php
$app = JFactory::getApplication();
if($app->getMessageQueue()) {
?>
 
<jdoc:include type="message" />
 
<?php } ?>

Copyright - http://joomla-support.ru/thread/45038/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Где находится <jdoc:include type="head" />

Автор mufosali

Ответов: 4
Просмотров: 64956
Последний ответ 06.11.2012, 15:09:25
от Мана
Просто вывести в шаблоне файл через include

Автор pantela

Ответов: 8
Просмотров: 2693
Последний ответ 03.10.2012, 12:14:58
от pantela
условие в шаблоне...

Автор streelok

Ответов: 11
Просмотров: 2275
Последний ответ 13.03.2012, 23:58:51
от streelok
<jdoc:include type="modules" name="breadcrumb" /> А шо это такое в шаблоне и зачем ?

Автор антигерой

Ответов: 3
Просмотров: 2562
Последний ответ 08.03.2012, 23:20:19
от Fedor Vlasenko
Что такое jdoc

Автор efimov777

Ответов: 28
Просмотров: 20716
Последний ответ 13.09.2011, 17:44:23
от RTEagle