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

sa1981

  • Захожу иногда
  • 80
  • 0 / 0
У меня тариф доставки всегда равен нулю, как мне избавиться от суммы тарифа доставки на последнем этапе оформления заказа. В месте "Пожалуйста, проверьте введенные данные и подтвердите заказ!" Там идет Адрес:...Тариф доставки:Поста;Тариф Почты России; 0,00Rur (как мне вырезать 0,00Rur)?
Открываю файл components/com_virtuemart/themes/default/templates/checkout/get_final_confirmation.tpl.php
там нахожу код:
Код
echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_INFO_MSG_SHIPPING_METHOD'). ":</strong></td>";
$rate_details = explode( "|", $shipping_rate_id );
echo '<td>';
foreach( $rate_details as $k => $v ) {
// thepisu: old sample data cointaned "&gt;" instead of ">"...
// so we don't have to make safe if "&gt;" is found
if (strpos($v,"&gt;")===false) {
$v = shopMakeHtmlSafe($v);
}
if( $k == 3 ) {
echo $CURRENCY_DISPLAY->getFullValue( $v )."; ";
} elseif( $k > 0 && $k < 4) {
echo $v.'; ';
}
}
echo "</td></tr>";

Путем эксперимента не могу найти сумму где вырезать, подскажите знающие люди, что именно удалить в этом коде.
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Код
echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_INFO_MSG_SHIPPING_METHOD'). ":</strong></td>";
$rate_details = explode( "|", $shipping_rate_id );
echo '<td>';
echo $rate_details[0]."; ".$rate_details[1] ;
echo "</td></tr>";
Веб-разработка: заказ. Только новая разработка.
*

sa1981

  • Захожу иногда
  • 80
  • 0 / 0
Вот этот код есть строки 60-62
Цитировать
echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_INFO_MSG_SHIPPING_METHOD'). ":</strong></td>";
$rate_details = explode( "|", $shipping_rate_id );
echo '<td>';
А вот кода
Цитировать
echo $rate_details[0]."; ".$rate_details[1] ;
echo "</td></tr>";
там нет
Если удалить первую часть которая есть то пишет ошибку
Warning: Invalid argument supplied for foreach() in /home/u2948893/public_html/components/com_virtuemart/themes/default/templates/checkout/get_final_confirmation.tpl.php on line 61
*

fsv

  • Moderator
  • 2781
  • 411 / 2
А вот кода
echo $rate_details[0]."; ".$rate_details[1] ;
echo "</td></tr>";
там нет
Конечно, нет.
Замените весь ваш блок кода из первого сообщения на мой.
Веб-разработка: заказ. Только новая разработка.
*

sa1981

  • Захожу иногда
  • 80
  • 0 / 0
Заменила результат ошибка: Warning: Invalid argument supplied for foreach() in /home/u2948893/public_html/components/com_virtuemart/themes/default/templates/checkout/get_final_confirmation.tpl.php on line 61
Что не так?
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Ошибка аргумента функции foreach, которую вы должны были удалить. Как может быть ошибка того, чего нет?
Покажите измененный код.
Веб-разработка: заказ. Только новая разработка.
*

sa1981

  • Захожу иногда
  • 80
  • 0 / 0
Цитировать
// Print out the Selected Shipping Method
if(!ps_checkout::noShippingMethodNecessary()) {
echo $rate_details[0]."; ".$rate_details[1] ;
echo "</td></tr>";
    {
      // thepisu: old sample data cointaned "&gt;" instead of ">"...
      // so we don't have to make safe if "&gt;" is found
      if (strpos($v,"&gt;")===false) {
         $v = shopMakeHtmlSafe($v);
      }
      if( $k == 3 ) {
         echo $CURRENCY_DISPLAY->getFullValue( $v )."; ";
      } elseif( $k > 0 && $k < 4) {
         echo $v.'; ';
      }
   }

   echo "</td></tr>";
}
Ошибка пропала но и строчка Тариф доставки пропала полностью вместо неё ;, а вопрос был в том что бы удалить не строчку, а последнюю запись в строчке 0,00Rur
« Последнее редактирование: 18.05.2013, 00:20:51 от sa1981 »
*

fsv

  • Moderator
  • 2781
  • 411 / 2
Ошибка пропала но и строчка Тариф доставки пропала полностью вместо неё ;, а вопрос был в том что бы удалить не строчку, а последнюю запись в строчке 0,00Rur
Каша какая-то в коде. Одно на другое заменить не можете?
Цитировать
Замените весь ваш блок кода из первого сообщения на мой.
из "Ответ#1"
с поправкой:
не
echo $rate_details[0]."; ".$rate_details[1] ;
а
echo $rate_details[1]."; ".$rate_details[2] ;
, нулевой элемент этого массива должен быть класс, он вам не нужен.
Веб-разработка: заказ. Только новая разработка.
*

sa1981

  • Захожу иногда
  • 80
  • 0 / 0
Ура всё получилось!
Вам+
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Номер заказа в модуле

Автор sashgera

Ответов: 0
Просмотров: 3385
Последний ответ 28.02.2016, 22:44:30
от sashgera
One Page Checkout (оформление заказа на одной странице) - Скрыть поле по выбору радиобаттон

Автор sashgera

Ответов: 1
Просмотров: 4159
Последний ответ 23.09.2015, 06:02:39
от sashgera
Зависимый селект при оформлении заказа

Автор sashgera

Ответов: 1
Просмотров: 3504
Последний ответ 29.07.2015, 01:01:23
от orsy
Вывод номера заказа на странице сайта после его подтверждения

Автор redsowet

Ответов: 0
Просмотров: 3568
Последний ответ 02.03.2015, 16:49:22
от redsowet
Запретить пользователям редактировать свои данные

Автор Messir

Ответов: 26
Просмотров: 5485
Последний ответ 15.02.2015, 19:20:43
от Messir