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

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
Здравтсвуйте! Помогите, пожалуйста, дописать запрос на выборку. Буду благодарен за помощь.
Код
$query = "SELECT
                    prod.product_ean,
                    prod.`".$lang->get('meta_keyword')."` as meta_keyword,
                    prod.`".$lang->get('short_description')."` as short_description,
                    prod.product_price,
                    prod.product_quantity,
                    prod.product_manufacturer_id,
                    prod.product_thumb_image,
/*сюда вставить*/
                  FROM `#__jshopping_products` AS prod
                  LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
                  LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id
                  GROUP BY prod.product_id"

1. Как по currency_id (из #__jshopping_products) выбрать нужный currency_value (из #__jshopping_currencies)?
2. Как из #__jshopping_products_images по product_id выбрать все картинки товара через запятую?
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Здравтсвуйте! Помогите, пожалуйста, дописать запрос на выборку. Буду благодарен за помощь.
Это куда вообще вставляться будет? Какие поля в общем нужны? Обязательно одним запросом выполнять? Может имеет смысл для выборки фото отдельный запрос сделать?
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
Это куда вообще вставляться будет? Какие поля в общем нужны? Обязательно одним запросом выполнять? Может имеет смысл для выборки фото отдельный запрос сделать?
1. Будет вставляться в nrexportutf8.php (вигрузка товаров в Joomshopping).
2. К тому что уже есть нужно добавить значение валюты (есть несколько валют) по id, id валюты взять с #__jshopping_products товара.
3. Да, нужно одним запросом, JOIN добавить нужные таблицы.
4. "для выборки фото отдельный запрос" - я тоже об этом думал, можна сделать отдельным.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Ну наверное как-то так
Код
$query = "SELECT
                    prod.product_ean,
                    prod.`".$lang->get('meta_keyword')."` as meta_keyword,
                    prod.`".$lang->get('short_description')."` as short_description,
                    prod.product_price,
                    prod.product_quantity,
                    prod.product_manufacturer_id,
                    prod.product_thumb_image,
                    currency.currency_value,
                    GROUP_CONCAT(images.image_name)
                  FROM `#__jshopping_products` AS prod
                  LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
                  LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id
                  LEFT JOIN `l_jshopping_currencies` AS currency USING(currency_id)
                  LEFT JOIN `l_jshopping_products_images` as images USING (product_id)
                  GROUP BY prod.product_id"
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
Ну наверное как-то так
Код
$query = "SELECT
                    prod.product_ean,
                    prod.`".$lang->get('meta_keyword')."` as meta_keyword,
                    prod.`".$lang->get('short_description')."` as short_description,
                    prod.product_price,
                    prod.product_quantity,
                    prod.product_manufacturer_id,
                    prod.product_thumb_image,
                    currency.currency_value,
                    GROUP_CONCAT(images.image_name)
                  FROM `#__jshopping_products` AS prod
                  LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
                  LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id
                  LEFT JOIN `l_jshopping_currencies` AS currency USING(currency_id)
                  LEFT JOIN `l_jshopping_products_images` as images USING (product_id)
                  GROUP BY prod.product_id"
Большое спасибо, но что-то не выходит вывести id категории

Код
		$query = "SELECT
                    prod.product_ean,
                    prod.product_price,
                    currency.currency_value,
                    GROUP_CONCAT(images.image_name)
                  FROM `#__jshopping_products` AS prod
                  LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
                  LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id
                  LEFT JOIN `#__jshopping_currencies` AS currency USING(currency_id)
                  LEFT JOIN `#__jshopping_products_images` as images USING (product_id)
                  GROUP BY prod.product_id";

        $db->setQuery($query);
        $products = $db->loadObjectList();

        $data = array();
        $head = array("Код_товара","Цена","Категория");
        $data[] = $head;

        foreach($products as $prod){
            $row = array();
            $row[] = $prod->product_ean;
$row[] = number_format($prod->product_price/$prod->currency_value, 0, '', '');
$row[] = $prod->categ; /*Наверное здесь неправильно обращаюсь к id категории*/
            $data[] = $row;
        }

Разобрался, просто забыл дописать categ.category_id, вопрос закрыт.
« Последнее редактирование: 31.05.2016, 09:34:33 от tomas_morgam »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Запрос активации учетной записи {name} на сайте {sitename}

Автор ecolora

Ответов: 14
Просмотров: 1203
Последний ответ 30.05.2022, 00:33:31
от ProtectYourSite
Как правильно дополнить запрос к таблице товаров чтобы вывести значение из базы данных в список това?

Автор kit2m2

Ответов: 7
Просмотров: 1188
Последний ответ 25.09.2016, 08:19:22
от dmitry_stas
SQL запрос

Автор mbb

Ответов: 3
Просмотров: 1030
Последний ответ 03.08.2016, 14:34:19
от mbb
Запрос на выборку товаров с метками

Автор tomas_morgam

Ответов: 1
Просмотров: 840
Последний ответ 05.07.2016, 16:41:43
от Linfuby
Уважаемые знатоки, запрос к БД(

Автор Begotten

Ответов: 4
Просмотров: 932
Последний ответ 02.02.2015, 10:51:24
от Linfuby