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

shurakana

  • Давно я тут
  • 792
  • 50 / 6
JOIN - INSERT UPDATE и SELECT
« : 09.08.2014, 18:21:09 »
Всем привет! Есть функция setCategoryToProduct в ней выполняется запрос в таблицу #__jshopping_products_to_categories, можно ли как то сделать с помощью JOIN так, чтобы выполнялось два запроса но в разные таблицы?

Нужно чтобы id категории также добавлялся и в #__jshopping_products в поле prod_category.
Код
INSERT INTO `#__jshopping_products` SET `prod_category` = '".$db->escape($cat_id)."' WHERE  `product_id` = '".$db->escape($product_id)."'";
Образец существующего запроса к которому надо прикрутить JOIN
Код
    function setCategoryToProduct($product_id, $categories = array()){
        $db = JFactory::getDBO();
        foreach($categories as $cat_id){
            if (!$this->productInCategory($product_id, $cat_id)){
                $ordering = $this->getMaxOrderingInCategory($cat_id)+1;
                $query = "INSERT INTO `#__jshopping_products_to_categories` SET `product_id` = '".$db->escape($product_id)."', `category_id` = '".$db->escape($cat_id)."', `product_ordering` = '".$db->escape($ordering)."'";
                $db->setQuery($query);
                $db->query();
            }
        }
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #1 : 09.08.2014, 19:24:39 »
где то в логике произошел сбой... во-первых, цель конечная какая? во-вторых, какая бы она не была, так это делать не надо :)  ну а в третьих, нет, одним инсертом в две таблицы вставить нельзя.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #2 : 09.08.2014, 19:43:30 »
Ну там то не инсерт нужен, а update в любом случае, иначе все поля будут пусты, кроме prod_category

Хорошо, тогда foreach скопировать внутри функции?

Цель такая чтобы в таблицу с товаром добавлялось ид категории..) Пока сделал копированием value у selecta выбора категории..))) Ну, чтоб в ручную не вводить..)
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #3 : 09.08.2014, 19:51:02 »
Цитировать
Цель такая чтобы в таблицу с товаром добавлялось ид категории
для чего? если он уже хранится в #__jshopping_products_to_categories, для чего его дублировать? тем более если категорий назначено несколько....
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #4 : 09.08.2014, 20:10:05 »
Ахах, хорошо, признаюсь, для того чтобы сделать так как я умею, я уже перепахал весь код, и мне интересно. очень..)

Например, я хочу сделать простой запрос на странице товара - Получить случайный товар из этой же категории, как мне его сделать? Сначала идти #__jshopping_products_to_categories получить случайный id товара из той же категории что и текущая страница товара, а потом, делать запрос уже в #__jshopping_products, ведь только так? т.к. в таблице никаким образом не указана принадлежность к категории...
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #5 : 09.08.2014, 20:14:00 »
Вот тут объединения можно использовать, в отличие от инсерта или апдейта. Синтаксис описан во множестве мест, начните хотя-бы с php.su
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #6 : 09.08.2014, 20:34:20 »
ага, не успел написать, Аркадий опередил :) т.е. JOIN в INSERT вы готовы применять, а в SELECT - нет? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #7 : 10.08.2014, 00:02:46 »
Т.е
Код
query = "SELECT title1 .... JOIN ... WHERE pole='$title1'"
сразу в том же запросе можно использовать полученную переменную?
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: JOIN - INSERT UPDATE и SELECT
« Ответ #8 : 10.08.2014, 04:53:07 »
Да, конечно, иначе какая польза в запросах?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JoomShopping 4.17.2 - > 4.18 update

Автор nevigen

Ответов: 3
Просмотров: 1659
Последний ответ 06.09.2018, 22:20:56
от victorantoniak
Сортировка в категории товаров - как развернуть select

Автор katjuha6

Ответов: 1
Просмотров: 937
Последний ответ 21.05.2016, 13:43:13
от dmitry_stas
Select вместо input

Автор kik84

Ответов: 10
Просмотров: 1376
Последний ответ 07.05.2016, 11:11:37
от dmitry_stas
Заменить Input на Select (radiobutton) в Адресе доставки

Автор Emotion

Ответов: 4
Просмотров: 1188
Последний ответ 21.12.2015, 12:41:28
от Emotion
Данные пользователя берутся из др таблицы. Unknown column 'user_id' in 'where clause' sql=select * F

Автор NIKITA_777

Ответов: 2
Просмотров: 1239
Последний ответ 29.10.2015, 11:27:47
от dmitry_stas