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

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Условие вывода доставки
« : 05.06.2014, 15:54:23 »
Здравствуйте! Помогите пожалуйста.
Пытаюсь сделать, чтобы доставка была видна в зависимости от кода  товара. Пытаюсь назначать display none по условию:
Код
if ($prod['ean']=2){echo '<style type="text/css">#shipping_met_1 {
  display: none;
}
#shipping_met_7 {
  display: none;
}
#shipping_met_8 {
  display: none;
}
</style>';}
if ($prod['ean']=1){echo '<style type="text/css">#shipping_met_4 {
  display: none;
}
#shipping_met_5 {
  display: none;
}
#shipping_met_6 {
  display: none;
}
</style>';}?>
Этот код пытаюсь вызывать в components\com_jshopping\templates\default\cart\checkout.php
Для этого я добавила в components\com_jshopping\templates\default\checkout\shippings
строка 13 для tr добавила id  id="shipping_met_<?php print $shipping->sh_pr_method_id?>"
Код
<?php foreach($this->shipping_methods as $shipping){?>
  <tr id="shipping_met_<?php print $shipping->sh_pr_method_id?>">
    <td style = "padding-top:5px; padding-bottom:5px">
      <input type = "radio" name = "sh_pr_method_id" id = "shipping_method_<?php print $shipping->sh_pr_method_id?>" value="<?php print $shipping->sh_pr_method_id ?>" <?php if ($shipping->sh_pr_method_id==$this->active_shipping){ ?>checked = "checked"<?php } ?> />

В итоге почему-то не срабатывают условия, то есть стили выводятся сразу все. Помогите разобраться, что я делаю не так.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Условие вывода доставки
« Ответ #1 : 05.06.2014, 22:39:08 »
у вас ошибка в условиях php.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Условие вывода доставки
« Ответ #2 : 06.06.2014, 03:10:49 »
у вас ошибка в условиях php.
Спасибо, что ответили. Я уже может не вижу очевидных вещей, но переделка кода в
Код
if ($prod['ean']=='2'){echo '<style type="text/css">#shipping_met_1 {
  display: none;
}
#shipping_met_7 {
  display: none;
}
#shipping_met_8 {
  display: none;
}
</style>';}
else {echo '<style type="text/css">#shipping_met_4 {
  display: none;
}
#shipping_met_5 {
  display: none;
}
#shipping_met_6 {
  display: none;
}
</style>';}?>
выдала такой же результат
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Условие вывода доставки
« Ответ #3 : 06.06.2014, 08:06:23 »
какой такой же? разве опять вывелись все стили? результат не такой же.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Условие вывода доставки
« Ответ #4 : 06.06.2014, 12:47:52 »
какой такой же? разве опять вывелись все стили? результат не такой же.
У меня почему-то вообще стили не выводятся при таком написании условий((вот мой код(экспериментальный):
Код
<?php if ($prod['ean']=='3'){echo '<style type="text/css">#shipping_met_2 {
  display: none;
}

</style>';
}
else {echo 'привет';
};

?>
В итоге он вообще не выводится, его нет в коде страницы.
ссылка на скриншот с  результатом: выводятся обе доставки и слово привет : http://ipic.su/img/img7/fs/2014-06-06_124456.1402044411.png
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Условие вывода доставки
« Ответ #5 : 06.06.2014, 13:32:05 »
Цитировать
В итоге он вообще не выводится, его нет в коде страницы.
что в общем то очень логично. что по вашему содержит $prod['ean'] ?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Условие вывода доставки
« Ответ #6 : 06.06.2014, 13:49:51 »
что в общем то очень логично. что по вашему содержит $prod['ean'] ?
В components\com_jshopping\templates\default\cart\checkout.php есть строчка
Код
(<?php print $prod['ean']?>)
и она выводит код товара. Поэтому я думала, что $prod['ean'] содержит значение кода товара. Я уже третьи сутки мучаюсь, извините, если не вижу очевидных вещей.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Условие вывода доставки
« Ответ #7 : 06.06.2014, 13:53:36 »
в checkout.php выводит. и в checkout.php содержит. только во-первых, причем тут checkout.php к shipping.php ? а во-вторых, какого из товаров? товаров может же быть несколько.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Условие вывода доставки
« Ответ #8 : 06.06.2014, 14:11:43 »
в checkout.php выводит. и в checkout.php содержит. только во-первых, причем тут checkout.php к shipping.php ? а во-вторых, какого из товаров? товаров может же быть несколько.
Я взяла с этого форума условие, что товар в корзине всегда будет один.
Это я так понимаю ассоциированный массив:
Код
foreach($this->products as $key_id=>$prod)
Я подумала, что раз в url на месте контроллера стоит checkout , то он отвечает за все шаги заказа.
Значит мне нужно вывести ean в shipping.php?
« Последнее редактирование: 06.06.2014, 14:15:50 от Galldryal »
*

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Условие вывода доставки
« Ответ #9 : 06.06.2014, 17:23:40 »
Я так понимаю, что нужно вывести  ean в \components\com_jshopping\controllers checkout.php куда-то, начиная с 434 строки
Код
  function step4(){
это начало этапа доставки. в controllers product.php ean вызывается вот так
Код
$ean = $product->getEan();
. как мне перенести его в \controllers checkout.php ? помогите пожалуйста, совсем запуталась
*

Galldryal

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Условие вывода доставки
« Ответ #10 : 07.06.2014, 22:07:47 »
Я так понимаю, что нужно вывести  ean в \components\com_jshopping\controllers checkout.php
В \components\com_jshopping\controllers checkout.php есть еще $cart, может в ней нужное содержится...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Условие для кол-ва товара больше нуля

Автор kik84

Ответов: 3
Просмотров: 1335
Последний ответ 16.02.2024, 13:33:24
от kit2m2
Есть ли бесплатный модуль вывода товаров для JoomShopping?

Автор Damarkuzz

Ответов: 8
Просмотров: 936
Последний ответ 29.07.2022, 15:43:48
от kit2m2
Отобразить данные из БД на шаге выбора доставки

Автор Dolphin4ik_1

Ответов: 17
Просмотров: 1141
Последний ответ 17.01.2022, 08:59:55
от kit2m2
Условие вывода для поля URL

Автор kik84

Ответов: 3
Просмотров: 656
Последний ответ 09.12.2021, 12:18:34
от draff
Адрес доставки

Автор Влад

Ответов: 3
Просмотров: 5411
Последний ответ 23.10.2021, 19:02:05
от nevigen