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

alexshab

  • Захожу иногда
  • 60
  • 0 / 0
Какой код нужно добавить productdetails - default.php, что бы при входе в карточку товара открытой была всегда закладка "Описание", а не последняя открытая закладка(например отзывы)?
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Вот дефолтная карточка - http://demo.virtuemart.net/wear/zipper-pullover-detail
Где тут "закладки"?

У вас сторонний шаблон с переопределенным выводом карточки. Нужна ссылка.
А вообще смотрите, где по клику на вкладке идет запись в куки.
Веб-разработка: заказ. Только новая разработка.
*

alexshab

  • Захожу иногда
  • 60
  • 0 / 0
Вот карточка товара на сайте

Вот что в productdetails шаблона
в начале:
Код
jimport('joomla.html.pane');
$pane =& JPane::getInstance('tabs');
$i = 1;

и сам вывод закладок:
Код
		echo $pane->startPane('otcustom-title-tabs');

// Product Description
if (!empty($this->product->product_desc)) { ?>
<?php //Title Product DESC
echo $pane->startPanel(JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE'), 'otcustom-title-tab-'.$i++); ?>
<div id="product-description-details-page" class="product-description">
<?php /** @todo Test if content plugins modify the product description */ ?>
<!--<span class="title"><?php //echo JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE')?></span>-->
<?php echo $this->product->product_desc; ?>
</div>
<?php
} // Product Description END

//Product Review
echo $pane->startPanel(JText::_('COM_VIRTUEMART_REVIEWS'), 'otcustom-title-tab-'.$i++);
echo $this->loadTemplate('reviews');
//Product Review END

echo $pane->endPane();
есть и другие закладки, но принцип тот же.
*

alexshab

  • Захожу иногда
  • 60
  • 0 / 0
А вообще смотрите, где по клику на вкладке идет запись в куки.

я думал, вопрос можно решить какими-то опциями JPane.
Вот нашел описание
https://docs.joomla.org/J1.5:Using_the_JPane_classes_in_a_component
Но того, что мне надо там не увидел(
Например, пробовал вместо
$pane =& JPane::getInstance('tabs');
написать
$pane =& JPane::getInstance( 'tabs', array('startOffset' => 1) );
или
$pane =& JPane::getInstance( 'tabs', array('startOffset' => 0) );
ни какой реакции.
« Последнее редактирование: 22.04.2015, 14:33:44 от alexshab »
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Смотрите в /media/system/js/tabs.js
Попробуйте закомментировать
Спойлер
[свернуть]

Не по теме: у вас в карточке конфликт скриптов, с каруселью.
Веб-разработка: заказ. Только новая разработка.
*

alexshab

  • Захожу иногда
  • 60
  • 0 / 0
fsv, спасибо! Помогло.
А что с конфликтом скриптов, это не критично?
*

fsv

  • Moderator
  • 2781
  • 411 / 2
А что с конфликтом скриптов, это не критично?
Нет, не критично. Просто работать не будет.
Не особо всматривался. Там вы что-то мудрили с ноуконфликт и комментированием кода...
Веб-разработка: заказ. Только новая разработка.
*

alexshab

  • Захожу иногда
  • 60
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сортировка По наличию товара - сначала По убыванию в VirtueMart

Автор rsn

Ответов: 7
Просмотров: 3776
Последний ответ 10.04.2025, 01:19:37
от strongest
Открытие карточки товара VirtueMart3 в новом окне из категории

Автор djed9

Ответов: 2
Просмотров: 2785
Последний ответ 16.07.2021, 09:06:35
от djed9
Как в RSS ленту VirtueMart 3 добавить дополнительные изображения товара?

Автор Slava77

Ответов: 2
Просмотров: 3416
Последний ответ 06.06.2021, 01:12:01
от Slava77
Дробное количество товара в VM3

Автор alikon1

Ответов: 5
Просмотров: 2422
Последний ответ 12.03.2020, 14:16:42
от erbsen
Продублировать фото товара после описания

Автор djed9

Ответов: 3
Просмотров: 873
Последний ответ 11.02.2020, 13:16:46
от djed9