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

WhitePunk

  • Осваиваюсь на форуме
  • 40
  • 1 / 0
В блоке товара \list_products\product.php в переменной($product->product_link) есть ссылка.
А в карточке товара product\product_default.php переменная пуста!

Как получить ссылку $product->product_link в карточке товара?

Нужно в каком то файле добавить запрос на эту переменную?
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Так можно URL взять имеющийся, да и всё...
Создание сайтов, шаблонов, помощь в решении проблем.
*

WhitePunk

  • Осваиваюсь на форуме
  • 40
  • 1 / 0
Так можно URL взять имеющийся, да и всё...
А можно поподробнее?
Я не джедай пока еще)
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Цитировать
<?php echo JURI::current(); ?>
Создание сайтов, шаблонов, помощь в решении проблем.
*

WhitePunk

  • Осваиваюсь на форуме
  • 40
  • 1 / 0
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
JURI::current()
подойдет только для SEF url. ибо
Цитировать
A static method that returns the current request URI without the query or fragment parts

лучше взять
Код: php
$_SERVER['REQUEST_URI']
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
JURI::current() подойдет только для SEF url. ибо
А JRequest::getURI()?
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а JRequest - deprecated :) Та на самом деле много вариантов получить его. Просто зачем обертки, если в $_SERVER['REQUEST_URI'] содержится то, что надо, и при этом не надо никаких манипуляций дополнительных? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
А зачем тогда всю эту фигню понапридумывали? :)
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну... :) вопрос же риторический, не так ли? :)

Код: php
JUri::getInstance()->toString()
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
ну... :) вопрос же риторический, не так ли? :)
Код: php
JUri::getInstance()->toString()
Ну, рекомендуют всё же зачем-то средствами Joomla пользоваться...

А аналог $_SERVER['REQUEST_URI'] какой теперь, раз уж JRequest - deprecated?
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
аналог $_SERVER['REQUEST_URI']? так а нет по сути аналога. вы имеете в виду текущий url?
Код: php
JUri::getInstance()->toString()
он как раз и есть.

Цитировать
Ну, рекомендуют всё же зачем-то средствами Joomla пользоваться...
так конечно. я ж не имею в виду отказаться от их использования. просто... ну использовать их когда они действительно нужны. вот например, та же текущая ссылка. если важен например используемый протокол http или https... $_SERVER['REQUEST_URI'] то не содержит об этом информации. да еще и плюс сервера могут быть настроены по разному. а тут - раз, и все готово:
Спойлер
[свернуть]
Но если всего этого не надо? Тоже самое касается например уже упомянутого JRequest. Как все мы знаем, его всегда обязательно нужно использовать для фильтрации входных данных. Но при взгляде поближе - так ли всегда? Неужто нефильтрованный $_POST абсолютно всегда представляет опасность? А ведь при фильтрации используются регулярки, которые создают довольно неслабую нагрузку. В общем, мое мнение - использовать апи надо когда надо, и не использовать когда не надо :) но тут как говорится лучше перебдеть, чем недобдеть :) поэтому и рекомендуют средствами Joomla пользоваться... Потому что лучше 10 лишних регулярок, чем 1 шелл :)
« Последнее редактирование: 27.03.2014, 21:15:22 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
аналог $_SERVER['REQUEST_URI']? так а нет по сути аналога. вы имеете в виду текущий url?
Код: php
JUri::getInstance()->toString()
он как раз и есть.
JUri::getInstance()->toString() помимо URL содержит ещё и домен и протокол... А чтоб чисто внутренний URL, как JRequest::getURI()?
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Код: php
JUri::getInstance()->toString(array('path', 'query', 'fragment'))
так?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Код: php
JUri::getInstance()->toString(array('path', 'query', 'fragment'))
так?
Жёстко... :) Но спасибо, конечно.
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Жёстко
почему? :)
Спойлер
[свернуть]

итого имеем JUri::getInstance()->toString(array('path', 'query')) :) ну а fragment так сказать для полноты картины
« Последнее редактирование: 28.03.2014, 11:30:49 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
почему? :)
Не знал я, что сначала всё в кучу собирается, а потом по частям добывается.
А в чём опасность использования $_SERVER['REQUEST_URI'] ?
В шаблонах скажем... Относительная ссылка она и в африке относительная, какая разница, каким кодом прописана?
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
так в том то и дело что ни в чем :) опасности как таковой - нет. просто разные сервера по разному формируют переменные окружения... вот например смотрите
Спойлер
[свернуть]

а Joomla - это ж не только апач... поэтому и получается, что когда для себя - то берем $_SERVER['REQUEST_URI'] и не паримся особо. Ибо с вероятностью в 99.99% на сервере апач. Но когда в массы... Есть АПИ :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Цитировать
а Joomla - это ж не только апач...
Так вот оно, где собака порылась... :)
Спасибо за ликбез.  *DRINK*
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Так вот оно, где собака порылась... :)

thanks, MS :)  *DRINK*
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 25
Просмотров: 35703
Последний ответ 23.09.2025, 11:22:23
от Alex_gs
WT On fly image handler изображения товара JoomShopping в webp на лету

Автор sergeytolkachyov

Ответов: 13
Просмотров: 4372
Последний ответ 29.01.2025, 20:38:38
от sergeytolkachyov
Видео с Youtube вместо картинки на карточке товара

Автор ksena

Ответов: 35
Просмотров: 10208
Последний ответ 08.10.2024, 04:26:36
от kit2m2
JoomShopping как вывести фильтр в наличии

Автор thevaca

Ответов: 4
Просмотров: 1638
Последний ответ 15.08.2024, 17:41:20
от thevaca
Условие для кол-ва товара больше нуля

Автор kik84

Ответов: 3
Просмотров: 1335
Последний ответ 16.02.2024, 13:33:24
от kit2m2