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

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
В файле экспорта посмотрел, за вывод товаров отвечают строки:
Код: php
foreach($products as $prod){
            $row = array();
            $row[] = $prod->product_id;
            $row[] = $prod->product_ean;
            $row[] = $prod->product_quantity;
            $row[] = $prod->product_date_added;
            $row[] = $prod->product_price;       
            $row[] = $prod->tax;
            $row[] = utf8_decode($prod->cat_name);
            $row[] = utf8_decode($prod->name);
            $row[] = utf8_decode($prod->short_description);
            $row[] = utf8_decode($prod->description);
            $data[] = $row;
        }
Если этот так, тогда можно туда добавить поля для других данных, например "Ссылка на картинку" ?
И если это все получиться - ка добавить в раздел "Импорт Экспорт" свою ссылку на выгрузку файла?
Может кто подскажет как создать аддон для JoomShopping?
« Последнее редактирование: 11.06.2015, 15:00:06 от worldmen »
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
в комм раздел
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
в комм раздел
- это к чему?
В дополнение - я не знаю откуда взять наименование поля для объекта $products
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
можно туда добавить поля для других данных, например "Ссылка на картинку" ?

в запрос чуть выше который добавьте еще одно поле для выборки ( например в ЖШ 4.х для картинки - prod.image ), ну и в массивы $head и $row по аналогии потом добавьте это поле.

я не знаю откуда взять наименование поля для объекта $products

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

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
Хорошо.
Мне нужно еще валюта, хоть она и одна пока. Можно сделать пока так:
Код: php
$row[] = "UAH";
но в дальнейшем может быть несколько валют. в таблице #__jshopping_products есть только ключевое поле currency_id, а саму валюту можно как-то вытащить?
« Последнее редактирование: 11.06.2015, 17:33:49 от worldmen »
*

nevigen

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

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
ну еси есть ИД то есть и таблица валют.
рядышком наверное ? ;)
- Это понятно, только это ж надо через объекты его достать. А какие объекты нужно использовать для этого?
В _jshopping_currencies есть валюта, а как ее от туда достать?

Почему-то ссылки на изображения в файле экспорта не появляется, хотя там есть. Вот мой код:
Код: php
array("Name","Price","Valuta","Edinica_izmer","ean","qty","date","tax","category","short_description","Description","image_link");
$data[] = $head;
       
foreach($products as $prod){
$row = array();
$row[] = $prod->name;
$row[] = $prod->product_price;
$row[] = "UAH";
$row[] = "шт.";
//$row[] = $prod->product_id;
$row[] = $prod->product_ean;
$row[] = $prod->product_quantity;
$row[] = $prod->product_date_added;
                   
$row[] = $prod->tax;
$row[] = $prod->cat_name; //utf8_decode
$row[] = $prod->short_description;
$row[] = $prod->description; //utf8_decode
$row[] = $prod->image;
$data[] = $row;
« Последнее редактирование: 11.06.2015, 17:53:08 от worldmen »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Почему-то ссылки на изображения в файле экспорта не появляется, хотя там есть.

вероятно потому что не сделали

в запрос чуть выше который добавьте еще одно поле для выборки ( например в ЖШ 4.х для картинки - prod.image )
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
вероятно потому что не сделали
точно, в SQL запрос забыл добавить.
Мне дошло, в запрос добавляем что нужно (связи соответственно) и экспортируем что хотим:
Код: php
$query = "SELECT prod.product_id, prod.product_ean, prod.product_quantity, 
prod.product_date_added, prod.product_price,
 tax.tax_value as tax, prod.`".$lang->get('name')."` as name, prod.`".$lang->get('short_description')."` as short_description,  prod.`".$lang->get('description')."` as description, cat.`".$lang->get('name')."` as cat_name
,prod.image
                  FROM `#__jshopping_products` AS prod
                  LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
                  LEFT JOIN `#__jshopping_categories` as cat on cat.category_id=categ.category_id
                  LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id             
                  GROUP BY prod.product_id";
*

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
Нужно еще связать товар с категорией, т.е. создать ссылку на категорию тех товаров, в которой этот товар находится.
Категории товаров нашел - _jshopping_categories. А как связать в запросе?
Я не нашел какое поле отвечает за категорию в таблице товаров (_jshopping_products).
*

dmitry_stas

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

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
пока пробовал на локальной машине - все в порядке, попробовал на сайте, получилось вывод ссылки для картинки такой
Код: php
$row[] = $jshopConfig->image_product_path . $prod->image;	// "Ссылка_изображения"
/home/логин/data/www/сайт.com/components/com_jshopping/files/img.jpg
Как его сделать так что б было сайт.com/components/com_jshopping/files/img.jpg
А ссылка на категорию практически правильная:
Код: php
$row[] = $_SERVER['HTTP_HOST']."/".$prod->psevdonim; 	// Адрес_подраздела - ссылка на категорию
сайт.com/vodyanaya-pompa
но без http://, а хотелось бы с ним, как его добавить,?
*

worldmen

  • Захожу иногда
  • 136
  • 2 / 0
Нашел:
Код: php
$row[] = $jshopConfig->image_product_live_path ."/". $prod->image;

$row[] = JURI::root().$prod->psevdonim;
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Усовершенствованный импорт Import UTF8

Автор vagkrsk

Ответов: 323
Просмотров: 61973
Последний ответ 26.05.2020, 10:21:34
от kit2m2
Вынос импорта/экспорта на морду сайта

Автор Rikh

Ответов: 0
Просмотров: 1120
Последний ответ 07.02.2017, 11:57:43
от Rikh
Экспорт товаров в Вконтакте

Автор nevigen

Ответов: 4
Просмотров: 1607
Последний ответ 02.12.2016, 01:28:58
от dmitry_stas
Синхронизация интернет магазина JoomShopping и 1С Упl

Автор xDD

Ответов: 54
Просмотров: 10196
Последний ответ 20.11.2013, 10:31:47
от nevigen
Проблема с настройкой cron и include_once

Автор kirjwuk

Ответов: 6
Просмотров: 2370
Последний ответ 09.04.2013, 01:45:04
от kirjwuk