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

andamurobl

  • Новичок
  • 5
  • 0 / 0
Цена договорная
« : 25.10.2017, 14:37:34 »
Добрый день. Вопрос: могу ли я в шаблоне товара, задать правило, при котором если оператор в графе цена заполняет, например "666", то на сайте вместо 666 отображалось бы "Цена договорная"?

Нашел тему 2015 года с ссылкой на скрин где должно быть решение проблемы, но скрин удален с хоста. Может кто-нибудь помочь  ?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Цена договорная
« Ответ #1 : 25.10.2017, 14:40:22 »
мне больше нравится когда она меньше 0
Цитировать
if ($this->product->getPriceCalculate() < 0) {
    echo 'Цена договорная';
} else {
    formatprice($this->product->getPriceCalculate());
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

andamurobl

  • Новичок
  • 5
  • 0 / 0
Re: Цена договорная
« Ответ #2 : 26.10.2017, 14:58:18 »
Спасибо, мне помогло.
Если не ошибаюсь, в вашем коде нехватает  print после else.
Вот что в итоге привело меня к цели:
Код
<?php
 if ($this->product->getPriceCalculate() == 0) {
    echo ' договорная.';
 }else{
    print formatprice($this->product->getPriceCalculate());
 }?>
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Цена договорная
« Ответ #3 : 26.10.2017, 15:08:20 »
ага, верно. писал прямо тут и пропустил. можно вот так
Код
echo $this->product->getPriceCalculate() == 0 ? ' договорная.' : formatprice($this->product->getPriceCalculate());
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #4 : 24.11.2017, 19:01:58 »
добрый день!
подскажите пожалуйста где править данный код (или куда вставлять)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Цена договорная
« Ответ #5 : 24.11.2017, 19:03:40 »
это код для карточки товара
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #6 : 24.11.2017, 19:04:56 »
product_default.php верно?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Цена договорная
« Ответ #7 : 24.11.2017, 19:05:05 »
ага, обычно да
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #8 : 24.11.2017, 19:06:08 »
спасибо +
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #9 : 24.11.2017, 21:53:04 »
а где править код что бы "договорная цена" была на странице категории
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Цена договорная
« Ответ #10 : 24.11.2017, 21:54:53 »
список файлов шаблона в ФАКе данного раздела.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #11 : 26.11.2017, 12:01:51 »
ок, спасибо
нашел файл product.php по адресу ..\templates\***\html\com_jshopping\list_products
в нем код отвечающий за вывод цены в категории
Код
<?php if ($product->_display_price){?>
            <div class = "jshop_price">
                <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?>
                <?php if ($product->show_price_from) print _JSHOP_FROM." ";?>
                <span><?php print formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span>
            </div>
        <?php }?>
только вставка кода для страницы товара ,приведенная выше, не помогает
подскажите пожалуйста что изменить, поняв это, по идее смогу изменить данный параметр в модулях и т.д.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Цена договорная
« Ответ #12 : 26.11.2017, 15:30:18 »
без $this
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #13 : 26.11.2017, 17:02:07 »
без $this
замена или удаление ?
здесь
Код
<?php
 if ($this->product->getPriceCalculate() == 0) {
    echo ' договорная.';
 }else{
    print formatprice($this->product->getPriceCalculate());
 }?>
или здесь
Код
<?php if ($product->_display_price){?>
            <div class = "jshop_price">
                <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?>
                <?php if ($product->show_price_from) print _JSHOP_FROM." ";?>
                <span><?php print formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span>
            </div>
        <?php }?>
с мат частью очень слабо,метод тыка не помогает ;D
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Цена договорная
« Ответ #14 : 26.11.2017, 17:10:39 »
метод тыка не нужен
чистая логика.
посмотриет на код который дл якарточки и на код который для списка.
наприме на вывод цен ыоткуда она берется ? всписке это не зис, а продакт
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #15 : 26.11.2017, 17:22:41 »
так?
Код
<?php
 if ($product->getPriceCalculate() == 0) {
    echo ' договорная.';
 }else{
    print formatprice($product->getPriceCalculate());
 }?>
я пробовал - Fatal error *suicide*
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Цена договорная
« Ответ #16 : 26.11.2017, 18:16:16 »
ну $product->product_price же :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Цена договорная
« Ответ #17 : 26.11.2017, 19:27:00 »
http://prntscr.com/hfhlre старая игра про отличия
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #18 : 26.11.2017, 21:34:17 »
Код
<?php if ($product->product_price() == 0) { echo ' договорная.';}else{ print formatprice($product->product_price());}?>
 
если я правильно понял код должен выглядеть так? :D
*

dmitry_stas

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

Fenist

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Цена договорная
« Ответ #20 : 26.11.2017, 22:24:24 »
Код
<div class = "jshop_price">
                <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?>
                <?php if ($product->show_price_from) print _JSHOP_FROM." ";?>
                <span><?php echo $product->product_price == 0 ? ' договорная.' : formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span>
            </div>
Все работает
Большое спасибо за профессионализм и терпение yes!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться