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

rudoy24

  • Захожу иногда
  • 57
  • 1 / 0
Здравствуйте...
Возможно ли реализовать отображение списка товаров категории таким образом, что бы товары с меткой (метка у которой id=3) шли первыми в списке товаров категории?

Насколько я понимаю необходимо править код файла "components/com_jshopping/templates/назване_шаблона/list_products/product.php", но какое условие там прописать не пойму!  !
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Шаблон тут не при чем... Надо делать правки в файле настроек.
\components\com_jshopping\lib\default_config.php
Ищите $config->sorting_products_field_select и там указаны списки для сортировки. Добавляете нужную, и в настройках магазина выбираете ее по умолчанию.
Если из моего поста не понятно, воспользуйтесь поиском на форуме по слову sorting_products_field_select
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Ищите $config->sorting_products_field_select и там указаны списки для сортировки.

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

rudoy24

  • Захожу иногда
  • 57
  • 1 / 0
Это не должна быть сортировка как таковая, это должно быть условие в выводе списка товаров категории, по условию какого товары с меткой (id=3) будут выводится первыми в списке а далее будут идти остальные товары.
Я так думаю что когда будет применятся сортировка к реализованному такому выводу, то товары с меткой все равно будут первыми.

Кстати модуль перед списком товаров тоже не вариант, так как во первых будет повтор товаров в модуле а потом в списке товаров, а во вторых делать для каждой категории свой модуль очень накладно и громоздко получится, да и вывод именно меток данной категории в категории тоже может быть проблемой!!

Как я думаю лучшим вариантом будет прописать условие в "list_products/product.php" по которому сначала выведется товары с меткой (id=3), а после будут идти товары!

А вообще суть такова и возможно я не в ту сторону смотрю, и кто-то подскажет лучше вариант:
Необходимо вывести  определенные товары первыми в списке категорий, но вот предустановленная сортировка не подходит, поту как из слов "не удобная и постоянно необходимо перестраивать", по этому лучшим вариантом подумал будет решение через отдельную метку, но как ее и только ее вывести первой в списке, ведь есть и другие метки и если просто делать сортировку то в начале выведутся товары со всеми метками, а необходимо что бы только (id=3), а дальше уже в зависимости от сортировки!
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
а разве так получится сделать? ведь это не сортировка как таковая...
Немного воображения и логики, и любая проблема становится решенной
Код: php
$config->sorting_products_field_select =   array(1 => 'name',           2=>'prod.product_price',        3=>'prod.product_date_added', 5=>'prod.average_rating', 6=>'prod.hits',         4=>'IF(prod.label_id = 3, \'prod.label_id\', \'pr_cat.product_ordering\'), pr_cat.product_ordering');
http://localhost/administrator/index.php?option=com_jshopping&controller=config&task=catprod
Выбираем Сортировка товаров - Предустановленная
Радуемся результату (Конечно если я всё правильно понял по задаче)
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

rudoy24

  • Захожу иногда
  • 57
  • 1 / 0
 ^-^ Да спосоп подходит, правда недостатком есть то что необходимо менять сами файлы движка и при обновлении все слетит...
Еще как вариант нашел бесплатный плагин "Сортировка отсутствующих товаров в JoomShopping" - http://nevigen.com/ru/shop/addons/sortirovka-otsutstvuyushchikh-tovarov-v-joomshopping.html#description

может попробовать его доделать так чтобы товары с меткой выводились первыми... щас гляну и отпишусь...
*

Cerber

  • Захожу иногда
  • 266
  • 34 / 0
  • Богиня Иштар и ее пес Пи..ц
при обновлении все слетит...

Создайте свой файл настоек "user_config.php" - в той же папке
и записывайте в него только то что изменили в default_config.php

все просто ;)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Немного воображения и логики, и любая проблема становится решенной

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

rudoy24

  • Захожу иногда
  • 57
  • 1 / 0
Подскажите как этот код (выводит отсутствующие товары последними):
Код
$adv_result .= ", IF(prod.product_quantity>0,1,0) as qflag"; 
$order_explode = explode(" ", $order_query);
$order_query = 'ORDER BY qflag DESC, '.$order_explode[3].' '.$order_explode[4];
переписать под вывод товаров с метками id=3 первыми в списке товаров категории?
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
rudoy24, Вам же уже дали ответ, который решит Вашу проблему. И при обновлении магазина ничего не слетит.
Зачем изобретать велосипед?
Если же хотите свой велосипед, то я уже показал какой должен быть запрос в ORDER BY
Код: php
IF(prod.label_id = 3, \'prod.label_id\', \'pr_cat.product_ordering\')
Переведу на русский: Если метка имеет значение 3, то сортировать в первую очередь по этой метке (label_id), иначе по обычной сортировке (product_ordering)
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

rudoy24

  • Захожу иногда
  • 57
  • 1 / 0
Да вопрос решен, спасибо Linfuby (+)
« Последнее редактирование: 17.12.2014, 13:24:21 от rudoy24 »
*

юрий 009

  • Захожу иногда
  • 341
  • 5 / 1
подскажите пожалуйста как сделать чтобы товар с меткою prod.label_id = 3 выводился останим
*

kevges

  • Новичок
  • 7
  • 1 / 0
Необходимо вывести товар первым у которого присвоено 2 метки(например label_id = 1 && label_id = 2). Может кто-то знает решение?
*

nevigen

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

kevges

  • Новичок
  • 7
  • 1 / 0
в базе жш нет возможности 2 меток.
выше давали решение уже. добавьте в услоиве "и"
Спасибо за ответ!
Понимаю, на сайте установлен Addon Label multiselect с помощью которого присваивается больше одной метки.
"IF(prod.label_id = 1 && prod.label_id = 2" - так не сработает.
Если так: "IF(prod.label_id >= 1 && prod.label_id <= 2", то будет выводится по 2 меткам, но среди них есть товары и с одной меткой.

Думал в контроллере добавить условие:
Код
	if($label_id == 1 && $label_id == 2) {
 $order = $mainframe->getUserStateFromRequest( $context.'order', 'order', 4, 'int');}
Но тоже не вариант, не хватает знаний.

*

dmitry_stas

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

nevigen

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

kevges

  • Новичок
  • 7
  • 1 / 0
надо сначала посмотреть в каком виде в базе хранится несколько меток для товара. через запятую, или отдельной таблицей, или еще может как то.

Нашел строку в коде Addon Label multiselect 1.0.2(бесплатная версия):
Код
  $query = "UPDATE `#__jshopping_products` SET `label_multiselect` = '".$db->escape($implodeArr)."' WHERE `product_id` = ".intval($product_id)." ";
Получается что в таблице `#__jshopping_products` в колонке `label_multiselect` хранятся значения.

Проверил, так и есть, перечислены через запятую.
*

kevges

  • Новичок
  • 7
  • 1 / 0
проще обратится к разрабтчику плагина мультилейбл за советом.
Возможно, но думаю что совет будет учи php)
Посмотрю код плагина, может и озарит.
*

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
Прошу прощения за поднятие столь древней темы, но решил усложнить условие сортировки вывода, которое тут приведено выше, и ничего не получилось.
Суть вот в чём: хочется сначала выводить товары (самыми самыми первыми) с определённой меткой, после них все товары у которых есть другие метки, и только потом все остальные.

На данный момент строка в файле 'user_config.php' выглядит следующим образом:
Код
4=>'IF(prod.label_id = 5 OR prod.label_id = 1, \'prod.label_id\', \'pr_cat.product_ordering\'), pr_cat.product_ordering'
Чтобы вывести товары с другими метками я просто могу тут добавить ещё условия 'OR' по аналогии, и всё будет хорошо.
Но как товары с меткой id=7 вывести вообще впереди всех?

Пытался сделать так:
Код
4=>'IF(prod.label_id = 7, \'prod.label_id\', \'pr_cat.product_ordering\', IF(prod.label_id = 5 OR prod.label_id = 1, \'prod.label_id\', \'pr_cat.product_ordering\')), pr_cat.product_ordering'
но получаю ошибку: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' IF(prod.label_id = 5 OR prod.label_id = 1, 'prod.label_id', 'pr_cat.product_...' at line 4

Понимаю, что тут ошибка в синтаксисе, но не понимаю, как правильно выражение написать.
Знатоки, помогите пожалуйста  !!!???!!!
« Последнее редактирование: 13.03.2023, 23:02:29 от goga_pgasovav »
*

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
Уже какие только варианты не испробовал. Всегда ошибка. Не нравится двойное условие, а как иначе это представить не понимаю  *ОХ-Х-Х*
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор sergeytolkachyov

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

Автор sergeytolkachyov

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

Автор goga_pgasovav

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

Автор sergeytolkachyov

Ответов: 0
Просмотров: 1534
Последний ответ 24.12.2024, 14:50:42
от sergeytolkachyov
JoomShopping, вывод всех категории к которым принадлежит товар

Автор Valent777

Ответов: 12
Просмотров: 2467
Последний ответ 01.11.2024, 14:57:28
от kit2m2