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

lyusida

  • Осваиваюсь на форуме
  • 12
  • 3 / 0
Здравствуйте! Использую VirtueMart 2.0
Не могу сделать, чтобы при добавлении товаров в корзину через AJAX, обновлялся div с корзиной (там где выводятся количество товаров и суммарная стоимость).
Переменные в этом div'е обновляются, т.е. после нажатия кнопки "Добавить в корзину" без перезагрузки страницы в корзине меняется количество товаров и их стоимость, НО мне нужно чтобы обновлялся сам div, так хочу чтобы у корзины менялась картинка (полная/пустая) (background div'a).
Вот код файла "modules\mod_virtuemart_cart\mod_virtuemart_cart.php"
Код
<?php $hrefcart = JRoute::_("index.php?option=com_virtuemart&view=cart"); 
?>
<div class="vmCartModule <?php echo $params->get('moduleclass_sfx'); ?>" id="vmCartModule" onclick="document.location.href='<?php echo $hrefcart ?>'" style="background: url(templates/template_coffeemag/images/<?php echo $data->cartImage?>);">
<div class="in_cart" style="float: left;text-align: left;">
<?php echo  $data->inCart ?>
</div>
<br style="clear:both" />
<div class="empty_cart" style="text-align: center;">
<?php echo  $data->emptyCart ?>
</div>
<div class="total_products" style="float: right;text-align: right;font-weight: bold;">
<?php echo  $data->totalProductTxt ?>
</div>
<br style="clear:both;" />
<div class="on_summ" style="float: left;text-align: left;"><?php echo  $data->onSumm ?></div>
<br style="clear:both" />
<div class="total" style="float: right;text-align: right;font-weight: bold;">
<?php if ($data->totalProduct) echo  $data->billTotal; ?>
</div>
<br style="clear:both;" />
<br>
<div class="show_cart" style="text-align: center;">
<?php if ($data->totalProduct) echo  $data->cart_show; ?>
</div>
<noscript>
<?php echo JText::_('MOD_VIRTUEMART_CART_AJAX_CART_PLZ_JAVASCRIPT')?>
</noscript>
</div>


Я подозреваю что нужно что-то и куда нужно вставить это что-то в файле "components\com_virtuemart\assets\js\vmprices.js", так как там идет обновление переменных "количество товара" и "суммарная стоимость" после нажатия кнопки "Добавить в корзину".
Код
$.fn.productUpdate = function() {
mod = $(this);
$.getJSON(vmSiteurl+"index.php?option=com_virtuemart&nosef=1&view=cart&task=viewJS&format=json"+vmLang,
function(datas, textStatus) {
if (datas.totalProduct >0) {
mod.find(".vm_cart_products").html("");
$.each(datas.products, function(key, val) {
$("#hiddencontainer .container").clone().appendTo(".vmCartModule .vm_cart_products");
$.each(val, function(key, val) {
if ($("#hiddencontainer .container ."+key)) mod.find(".vm_cart_products ."+key+":last").html(val) ;
});
});
mod.find(".total").html(datas.billTotal);
mod.find(".show_cart").html(datas.cart_show);
mod.find(".total_products").html(datas.totalProductTxt);
mod.find(".in_cart").html(datas.inCart);
mod.find(".on_summ").html(datas.onSumm);
mod.find(".empty_cart").html(datas.emptyCart);
!
}

}
);
}

Вот только не знаю что именно туда вставить и как обновить этот div. После обновления страницы, кстати, картинка меняется нормально.
« Последнее редактирование: 25.04.2012, 21:33:41 от lyusida »
*

DenisCreative

  • Новичок
  • 3
  • 0 / 0
Так и какое же было решение, если не секрет?
*

siteed

  • Новичок
  • 6
  • 0 / 0
судя по всему ,коллега , это превеликая тайна
*

fixbob

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

При выводе списка категорий не выводятся изображения самих категорий

Автор chtec95

Ответов: 3
Просмотров: 2480
Последний ответ 30.09.2022, 17:11:54
от marksetter
Изображения в модуле категорий mod_virtuemart_category

Автор Tref_mast

Ответов: 13
Просмотров: 7730
Последний ответ 04.08.2020, 03:05:04
от Damarkuzz
Файл дополнительного поля изображения

Автор web3.0

Ответов: 0
Просмотров: 2621
Последний ответ 16.05.2020, 15:59:09
от web3.0
Как убрать показ дополнительного изображения в категории товаров?

Автор ElenaNova

Ответов: 0
Просмотров: 2794
Последний ответ 22.04.2020, 13:13:27
от ElenaNova
Решено: Валютный знак рубля в VirtueMart 2

Автор frostwar

Ответов: 10
Просмотров: 11532
Последний ответ 07.04.2020, 15:50:54
от liberator