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

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Всем привет!
Joomla! 3.9.22
JoomShopping Version 4.18.4

Скачал и установил аддон "Second short Description for a Category" для добавления дополнительного поля описания в категориях. Дело в том, что в админке при редактировании категории это поле выводится самым последним, после мета-тегов.
Можно ли в коде аддона как-то поменять порядок вывода для удобства контент-менеджеров?
Хочу, чтобы выводилось после поля "Краткое описание".

Подмогните, пожалуйста.



Что пытался сделать? Чисто для теста на предмет "поменяется ли порядок вывода вообще?":
1. Распаковал аддон и в файле plugins/jshoppingadmin/second_short_description_for_category/second_short_description_for_category.php
Строку:
Код
$view->{'plugin_template_' . $descr_varname} .= '<tr><td class="key">' . _JSHOP_SHORT_DESCRIPTION . ' 2</td><td>' . $editor->display('second_short_description' . $lang->id, $category->$ss_descr_varname, '100%', '350', '75', '20' ). '</td></tr>';
Заменил на:
Код
$view->{'plugin_template_' . $descr_varname} = '<tr><td class="key">' . _JSHOP_SHORT_DESCRIPTION . ' 2</td><td>' . $editor->display('second_short_description' . $lang->id, $category->$ss_descr_varname, '100%', '350', '75', '20' ). '</td></tr>' . $view->{'plugin_template_' . $descr_varname};
2. Запаковал в .zip и установил заново. Перед установкой отключил два плагина "JoomShopping addon - Second Short Description for a Category" в Расширения - Плагины и удалил сам аддон в "JoomShopping - Опции - Дополнения".

Но порядок вывода не поменялся. Кеш чистил.
« Последнее редактирование: 15.10.2020, 13:52:44 от Ragnarok »
*

kit2m2

  • Живу я здесь
  • 3366
  • 276 / 0
  • Беру сайты на полное сопровождение
Можно ли в коде аддона как-то поменять порядок вывода для удобства контент-менеджеров?
Хочу, чтобы выводилось после поля "Краткое описание".

Так не получиться, там нет позиции вывода. То что Вы заменили, верните обратно. Это совершенно не то...
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Так не получиться, там нет позиции вывода. То что Вы заменили, верните обратно. Это совершенно не то...
Жаль, что не получится. Вообще странно, конечно. Может можно как-то вызвать из аддона текст шаблона редактирования категории в админке и впихнуть между текстом, например, при помощи preg_replace(); или как-то еще? Понимаю, что костыль, но хоть как-то ))
*

kit2m2

  • Живу я здесь
  • 3366
  • 276 / 0
  • Беру сайты на полное сопровождение
Может можно как-то

Вы код видели, где выводиться?
Спойлер
[свернуть]
Вот это позиция где выводиться -
Код
<?php $pkey = 'plugin_template_description_'.$lang->language; if ($this->$pkey){ print $this->$pkey;}?>

До нее (после meta_keyword) нет позиции вывода. При желании конечно можно повозиться, но так ли это важно?
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Вы код видели, где выводиться?
...
Вот это позиция где выводиться -
Код
<?php $pkey = 'plugin_template_description_'.$lang->language; if ($this->$pkey){ print $this->$pkey;}?>

До нее (после meta_keyword) нет позиции вывода. При желании конечно можно повозиться, но так ли это важно?
Вот оно че. Ясно, спасибо. Ну, да, наверное, не так важно.
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Решил проблему. Оказалось все просто.

1. Переопределил шаблон вывода админки редактирования категорий в JoomShopping:
- перенес содержимое папки "/administrator/components/com_jshopping/views/category/tmpl/" в
"/administrator/templates/isis/html/com_jshopping/category/"

2. В файле /administrator/templates/isis/html/com_jshopping/category/edit.php просто добавил позицию между кратким и полным описанием (название позиции — от балды):
Код
<?php $pkey = 'plugin_template_seconddescr_'.$lang->language; if ($this->$pkey){ print $this->$pkey;}?>
где "seconddescr" — это название позиции

3. В аддоне в файле /plugins/jshoppingadmin/second_short_description_for_category/second_short_description_for_category.php
После строки:
Код
$descr_varname = 'description_' . $lang->language;
Дописал:
Код
$position = 'seconddescr_'.$lang->language;
4. Поменял это:
Код
$view->{'plugin_template_' . $descr_varname} .= '<tr><td class="key">' . _JSHOP_SHORT_DESCRIPTION . ' 2</td><td>' . $editor->display('second_short_description' . $lang->id, $category->$ss_descr_varname, '100%', '350', '75', '20' ). '</td></tr>';
На это:
Код
$view->{'plugin_template_' . $position} .= '<tr><td class="key">' . _JSHOP_SHORT_DESCRIPTION . ' 2</td><td>' . $editor->display('second_short_description' . $lang->id, $category->$ss_descr_varname, '100%', '350', '75', '20' ). '</td></tr>';

И всё. Теперь поле в админке выводится в нужном месте.

С тем же успехом можно было просто перенести уже существующую позицию "description" в нужное место.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сортировка товаров в админке

Автор Emotion

Ответов: 26
Просмотров: 6712
Последний ответ 15.08.2024, 08:00:20
от kit2m2
Есть ли бесплатный модуль вывода товаров для JoomShopping?

Автор Damarkuzz

Ответов: 8
Просмотров: 936
Последний ответ 29.07.2022, 15:43:48
от kit2m2
Не посчиталась стоимость товара в заказе, в админке есть

Автор Dolphin4ik_1

Ответов: 1
Просмотров: 550
Последний ответ 28.05.2022, 15:20:28
от victorantoniak
Какое событие для плагина срабатывает в админке в списке заказов?

Автор Dolphin4ik_1

Ответов: 1
Просмотров: 494
Последний ответ 12.04.2022, 21:53:00
от kit2m2
Условие вывода для поля URL

Автор kik84

Ответов: 3
Просмотров: 656
Последний ответ 09.12.2021, 12:18:34
от draff