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

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Как обрезать вывод краткого описания товара в списке товаров категории, скажем до 100 символов?
*

nevigen

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

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: Краткое описание, как обрезать?
« Ответ #2 : 04.03.2013, 17:49:25 »
 ;D Сформулирую вопрос иначе, в каком файле прописан код вывода интротекста (как его обрезать, это понятно), неужели в настройках не задается к-во символов, слов интротекста, как в К2?
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Краткое описание, как обрезать?
« Ответ #3 : 04.03.2013, 19:18:37 »
/components/com_jshopping/templates/default/list_products/product.php
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Краткое описание, как обрезать?
« Ответ #4 : 05.03.2013, 09:33:37 »
неужели в настройках не задается к-во символов, слов интротекста, как в К2?
JoomShopping это не как К2. Это даже разные компоненты. И сравнивать желтое с круглым не нужно.
Меня просто заинтересовало, зачем обрезать короткое описание, если его можно написать менее 100 символов. Ведь если Вы обрежете этот текст, его больше нигде нельзя будет прочитать...
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: Краткое описание, как обрезать?
« Ответ #5 : 05.03.2013, 13:29:03 »
JoomShopping это не как К2. Это даже разные компоненты. И сравнивать желтое с круглым не нужно.
Меня просто заинтересовало, зачем обрезать короткое описание, если его можно написать менее 100 символов. Ведь если Вы обрежете этот текст, его больше нигде нельзя будет прочитать...
Ну это с вашей точки зрения. Я не желтое с круглым сравниваю, а один и тот же принцип вывода информации в этих 2-х компонентах - на К2 тоже магазины делают, если вы не в курсе. Так вот, общим у "круглого и желтого" является одинаковая логика навигации по базе (и не только этих компонентов) : сначала идет вывод материалов/товаров категории, затем вы можете перейти к конкретному материалу/товару. Для экономии места в списке категорий используется не вся информация материала, а для этого  предусмотрено поле "интротекст" в К2 и "краткое описание в JShope". Ограничение на к-во символов/слов используется для дизайна - автоматической нарезки текста заданного размера. Этот принцип используется во всех слайдерах, бегущих строках и пр. С вашим к-вом звездочек на погонах, задавать такие вопросы, товрищь генерал)
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Краткое описание, как обрезать?
« Ответ #6 : 05.03.2013, 13:33:07 »
может Вам это скорее надо ?
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Re: Краткое описание, как обрезать?
« Ответ #7 : 05.03.2013, 16:56:37 »
С вашим к-вом звездочек на погонах, задавать такие вопросы, товрищь генерал)
Я понимаю смысл вывода обрезанного текста в кратком описании, но при Вашем подходе Вам придется заполнять одинаковым текстом как краткое описание, так и начало полного описания, а это нерационально дублировать текст. Именно поэтому я задаю такие вопросы.
Оптимальным решением в таких ситуациях является заполнение только полного текста, а в кратком выводить обрезанную часть полного, что собственно и делает плагин Nevigen'a. Пообщавшись тут с людьми уже не хочется додумывать, чего же они хотели, поэтому ответы соответствуют вопросам.

P.S.
Ну это с вашей точки зрения. Я не желтое с круглым сравниваю, а один и тот же принцип вывода информации в этих 2-х компонентах - на К2 тоже магазины делают, если вы не в курсе.
На автомобиль тоже можно прикрутить гусеницы, но танком он от этого не станет.
Ну это уже лирика...
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: Краткое описание, как обрезать?
« Ответ #8 : 05.03.2013, 17:11:24 »
но при Вашем подходе Вам придется заполнять одинаковым текстом как краткое описание, так и начало полного описания, а это нерационально дублировать текст
Как то вы меня втягиваете в дискуссию помимо моего желания (плагины Nevigen'a я знаю и даже созрел уже ко-что купить). Я использую другую религию в плане использования интро- и полного текста. Я не  заполняю интро началом полного текста, поскольку в таком случае получается, что один и тот же текст будет дублирован на разных страницах. Мне кажется, что это отражается на индексировании страниц сайта, но я могу ошибаться. Потому интро у меня - одно, полный текст - совсем другое.
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Re: Краткое описание, как обрезать?
« Ответ #9 : 05.03.2013, 17:12:10 »
/components/com_jshopping/templates/default/list_products/product.php
Код: php
<?php
//кол-во символов
$maxlen = 50;
function cutString($string, $maxlen) {
    $len = (mb_strlen($string) > $maxlen)
        ? mb_strripos(mb_substr($string, 0, $maxlen), ' ')
        : $maxlen
    ;
    $cutStr = mb_substr($string, 0, $len);
    return (mb_strlen($string) > $maxlen)
        ? '' . $cutStr . '...'
        : '' . $cutStr . ''
    ;
}
?>

<?php
//выводим обрезанное краткое описание
$cdescription = $product->short_description;
echo cutString(strip_tags($cdescription), $maxlen);
?>

не проверяла
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: Краткое описание, как обрезать?
« Ответ #10 : 05.03.2013, 17:50:50 »

Спасибо, проверю позже.

« Последнее редактирование: 05.03.2013, 17:51:56 от ELLE »
*

Ramil8009

  • Захожу иногда
  • 147
  • 1 / 1
Re: Краткое описание, как обрезать?
« Ответ #11 : 02.11.2014, 09:43:52 »
Не работает способ от ELLE. Опечатка какая-то в коде
*

Ramil8009

  • Захожу иногда
  • 147
  • 1 / 1
Re: Краткое описание, как обрезать?
« Ответ #12 : 02.11.2014, 10:02:01 »
Нашел вот такой код.  Обрезает, но как то глючно - коверкает верстку ))
Цитировать
   <?
$product->short_description = substr($product->short_description,0,strripos(substr($product->short_description,0,50),' '));
echo $product->short_description;
?>
Не подскажите как подправить?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Краткое описание, как обрезать?
« Ответ #13 : 02.11.2014, 12:23:02 »
у Joomla есть класс JString, предназначенный для строк в utf8

Код: php
echo JString::substr($product->short_description, 0, 50);
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Ramil8009

  • Захожу иногда
  • 147
  • 1 / 1
Re: Краткое описание, как обрезать?
« Ответ #14 : 02.11.2014, 12:52:01 »
Не подскажешь еще, как добавить многоточие в конце обрезаемого текста?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Краткое описание, как обрезать?
« Ответ #15 : 02.11.2014, 15:09:31 »
так просто в шаблоне три точки поставить. или это слишком легкий путь? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Ramil8009

  • Захожу иногда
  • 147
  • 1 / 1
Re: Краткое описание, как обрезать?
« Ответ #16 : 02.11.2014, 15:28:57 »
Точно! Спасибо огромное!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести описание группы пользователей

Автор Preview

Ответов: 8
Просмотров: 1123
Последний ответ 17.03.2023, 12:01:32
от kit2m2
Вопрос про краткое и полное описание товара

Автор maffi

Ответов: 29
Просмотров: 1559
Последний ответ 13.06.2021, 17:18:25
от ShopES
При смене языка не меняется название и описание товара в JoomShopping

Автор SFM

Ответов: 3
Просмотров: 735
Последний ответ 21.01.2021, 14:23:41
от kit2m2
JoomShopping описание товара переместить вниз под фото

Автор krul

Ответов: 15
Просмотров: 6692
Последний ответ 17.08.2020, 09:30:06
от nevigen
Как вставить форму обратной связи в описание товара в качестве покупки в 1 клик?

Автор stitch808

Ответов: 7
Просмотров: 1274
Последний ответ 13.03.2020, 13:31:42
от gartes