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

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Доброго дня!
Установлены: JoomShopping 3.14.3 , JoomShopping_search.3.1.4 , ну и Joomla_2.5.14-Stable.
Суть проблемы в следующем - при поиске любого товара, выдается список товаров в обратном порядке. То есть сначала идут наименее совпадающие результаты, затем уже верные, наиболее. По умолчанию установлена настройка сортировки товаров в категориях по алфавиту А-Я. Пробовал различные ухищрения из этой темы http://joomlaforum.ru/index.php/topic,241182.msg1416828.html#msg1416828 , но естественно результат нулевой.

Где я пробовал:
components\com_jshopping\templates\default\list_products\form_filters.php - изменял данный код - безрезультатно.
components\com_jshopping\js\function.js - менял значение orderby - бесполезно.

В ранних версиях, по описаниям, за вывод формы фильтрации в поиске отвечал файл search\form_filters.php - в используемой версии он отсутствует.

Итого, я имею: два дня чугунную голову, и код order=1&limit=12&orderby=1&limitstart=0 - который не знаю куда мне вставить.
Подскажите, а?

А может, я не там копал?
Взглянул на причину с другой стороны. В общем, при выводе результата поиска, сортировка стоит от меньшего к большему соответствию (стрелочка вниз). Если нажать на стрелку, то она будет показывать вниз, и результат становится тот, который требовался. Суть вопроса - как по умолчанию сделать так, чтобы стрелка была вверх (и сортировка, конечно же, от большего к меньшему)?
« Последнее редактирование: 06.02.2015, 17:31:12 от Urdash »
*

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Копаясь дальше, пришел к такому выводу:
проблема вывода поиска (сортировка по возрастанию)
причина - orderby , который где-то получает значение ASC (сортировка по возрастанию)
решение - сменить на DESC (сортировка по убыванию)

Вопрос - где?
*

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Ок, нашел ответ. В functions.php
Только нюанс - такая же сортировка теперь во всех категориях товаров. Интересно, как решить такую проблему?
*

dmitry_stas

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

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
если нужно только для поиска, то вам нужен контроллер search
Код
$order = ...

я не нашел в этом контроллере такого параметра. Только это - 
Код
$order_item = JTable::getInstance('orderItem', 'jshop');
, но оно не имеет таких настроек по сортировке, если не проглядел?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
я не нашел в этом контроллере такого параметра

видимо плохо искали :) а судя по тому, что вы нашли

$order_item = JTable::getInstance('orderItem', 'jshop')

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

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Виноват, сам запарился и Notepad++ уже начал глючить, не то открыл, я и не обратил внимания.
Итак, получается, что нужная нам строчка эта
Код
$order = $mainframe->getUserStateFromRequest($context.'order', 'order', $jshopConfig->product_sorting, 'int');
и здесь нам нужно просто дописать DESC примерно так
Код
$order = $mainframe->getUserStateFromRequest($context.'order', 'order', $jshopConfig->product_sorting, 'int' 'DESC');
правильно? Или лучше добавить параметр отдельно?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
вам же надо я так понимаю всегда desc. поэтому
Код
$order = 'desc';
ну, или так как вы написали, если хотите сохранить возможность сортировки юзером
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Я, к сожалению, никакой кодер, но в разных вариантах пробовал, все равно приоритет стоит за functions.php - результат поиска в любом варианте переделки search выдает тот же результат сортировки от меньшего к большему..
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
сделайте
Код
$orderby = 0;
$order = 1;
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Urdash

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Re: Фильтр по умолчанию в модуле поиска
« Ответ #10 : 08.02.2015, 17:11:57 »
Огромное спасибо за решение! Только рабочий (требуемый) код будет следующим
Код
$orderby = 1;
$order = 1;
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JoomShopping как вывести фильтр в наличии

Автор thevaca

Ответов: 4
Просмотров: 1641
Последний ответ 15.08.2024, 17:41:20
от thevaca
Заголовки в результатах поиска

Автор mag_num83

Ответов: 8
Просмотров: 1772
Последний ответ 12.08.2024, 10:59:03
от sivers
Фильтр товаров для JoomShopping 5

Автор Lemonez

Ответов: 14
Просмотров: 2536
Последний ответ 25.04.2024, 14:11:25
от dron
Как отобразить строку поиска настраиваемого размера Joomla+JoomShopping?

Автор zantal

Ответов: 1
Просмотров: 1050
Последний ответ 19.10.2023, 18:29:32
от kit2m2
Фильтр - характеристики/опции JoomShopping 5

Автор Alex_gs

Ответов: 8
Просмотров: 1409
Последний ответ 23.09.2023, 17:19:57
от Alex_gs