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

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Доброго всем времени. Вопрос такой, есть в общем модуль вывода рандомно товаров, надо чтобы он выводил товары не дороже ста евро, как бы это сделать, кто сталкивался?

Код
<?php 
defined( '_JEXEC' ) or die();
?>

<?php
$i = 0;
foreach($last_prod as $curr){
if (($i % 3 ==0) && ($i != 0)) { } ?>

<?php
$db = JFactory::getDBO();
$query = "SELECT * FROM #__menu WHERE menutype = 'left-menu-". $lng ."' AND link like 'index.php?option=com_jshopping&controller=category&task=view&category_id=". $category->category_id ."%'";
$db->setQuery($query);
$rez = $db->loadObject();
$str = str_replace("/home", "", $category->category_link);
?>

<div class="categ_head">
<div class="left_c">
<span>
<a href="<?php print $curr->product_link?>"><?php print $curr->name?></a>
</span>
</div>
<div class="right_c"><?php print formatprice($curr->product_price);?></div>
</div>
<div class="cartbtn">

<a href="/index.php/cart/add.html?category_id=<?php print $curr->category_id?>&product_id=<?php print $curr->product_id?>"><?php echo JTEXT::_(ADDTOCART); ?></a>
<a href="<?php print $curr->product_link?>">
<img class="jshop_img" style="height:217px;width:366px;" src="<?php print $jshopConfig->image_product_live_path?>/<?php if ($curr->product_thumb_image) print $curr->product_thumb_image; else print $noimage?>" alt="" />
</a>

</div>

<?php $i++; } ?>
*

denben777

  • Захожу иногда
  • 157
  • 78 / 1
Попробуйте добавить:

foreach($last_prod as $curr){
if ($curr->product_price < 101) {

...
<?php }?>
<?php $i++; }?>
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
...
Ограничение вписалось но, сейчас получается что если товар выше нужного потолка то модуль ничего не выводит, выводит только если товар стоит меньше назначенной цены. Незадача.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
в модуле в СКЛ запросе надо добавить where ячейкацены<101
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
в модуле в СКЛ запросе надо добавить where ячейкацены<101
Что-то я туплю. Не могли бы вы уточнить? Цена находится в _jshopping_products
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
xxxxx_jshopping_products.product_price

но это цена дефолта.
если присутствуют атрибуты иих надо учитывать... то без бубна и ..... не обойтись будет.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Да фиг с ними атрибутами, я не могу правильно составить запрос  ;D
Иду курить мускул
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
В общем можно так:
Код
<?php 
$db = JFactory::getDBO();
[b]$query = "SELECT * FROM #__jshopping_products WHERE product_price BETWEEN 1 AND 101 ";[/b]
$db->setQuery($query);
$rez = $db->loadObject();
$str = str_replace("/home", "", $category->category_link);
?>

Теперь осталось разобраться как сделать чтобы он учитывал данный запрос %)
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Господа, помогите ктонить, мозг кипит %)
Модуль под третью линейку, хочу сделать вывод до определенной цены, все никак %) Может кто поможет или скинет готовое решение?

http://rghost.net/private/48817292/328e7d9650c7c599aecdd05a4c22d2bd
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
если товар выше нужного потолка то модуль ничего не выводит, выводит только если товар стоит меньше назначенной цены.
Мне не очень понятно, чего вы хотите.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Вывод товаров до опредененной цены
« Ответ #10 : 18.09.2013, 14:49:33 »
Мне не очень понятно, чего вы хотите.
Я хочу чтобы сей модуль выводил из определенной категории рандомно товар стоимость которого не превышает 100$.
 Из определенной категории есть, рандомно есть, остался последний пункт.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вывод товаров до опредененной цены
« Ответ #11 : 18.09.2013, 14:52:49 »
Непонятно другое: вам подсказали, но вы писали
Ограничение вписалось но, сейчас получается что если товар выше нужного потолка то модуль ничего не выводит, выводит только если товар стоит меньше назначенной цены. Незадача.
Раве это не то, чего хотели?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Вывод товаров до опредененной цены
« Ответ #12 : 18.09.2013, 14:58:14 »
Непонятно другое: вам подсказали, но вы писалиРаве это не то, чего хотели?

Должно всегда рандомно что-то выводиться, а сейчас получается товар из бд тянется и средствами PHP проверяется цена, если цена из бд вытянулась больше чем нам надо то товар не показывается, следовательно, надо сделать чтобы сразу вытягивалось из бд до нужного ограничения.
Во завернул
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вывод товаров до опредененной цены
« Ответ #13 : 18.09.2013, 15:26:12 »
Все равно не понял. Скрипт проверяют каждый товар на предмет цены, если цена меньше 101, то показывает. Если ни один товар не соответствует критерию (цена < 101), то показывать нечего. А вы что хотите?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Вывод товаров до опредененной цены
« Ответ #14 : 18.09.2013, 16:31:40 »
та вопрос чтобы их рендомно выбирать а не показывать

просто рендомно может выбрать 5 товаров.
а с ценой ниже 100 не будет ни одного :)
и модуль будет пустым :)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Вывод товаров до опредененной цены
« Ответ #15 : 18.09.2013, 16:45:22 »
Сложно  ;Drobert , в общем надо чтобы он изначально из базы вытягивал по критерию "цена" < 100$. Надо чтобы он всегда выводил один товар который стоит меньше 100$. Почитайте ветку сверху, товарищ denben777 предложил PHP проверку цены но уже с вытянутым из бд товаром, и тут получается что если товар стоит больше 100$ то он тупо не показывается, а мне надо чтобы всегда был ккойнить товар(благо дешевле 100$ товаров много).
 Товарищ nevigen очень верно высказал что надо в скл запрос сунуть утверждение мол вытягивать только товар до 100$, но как это реализовать с конкретным примером не сказал, а мне знаний в мускуле не хватают.
 Помогите господа, с меня пиво  *DRINK*
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вывод товаров до опредененной цены
« Ответ #16 : 19.09.2013, 00:42:34 »
OMG, неужели так трудно написать: модуль рандомно выбирает 5 товаров, но я хочу, чтобы эти 5 товаров (или хотя бы часть из них) стоили менее 100$? Я же отродясь не видал ваш модуль.
Как я понял, вы выложили код шаблона. Смотрите, где формируются $last_prod и добавьте
Код
 WHERE product_price < 101
Если не хотите ломать ядро, то напишите свой запрос
Код
$db = JFactory::getDBO();
$query = "SELECT * FROM #__jshopping_products WHERE product_price < 101 LIMIT 5 ORDER BY product_id";
$db->setQuery($query);
$last_prod=$db->loadObjectList();
Примерно так, не проверял.
« Последнее редактирование: 19.09.2013, 01:07:44 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Вывод товаров до опредененной цены
« Ответ #17 : 19.09.2013, 11:37:19 »
Вроде тут формируется запрос, буду мучить:
Код
   $product = JTable::getInstance('product', 'jshop');
    $cat_str = $params->get('catids',NULL);
    if (is_array($cat_str)) {    
        $cat_arr = array();
        foreach($cat_str as $key=>$curr){
           if (intval($curr)) $cat_arr[$key] = intval($curr);
        }  
    } else {
        $cat_arr = array();
        if (intval($cat_str)) $cat_arr[] = intval($cat_str);
    }
    $last_prod = $product->getRandProducts($params->get('count_products', 5), $cat_arr);  
    foreach($last_prod as $key=>$value){
        $last_prod[$key]->product_link = SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$value->category_id.'&product_id='.$value->product_id, 1);
    }

По второму попытался но:
Код
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY product_price' at line 1 SQL=SELECT * FROM cnfsa_jshopping_products WHERE product_price < 1001 LIMIT 5 ORDER BY product_price
Убрал ORDER BY так он выводит одинаковые товары из одной категории.
У меня на главной выходят шесть модулей которые выводят рандомно один товар из каждой категории.
Господа, помогите за денежку, понимаю что ваше время деньги и тратить его никто не хочет на новичков  ^-^

Код
$db = JFactory::getDBO();
$query = "SELECT * FROM #__jshopping_products WHERE product_price < 101 LIMIT 5 ORDER BY product_id";
$db->setQuery($query);
$last_prod=$db->loadObjectList();
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вывод товаров до опредененной цены
« Ответ #18 : 20.09.2013, 00:12:07 »
Нет, не там и не то. Смотрите функцию getRandProducts. Но вам лучше не трогать код, если не понимаете, что делаете.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

admiral

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Вывод товаров до опредененной цены
« Ответ #19 : 20.09.2013, 04:35:59 »
Ясно, спасибо  ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 25
Просмотров: 35706
Последний ответ 23.09.2025, 11:22:23
от Alex_gs
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 2
Просмотров: 2045
Последний ответ 04.07.2025, 10:30:36
от sergeytolkachyov
[Решено] Сбросить счётчик ID товаров JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 1355
Последний ответ 13.02.2025, 00:11:20
от goga_pgasovav
Плагин обновления цен и остатков товаров JoomShopping из CSV

Автор sergeytolkachyov

Ответов: 0
Просмотров: 1533
Последний ответ 24.12.2024, 14:50:42
от sergeytolkachyov
JoomShopping, вывод всех категории к которым принадлежит товар

Автор Valent777

Ответов: 12
Просмотров: 2467
Последний ответ 01.11.2024, 14:57:28
от kit2m2