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

AntonComp

  • Осваиваюсь на форуме
  • 39
  • 5 / 0
Второй адрес достаки
« : 16.04.2010, 23:27:21 »
VirtueMart 1.1.4 stable
Joomla 1.5.15

Добавляю второй адрес доставки - он добавляется:



Но при оформлении заказа - не выводится выбор второго адреса:



DEBUG CENTER:
Цитировать
Version: VirtueMart 1.1.4 stable [Gentle Samui]
16/10/2009 20:00 GMT
RunTime:    0.0336530208588 sec.     Current Page:    checkout.index
Queries executed:    0       Last Page:    checkout.index
UID:    77     Return To Page:    
Username:    ant     Function:    
Perms:    shopper     Command (Result):    (True)  
$func_perms:    ./.    $ps_vendor_id:    1  
 
$dir_perms:    Ok     global Log:    0 logged message(s).  
 
Joomla! Session ID:    ad2a97008b10fa92c81b7f82fd558a6e
VirtueMart Session ID:    ad2a97008b10fa92c81b7f82fd558a6e  
$cart:    $cart[0]:ID[34]->Qty:[1]
$auth:    Array ( [show_prices] => 1 [user_id] => 77 [username] => ant [perms] => shopper [first_name] => Антон [last_name] => [shopper_group_id] => 5 [shopper_group_discount] => 0.00 [show_price_including_tax] => 1 [default_shopper_group] => 1 [is_registered_customer] => 1 [country] => US [zip] => 129083 )

Подскажите, пожалуйста, где копать ?

[вложение удалено Администратором]
« Последнее редактирование: 16.04.2010, 23:30:30 от AntonComp »
*

AntonComp

  • Осваиваюсь на форуме
  • 39
  • 5 / 0
Re: Второй адрес достаки
« Ответ #1 : 16.04.2010, 23:56:16 »
Вопрос снимается - решил проблему.

http://joomlaforum.ru/index.php/topic,67742.0.html

Может кому-то поможет (в посте - ссылка выше - это сказано, но сразу не обратил внимание):

надо закомментировать в файле: administrator/components/com_virtuemart/classes/ps_checkout.php

не 2,  а 4 строки:

Цитировать
//$q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code) ";
//$q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";

И ниже:

Цитировать
//$q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code OR i.country=c.country_2_code) ";
//$q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";

Заработало :)
« Последнее редактирование: 17.04.2010, 00:01:11 от AntonComp »
*

alexritm83

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Re: Второй адрес достаки
« Ответ #2 : 05.09.2010, 19:44:30 »
спасибо, товарищи! it really workz!
*

artMelnikov

  • Захожу иногда
  • 57
  • 3 / 0
Re: Второй адрес достаки
« Ответ #3 : 29.07.2011, 16:15:43 »
надо закомментировать не 2,  а 4 строки:
Круто! Спасибо большое. Работает! Ты единственный, кто доходчиво объяснил, что надо именно 4 строки закомментить. В других темах про 1 или 2 строки говорят, делал, не помогало. А то бился бился в пустую.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Адрес доставки на странице подтверждения заказа

Автор sa1981

Ответов: 21
Просмотров: 2878
Последний ответ 15.05.2013, 01:29:26
от artlux
Пропадает адрес

Автор Dimir

Ответов: 10
Просмотров: 2097
Последний ответ 11.03.2013, 00:25:53
от robert
На адрес администратора не приходят уведомления о заказах

Автор davidush

Ответов: 0
Просмотров: 1332
Последний ответ 21.02.2013, 17:16:04
от davidush
Клиент меняет свой адрес, но он не отображается в админке

Автор mkt

Ответов: 4
Просмотров: 1723
Последний ответ 21.12.2012, 20:55:23
от mkt
Невозможно сохранить адрес при регистрации

Автор molodoi

Ответов: 7
Просмотров: 2026
Последний ответ 18.11.2012, 00:13:35
от molodoi