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

Good_user

  • Захожу иногда
  • 149
  • 5 / 1
Всем добрый вечер! Как все вы знаете на страницах категорий магазина, если макет вывода товаров настроен в несколько столбцов, высота товаров получается разной и это совсем не смотрится. Красиво и удобно, когда все части находятся на одной линии - заголовок, фото, цена, кратк. описание и характеристики.

С кратким описанием как раз самый большой бич, так как прочие элементы выводить в одну линию не проблема. Делать идентичные и точные по количеству символов описание - это мазохизм, наверное. И тут обрезание по количеству символов просто спасает.

Погуглив решение под ЖШ найти не удалось, поэтому пришлось немного напрячь извилины, но задуманное все таки получилось реализовать. Решил поделится, думаю, это многим должно пригодится.

Собственно, решение:

1. В файле components/com_jshopping/templates/default/list_products/product.php, а лучше делать через переопределение templates/шаблон/html/com_jshopping/list_products/product.php находим:

Код
<?php print $product->short_description?>

2. Меняем на это:

Код
<?php $string = $product->short_description;
echo JString::substr($string,0,165);
$result = iconv("windows-1251","utf-8", $result);
echo $result;
if($result!=$string)echo'...';
?>

Все! Обрезание заканчивается троеточием.

По этому примеру можно обрезать и заголовки, и в модулях товаров этот вариант тоже работает. Буду рад, если это кому-то поможет и сэкономит время :-)

Обновление! error648398, предложил более краткий работающий вариант кода, за что ему благодарность!
Код
<?php print mb_substr( $product->short_description, 0, 165).'...';?>
Обновление №2! Оказывается, что последний вариант кода может не работать, если на хостинге нет mb_substr. Вариант в JString::substr более универсальным.

Код
<?php print JString::substr($product->short_description, 0, 170).'...';?>

dmitry_stas, Вам благодарность за пояснение!
« Последнее редактирование: 08.09.2015, 08:39:32 от Good_user »
*

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Как вы решили проблему оформления короткого описания тегами ?
Да и код можно намного сильнее сократить, да и решение вы плохо гуглили.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Как вы решили проблему оформления короткого описания тегами ?
Да и код можно намного сильнее сократить, да и решение вы плохо гуглили.
выкладывайте решение.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

error648398

  • Захожу иногда
  • 168
  • 21 / 0
выкладывайте решение.
Решить проблему с оформлением я не знаю, код можно сократить до:
<?php print mb_substr( $product->short_description, 0, 165).'...';?>
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Решить проблему с оформлением я не знаю....
что имеется ввиду под оформлением ?
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

error648398

  • Захожу иногда
  • 168
  • 21 / 0
что имеется ввиду под оформлением ?
Ну например человек заходит в описание товара и через редактор TinyMCE, придает оформление короткому описанию (цвет, отступы и тд и тп).
Вот и получается что при выводе и обрезании описания, может вывестись открывающий тег, но обрежет закрывающий, что в большинстве случаев приведет к похеренью верстки.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
я уже писал не раз, в том числе и в недавней теме про обрезание, что для этого нужно использовать.

P.S. третья по моему тема про обрезание за этот месяц только...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Good_user

  • Захожу иногда
  • 149
  • 5 / 1
Ну например человек заходит в описание товара и через редактор TinyMCE, придает оформление короткому описанию (цвет, отступы и тд и тп).
Вот и получается что при выводе и обрезании описания, может вывестись открывающий тег, но обрежет закрывающий, что в большинстве случаев приведет к похеренью верстки.
Я, честно говоря, даже и не задумывался, чтобы размечать краткое описание HTML тегами. Думал, раз там по умолчанию редактор не выводится - значить и не нужно оно. Мне кажется без этого можно обойтись, это некритично. И к тому же HTML теги засчитываются в количестве символов, разное количество тегов = разная высота краткого описания. Это создает дополнительный геморрой. Если нужно на что-то акцентировать внимание, то лучше использовать характеристики. Но это, конечно, не решает описанную Вами проблему.
я уже писал не раз, в том числе и в недавней теме про обрезание, что для этого нужно использовать.
P.S. третья по моему тема про обрезание за этот месяц только...
Извините, я создал эту тему не в целях набить количество сообщений. Действительно думал, что этот момент плохо освещен :-) Просто форум читаю нерегулярно.
http://joomlaforum.ru/index.php/topic,262550.0.html ;)
Благодарю! Не пойму как я мог прошлепать эту тему, она бы сэкономила мне немало времени.

dmitry_stas, Вы в той теме пишете про mb_substr.

ну не то чтобы... mb_substr если работает, то и будет работать. JString проверяет, установлен ли mb_substr, и использует именно его, если он установлен. так что вариант с mb_substr в какой то мере даже лучше, потому что нет лишних проверок. но вы должны быть изначально уверены, что он установлен. а JString будет универсальнее в этом плане. в общих случаях, когда вы не знаете заранее на каком хостинге будет выполнятся ваша программа, лучше использовать JString. в одном конкретном случае - проще mb_substr
Благодарю, очень ценная информация! Вы говорите, что с mb_substr в какой то мере даже лучше, потому что нет лишних проверок. Интересно, а эти лишние проверки насколько негативно они сказываются на показателях сайта? Как я понимаю это создает дополнительную нагрузку на хостинг и влияет на скорость загрузки сайта? Или там какое-то другое влияние? Заранее спасибо!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
та... десятитысячная, стотысячная секунды? я говорил об итого подходе. за универсальность - всегда нужно чем то платить. скоростью например. но в данном конкретном случае - я думаю этой нагрузкой можно пренебречь :) проведите если хотите замеры, насколько быстрее будет mb_substr чем JString::substr. скажем цикл из 10000 итераций, и засечь время выполнения цикла. не думаю что эта разница будет хоть насколько то ощутима для пользователя.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор sergeytolkachyov

Ответов: 25
Просмотров: 35714
Последний ответ 23.09.2025, 11:22:23
от Alex_gs
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 2
Просмотров: 2049
Последний ответ 04.07.2025, 10:30:36
от sergeytolkachyov
[Решено] Сбросить счётчик ID товаров JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 1359
Последний ответ 13.02.2025, 00:11:20
от goga_pgasovav
Плагин обновления цен и остатков товаров JoomShopping из CSV

Автор sergeytolkachyov

Ответов: 0
Просмотров: 1536
Последний ответ 24.12.2024, 14:50:42
от sergeytolkachyov
Сортировка товаров в админке

Автор Emotion

Ответов: 26
Просмотров: 6718
Последний ответ 15.08.2024, 08:00:20
от kit2m2