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

sergeyvladk

  • Новичок
  • 7
  • 0 / 0
Здравствуйте! Подскажите пожалуйста. Как и где меняется длина описания.
Мне необходимо увеличить параметр длины, дабы не резало текст.
Искал что то подобное на сайте и вообще.. не нашел ничего толкового.

очень на Вас всех надеюсь!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
нет ограничений на полное описание. разве что ограничено объемом, отведенным на строку в таблице для хранения в базе данных - 64К. какой длины текст вы пытаетесь туда запихнуть?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

sergeyvladk

  • Новичок
  • 7
  • 0 / 0
dmitry_stas,
Длинный текст.. 21456 символов - предел, при котором текст обрезало.  "строку в таблице для хранения в базе данных - 64К" не подскажите где именно искать? последствия отрицательного характера возникнут при таком объеме?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
нигде не искать. больше не влезет. ограничение MySQL.

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

sergeyvladk

  • Новичок
  • 7
  • 0 / 0
dmitry_stas, Это странно, Mosets Tree вмещает. там со стороны компонента в настройках можно проставить значение. Я думаю решение найти можно.
А что по поводу подгрузки из внешнего источника, то, как я понимаю, придется под каждую страницу(файл) писать свой Flash, где в кадре прописывать имя файла. Может, придумали модуль, отменяющий эту рутину?)

товары специфичнее некуда.. но там еще кроме текста много кода и нет этот код не вставить модулем(он уникален для каждой стр. + если так все таки делать то менеджер модулей утонет или я там заблужусь окончательно)
благодарю за ответы

_______
 ps alt+s хоткей не работает на отправку сообщения :(
alt+p настройки браузера (ну это наверное все Opera..)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
Это странно, Mosets Tree вмещает. там со стороны компонента в настройках можно проставить значение.
как на вокзале :) повторяю :) понятия не имею кто такой Mosets Tree, но дело абсолютно не в компоненте. Дело в возможностях базы и ее ограничения. Одна строка - не более 64К. Запись для одного товара в таблице #__jshopping_products содержит помимо описания еще много чего: название, характеристики, информацию про производителя, цену и т.д. Основная проблема, и это уже не раз обсуждалось, лежит в плоскости использования характеристиками той же таблицы, что и товар. Если характеристик много, то на другое места может и не хватить. Можете конечно урезать в базе длину для extra_fileds_xx со 100 скажем до 20, если вам хватит такой длины для хранения характеристик. Но это решит проблему лишь отчасти, потому что более длинный текст опять таки может не влезть в описание.
Цитировать
писать свой Flash
флеша еще не хватало :) обойтись можно и обычным текстовым файлом например.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

sergeyvladk

  • Новичок
  • 7
  • 0 / 0
флеша еще не хватало :) обойтись можно и обычным текстовым файлом например.
а текстовым файлом это как в твоем понимании? во флеше тоже текстовым.. просто там придется функцию каждый раз переписывать.
в HTML есть аналог <? include... ? на сколько я представляю нет. а, следовательно, php код в данном варианте не подтянется без дополнительных модулей(ну и вот я опять подошел к куче модулей)) ну или плагинами можно) - но глупо глупо

а при создании товара реально сделать спец поле в условленной позиции для вывода произвольного кода или может уже есть что-нибудь подобное? ну типо пишу "<?php include 'file.txt'; ?>" на следующий товар уже <?php include 'file2.txt'; ?> и т.д.
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
Цитировать
а при создании товара реально сделать спец поле в условленной позиции для вывода произвольного кода или может уже есть что-нибудь подобное? ну типо пишу "<?php include 'file.txt'; ?>" на следующий товар уже <?php include 'file2.txt'; ?> и т.д.
а не проще ли:
  • в настройках магазина -> функции магазина -> блок товары = чекбокс файлы  - поставить галочку
  • а затем в товаре на вкладке файлы добавлять Демо файл
?
по моему проще
« Последнее редактирование: 04.12.2013, 00:39:12 от ViktorMah »
*

sergeyvladk

  • Новичок
  • 7
  • 0 / 0
а затем в товаре на вкладке файлы добавлять Демо файл
не то, мне необходим текст полного описания(достаточно большой, чти выше) который разобъется на страницы
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
я писал исходя из последнего поста, а точнее
Цитировать
а при создании товара реально сделать спец поле в условленной позиции для вывода произвольного кода или может уже есть что-нибудь подобное? ну типо пишу "<?php include 'file.txt'; ?>" на следующий товар уже <?php include 'file2.txt'; ?> и т.д.
а в плане
Цитировать
мне необходим текст полного описания который разобъется на страницы
прямо вводимый текст не разобьётся на страницы = нет такого функционала для карточки товара. да и прицепить стаью из com_content тоже не поможет = такое же ограничение длинны текста. но там можно разбивать руками на страницы.

пожалейте пользователей = цепляйте файлом
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а при создании товара реально сделать спец поле в условленной позиции для вывода произвольного кода или может уже есть что-нибудь подобное? ну типо пишу "<?php include 'file.txt'; ?>" на следующий товар уже <?php include 'file2.txt'; ?> и т.д.
эх, горе не беда - сплошное огорчение...
1. открываете шаблон карточки товара \components\com_jshopping\templates\default\product\product_default.php.
2. в нужном месте вставляете что хотите. как вариант - использовать ID текущего товара в имени файла, чтобы понимать какой файл подгрузить.
3. создаете собственно сами файлы текстовые или php, как уже решите что вам именно надо.
4. наслаждаетесь безумно длинным текстом с секретным кодом.  
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

sergeyvladk

  • Новичок
  • 7
  • 0 / 0
1. открываете шаблон карточки товара \components\com_jshopping\templates\default\product\product_default.php.
2. в нужном месте вставляете что хотите. как вариант - использовать ID текущего товара в имени файла, чтобы понимать какой файл подгрузить.
в таком случае все прикрепленные файлы будут отображаться во всех товарах, если только не привязывать к соответствующему адресу, а это приведет к невероятно длинному рулону туалетной бумаги с расширением .PHP(product_default) глупо. спасибо за старание!! но все не то)) инфа должна быть уникальной и удобочитаемой для посетителя(да, символов много, но будет пагинация по соответствующим характеристикам и/или разделам)


_____________
сайт для узкой категории лиц в окупаемом проекте, что толкает на создание сего чуда...
*

dmitry_stas

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

JoomShopping плагин подмены статического текста JoomShopping на материалы Joomla

Автор sergeytolkachyov

Ответов: 6
Просмотров: 1769
Последний ответ 01.03.2024, 13:41:05
от sergeytolkachyov
Корректировка текста на странице оформления заказ

Автор Buddy91

Ответов: 6
Просмотров: 923
Последний ответ 18.10.2021, 15:39:19
от Buddy91
Изменить письмо-заказ

Автор mesmer

Ответов: 14
Просмотров: 6066
Последний ответ 22.07.2021, 17:12:30
от ureel
Возможность изменить очередность шагов заказа

Автор avantyrist

Ответов: 19
Просмотров: 2101
Последний ответ 01.04.2021, 14:33:56
от nevigen
Изменить дату с английского на русский в заказе и в счете JoomShopping

Автор Kokshetau

Ответов: 14
Просмотров: 1255
Последний ответ 21.11.2020, 23:35:20
от Kokshetau