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

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Добрый день! Было такое в Виртуал марте по умолчанию - Ограничение длины короткого описания. На странице списка товаров короткое описание (short_description) каждого товара. Как ограничить его до определенного количества знаков?

Заранее спасибо!
« Последнее редактирование: 07.05.2013, 23:54:26 от dron »
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
благодарю! сорьки, туплю
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
только не ясно, как это именно для короткого описания товаров в JoomShopping сделать.... (
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
<?php
function cutting_text($text, $length, $word=false){
if ($word)
return preg_match('/((\S+[\s-]+){'.$length.'})/s', $text, $m)? rtrim($m[1]): $text;
else
return preg_replace('/\s[^\s]+$/', '', mb_substr($text, 0, $length, 'UTF-8'));
}
//Максимально 30 символов
echo cutting_text($product->short_description, 30);
//echo cutting_text($this->product->short_description, 30);
//Выводим заданное количество слов - 8
echo cutting_text($product->short_description, 8, true);
//echo cutting_text($this->product->short_description, 8, true);
?>
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
ОООО! То что надо! Огромное спасибо!
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Вопрос: скрипт ограничивает количество символов и если в последнем слове символов больше, чем ограничение, это слово не выводится вообще! А как можно выводить ровно столько символов, сколько указано? Пусть слово будет выводится не целиков, а в конце будет многотичие.
*

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Вопрос: скрипт ограничивает количество символов и если в последнем слове символов больше, чем ограничение, это слово не выводится вообще! А как можно выводить ровно столько символов, сколько указано? Пусть слово будет выводится не целиков, а в конце будет многотичие.
Есть такая штука mb_substr, ограничивает вывод переменной по количеству символов.
Пример:
Код
<?php print mb_substr( $product->short_description, 0, 1000).'...';?>
Выведет 1000 знаков короткого описания, после чего будет три точки.
Метод не плохой, если только у тебя короткое описание не оформлено через редакторы Joomla, то есть в коротком описании будут ещё елементы разметки находиться.
Так как в таком случае, оно выведет открывающий тег, но обрежет закрывающий, и у тебя в 99% верстка поползет.


« Последнее редактирование: 04.09.2015, 12:38:48 от error648398 »
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Есть такая штука mb_substr, ограничивает вывод переменной по количеству символов.
Пример:
Код
<?php print mb_substr( $product->short_description, 0, 1000).'...';?>
Выведет 1000 знаков короткого описания, после чего будет три точки.
Метод не плохой, если только у тебя короткое описание не оформлено через редакторы Joomla, то есть в коротком описании будут ещё елементы разметки находиться.
Так как в таком случае, оно выведет открывающий тег, но обрежет закрывающий, и у тебя в 99% верстка поползет.
Огромное спасибо!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в Joomla есть класс JString специально для мультибайтовых кодировок. будет работать даже если нет mb_string на хостинге
Код
print JString::substr($product->short_description, 0, 1000)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
в Joomla есть класс JString специально для мультибайтовых кодировок. будет работать даже если нет mb_string на хостинге
Код
print JString::substr($product->short_description, 0, 1000)
О! И как я понимаю, именно этот вариант использовать правильнее, верно?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну не то чтобы... mb_substr если работает, то и будет работать. JString проверяет, установлен ли mb_substr, и использует именно его, если он установлен. так что вариант с mb_substr в какой то мере даже лучше, потому что нет лишних проверок. но вы должны быть изначально уверены, что он установлен. а JString будет универсальнее в этом плане. в общих случаях, когда вы не знаете заранее на каком хостинге будет выполнятся ваша программа, лучше использовать JString. в одном конкретном случае - проще mb_substr

P.S. а для тегов в описании - можно или strip_tags использовать, или как Fedor Vlasenko предлагал уже preg_replace
« Последнее редактирование: 04.09.2015, 15:04:08 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Благодарю всех от души!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Адрес e-mail как логин при регистрации

Автор orexov_m

Ответов: 51
Просмотров: 15260
Последний ответ 28.02.2024, 18:34:01
от nevigen
[Решено] - Заказ на одной странице

Автор shurakana

Ответов: 58
Просмотров: 19097
Последний ответ 16.03.2023, 09:53:16
от kit2m2
[Решено] Товар на замену в блоке с ценой

Автор dron

Ответов: 2
Просмотров: 2754
Последний ответ 13.04.2022, 16:09:53
от dron
[Решено] Разные шаблоны для разных статусов заказов

Автор nevigen

Ответов: 4
Просмотров: 5011
Последний ответ 04.04.2022, 19:45:58
от nevigen
(РЕШЕНО) Как в модуле фильтров вывести логотипы производителей?

Автор denxio

Ответов: 9
Просмотров: 2891
Последний ответ 24.05.2020, 19:22:12
от vitalicc