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

Yakovets_S

  • Новичок
  • 4
  • 0 / 0
Добрый день. Нужна ваша помощь. Суть состоит вот в чем. Если заполнено поле описания категории, то в шаблоне вместо названия категории должно выводится это описание, если же описание не заполнено то выводится название категории.
Вот я пытался переделать код. Но видно как всегда что-то не так сделал. Подскажите как правильно его сделать. Спасибо.
Код
<?php if (empty($this->category->category_description)) { ?>

 <?php if ($this->search ==null) { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo $this->category->category_name; ?></span>
  </div>
<?php } else { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo JText::_('COM_VIRTUEMART_SEARCH')?></span>
    </div>
<?php } ?>

<?php } else { ?>

<? if ( empty($this->keyword) ) {
?>
<div class="category_description">
<h1><?php echo $this->category->category_description ; ?></h1>
</div>
<?php}?>
<?php } ?>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код
<?php if (empty($this->category->category_description)) { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo ($this->search ==null)? $this->category->category_name : JText::_('COM_VIRTUEMART_SEARCH'); ?></span>
</div>
<?php } else {
if (empty($this->keyword)) { ?>
<div class="category_description">
<h1><?php echo $this->category->category_description ; ?></h1>
</div>
<?php}
} ?>
Я просто переписал ваш код. Там присутствуют еще "search" и "keyword" в условиях, о них вы не упомянули.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Yakovets_S

  • Новичок
  • 4
  • 0 / 0
Да вот тут ошибка 500 выбивает. Что-то значит не так пошло... Я в коде не силен, что может быть не так? Вот оригинал кода, как из него сделать то что требуется? Заранее благодарен
Код
<?php if ($this->search ==null) { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo $this->category->category_name; ?></span>
  </div>
<?php } else { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo JText::_('COM_VIRTUEMART_SEARCH')?></span>
    </div>
<?php } ?>

<? if ( empty($this->keyword) ) {
?>
<div class="category_description">
<h1><?php echo $this->category->category_description ; ?></h1>
</div>
<?php
}?>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код
<?php if ($this->search ==null) { 
if (empty($this->category->category_description)) { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo $this->category->category_name; ?></span>
</div>
<?php }
} else { ?>
<div class="FlexibleCategiryTitle">
<span class="FlexibleCategiryTitleSPAN"><?php echo JText::_('COM_VIRTUEMART_SEARCH')?></span>
    </div>
<?php } ?>

<? if ( empty($this->keyword) &&  empty($this->category->category_name) ) {
?>
<div class="category_description">
<h1><?php echo $this->category->category_description ; ?></h1>
</div>
<?php
}?>
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать в производителях (модуль manufacturer) категории сверху

Автор sm_ph

Ответов: 7
Просмотров: 5956
Последний ответ 21.07.2025, 11:41:02
от Елeна
Как вывести категории с фото и подкатегориями?

Автор sergspb

Ответов: 0
Просмотров: 2429
Последний ответ 18.05.2022, 15:01:55
от sergspb
Как убрать показ дополнительного изображения в категории товаров?

Автор ElenaNova

Ответов: 0
Просмотров: 2794
Последний ответ 22.04.2020, 13:13:27
от ElenaNova
Название способа доставки сбивается

Автор Orfei

Ответов: 3
Просмотров: 2715
Последний ответ 03.12.2019, 16:59:44
от draff
Как скрыть описание категории VM в моб версии?

Автор Orfei

Ответов: 6
Просмотров: 1036
Последний ответ 30.04.2019, 01:16:38
от Orfei