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

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Обновление поста 21.11.2014, рецепты ниже не будут работать на J1.5, J1.6, J1.7. Только для последних версий J2.5 и J3.x

По мотивам - Различные условия в шаблонах

Варианты вызова модуля в шаблонах компонента Jshop
как вызвать модуль, например, в шаблоне категории или товара, 3 способа:

1. Вывод конкретного модуля, на примере модуля меток
Спойлер
[свернуть]

2. Вывод любого (всех) модулей, опубликованных в конкретной позиции - bottom
Спойлер
[свернуть]

3. Еще вариант вызова модулей по позиции
Спойлер
[свернуть]

Различные условия в шаблоне Joomla (templates/ВАШ_Шаблон/index.php)

1. Получаем необходимые параметры

Перед составлением условий, рекомендую - отключить SEF, тогда будет видно в URL какие у вас параметры

Код: php
$input = JFactory::getApplication()->input;
$option = $input->getCmd('option', '');
$controller = $input->getCmd('controller', '');

$option определяет компонент, в нашем случае $option это 'com_jshopping'
$controller работает уже внутри компонента - это может быть 'category', 'product', 'cart' и другое; все это можете узнать отключив SEF в настройках и посмотрев чему равен $controller (в адресной строке) на интересующих вас страницах.

Логические операторы
(для совсем новичков, чтоб вы сами могли составлять условия)
[spoiler title=логические операторы]
==  РАВНО
напр. - $controller == 'product' (показать в товарах)
!=  НЕ РАВНО!
напр. - $controller != 'product' (НЕ показывать в товарах)
&&  И
напр. - $controller == 'category' && $controller == 'product' (и в категориях и в товарах)[/spoiler]

Примеры для шаблона Joomla (templates/ВАШ_Шаблон/index.php)

1. Компонент Jshop установлен как главный пункт меню (для красивых ссылок, допустим), но не хотим выводить его на главной
Код: php
<?php if (JURI::current()!= JURI::base()):?> //само условие
<jdoc:include type="component" /> //непосредственно вывод компонента
<?php endif;?>

2. Позицию модуля не показывать в корзине и при оформлении заказа
Код: php
<?php if ( $option == 'com_jshopping' && $controller != 'cart' && $controller != 'checkout' ) : ?>
<jdoc:include type="modules" name="left" />
<?php endif; ?>

3. Показать модуль только в категории, у которой ID=5
Спойлер
[свернуть]

Различные условия в шаблонах компонента Joomshopping

Первым делом переопределяем шаблоны -  всю папку /components/com_jshopping/templates/default/ копируем, переименовываем в com_jshopping и загружаем по адресу /templates/ваш_шаблон/html/*

1. Выводить описание категории только на первой странице (на второй и последующих - описания не будет)
/templates/ваш_шаблон/html/com_jshopping/category/category_default.php
Спойлер
[свернуть]

2. Выводить что угодно в магазине только для авторизованных пользователей
Спойлер
[свернуть]
В основном мануал собран из тех решений что уже встречались на форуме, для вашего удобства - всё в одном месте, довольно подробно, с пояснениями, - поэтому не стесняйтесь - экспериментируйте с условиями :)
« Последнее редактирование: 03.03.2020, 13:37:38 от nevigen »
*

KorPaEv

  • Новичок
  • 2
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #210 : 25.04.2014, 13:23:26 »
Доброго времени суток!
Скачал модуль вывода категорий http://joomlaforum.ru/index.php/topic,292787.new.html#new, установил его через Менеджер расширений, но не через сам магазин, вопрос - как модуль прикрутить теперь к магазину, чтобы в категориях выводилось количество товаров данной категории??
Я новичок в этом, поэтому уперся в стену в этом вопросе.
Я модуль установил, настроил видимость атрибутов в самом модуле через менеджер, а как его к фильтру магазина прикрутить не знаю.
Версия магазина 4, версия Joomla - 3.
*

12mv

  • Давно я тут
  • 548
  • 20 / 0
  • Гульсина
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #211 : 23.06.2014, 18:08:13 »
У меня модуль категорий продублирован 3 раза, т.е. 3 вида меню. Как мне именно 1 вывести исключая остальные 2?
*

ХайВей

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #212 : 08.08.2014, 14:57:13 »
Тема полезная но осталтя вопрос

Вот так мы непоказываем позицию Left в корзине
Код: php
<?php if ( $option == 'com_jshopping' && $controller != 'cart') : ?>
    <jdoc:include type="modules" name="left" />
<?php endif; ?>
Но также она не будет выводится в матерьялах Joomla!
А если убрать
Код: php
$option == 'com_jshopping'
тогда модуль в материалах выводится
Так зачем использовать $option когда хватает одного $controller или я чтото  упускаю?
*

ussr983

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #213 : 14.09.2014, 14:23:21 »
Всем доброе утро. Может вопрос и поднимался, но я не нашел. Подскажите как вставить модуль именно в карточку товара. Уже сутки мучаюсь
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #214 : 14.09.2014, 16:06:28 »
Всем доброе утро. Может вопрос и поднимался, но я не нашел. Подскажите как вставить модуль именно в карточку товара. Уже сутки мучаюсь

Зачем мучаться то?

<?php echo JHTML::_('content.prepare', '{loadposition nazvanie_modulya}');?>
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #215 : 09.11.2014, 17:19:25 »
Код: php
<?php
$input =JFactory::getApplication()->input;
$option = $input->getCmd('option', '');
$controller = $input->getCmd('controller', '');
$catid = $input->getCmd('category_id', '');
if($option =="com_jshopping" && $catid=="8"):?>
Все что надо для категории с ID 8. Вывод модуля тоже сюда
<?php endif; ?>
в модуле можно будет отметить  - везде

Добрый вечер, а не подскажите как в данном коде перечислить нужные категории ?
if($option =="com_jshopping" && $catid=="8, 9, 10"):?>
не сработало :(

Заранее благодарен.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #216 : 09.11.2014, 17:28:45 »
Код
$catid=="8" || $catid=="9" ....
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #217 : 09.11.2014, 17:33:13 »
Код
$catid=="8" || $catid=="9" ....

Большое спасибо
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #218 : 22.11.2014, 16:16:42 »
Требуется скрыть вывод части кода из product.php (com_jshopping/templates/default/list_products) именно в категории с id=14
Код
<?php
$input =JFactory::getApplication()->input;
$category_id = $input->getCmd('category_id', '');
?>

<?php if ( $option == 'com_jshopping' && $controller == 'category' && $category_id == '14') : ?>
блок с кодом
<?php endif; ?>

Подскажите, почему не работает условие - блок с кодом пропадает во всех категориях, и на главной странице, где выводится самые популярные товары.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #219 : 22.11.2014, 17:12:52 »
как объявлены переменные $option и $controller? и вообще, объявлены ли они? вторую  половину прочли, первую забыли?

тут новая переменная - $category_id, поэтому в самом начале ее тоже нужно определить

а у вас не тоже, а только :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kik84

  • Завсегдатай
  • 1350
  • 64 / 4
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #220 : 22.11.2014, 17:21:47 »
как объявлены переменные $option и $controller? и вообще, объявлены ли они? вторую  половину прочли, первую забыли?

а у вас не тоже, а только :)

С помощью решил проблему так:
Код
<?php
$input =JFactory::getApplication()->input;
$option = $input->getCmd('option', '');
$controller = $input->getCmd('controller', '');
$category_id = (int)$input->getCmd('category_id', '');
?>

<?php if ( $option == 'com_jshopping' && $controller == 'category' && $category_id == 14){ ?>
       
<?php }else{ ?>
                блок с кодом
<?php } ?>
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #221 : 02.02.2015, 17:21:06 »
JoomShopping - главная страница. Подскажите, пожалуйста, как выводить модуль (позицию) только на главной? А то все что я делал, выводит модуль и на страницах типа ?start=20 ((

Заранее спасибо!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #222 : 02.02.2015, 18:02:26 »
все что я делал, выводит модуль и на страницах типа ?start=20
а что делали?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #223 : 03.02.2015, 18:09:43 »
Модуль манагер от ноунамбер и вывод модуля только на определенных страниц (заводил топик отдельный http://joomlaforum.ru/index.php/topic,305443.msg1516608.html#msg1516608 - послали сюда)
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #224 : 18.02.2015, 21:48:10 »
Вопрос повис в воздухе... Это невозможно сделать или что?
*

vasy777

  • Новичок
  • 4
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #225 : 09.04.2015, 09:11:40 »
Здравствуйте!
Если кто знает, подскажите пожалуйста.

Делаю шаблон на Joomla! 3.4.1 + JoomShopping + bootstrap 3

В шаблоне Protostar есть условие, если в модуле ничего нет то он не выводится. В моем шаблоне он выглядит следующим образом:
Спойлер
[свернуть]
Спойлер
[свернуть]
Модуль в карточке товара не отображается, но место под него резервируется
Спойлер
[свернуть]

Когда я добавляю, предложеное в этой теме решение
Спойлер
[свернуть]


Спойлер
[свернуть]

То позиция действительно пропадает, и товар подвигается к левому краю, но тогда видимо срабатывает условие
Спойлер
[свернуть]
И теперь отображается позиция с правой стороны.
Спойлер
[свернуть]
Побывал прописывать аналогичное условие для правого модуля, не помогло.

В отображении модуля отмечал на всех позициях/для выбранных позиций не помогло.

Как сделать так чтобы в карточке товара было col-md-12?
*

addrss

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #226 : 24.04.2015, 18:34:57 »
Как убрать вывод боковых модулей на странице Onestepcheckout Pro ?
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #227 : 26.04.2015, 17:16:44 »
Как убрать вывод боковых модулей на странице Onestepcheckout Pro ?
такой страницы нет.
модули привязываются к пунктам меню обычно.

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

vaneni4

  • Новичок
  • 1
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #228 : 14.05.2015, 15:26:32 »
Ребята, что делаю не так?
Надо убрать модуль слайд шоу из товаров, который показывается в категориях.

в index.php шаблона, после
// no direct access
defined... or die... ;

вставил
$option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);


потом в блоке, у меня позиция maintop2-1, вставляю:

<?php if ( $this->countModules('maintop2-1') && $option == 'com_jshopping' && $controller != 'product' ) : ?>
<jdoc:include type="modules" name="maintop2-1" />
<?php endif; ?>


получилось вот так:
Спойлер
[свернуть]

но в категории модуль дублируется и отображается 2 раза, а в товарах он как был, так и есть.
Сайт: http://wikikid.ru/
Что не так делаю?
« Последнее редактирование: 14.05.2015, 15:31:50 от vaneni4 »
*

pepeto

  • Захожу иногда
  • 181
  • 19 / 1
  • E-commerce God
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #229 : 03.06.2015, 18:31:43 »
Может не нашел, может пропустил, но вопрос такой:
Как скрыть модуль, только по определенному id в карточке товара?
Просто есть HTML модуль, который мне не нужен в карточке, но в той же позиции есть еще несколько модулей.
"Если задать мне вопрос, на который я не знаю ответа, я отвечу, что не знаю. Но, поверьте, я знаю как его найти, этот ответ, и я его найду. Разве это не главное?" -Х/Ф "В поисках счастья"
*

pepeto

  • Захожу иногда
  • 181
  • 19 / 1
  • E-commerce God
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #230 : 04.06.2015, 16:13:20 »
Понял, как: в advanced module manager, произвольный php код:
Код
<?php 
$controller = JRequest::getVar('controller', null);
if ( $controller != 'product' && $controller != 'checkout' ) : ?>
модуль
<?php endif; ?>
"Если задать мне вопрос, на который я не знаю ответа, я отвечу, что не знаю. Но, поверьте, я знаю как его найти, этот ответ, и я его найду. Разве это не главное?" -Х/Ф "В поисках счастья"
*

Argawa

  • Захожу иногда
  • 139
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #231 : 28.06.2015, 21:48:05 »
Здравствуйте. очень нужная тема по условиям. Но вот с одной задачей так и не справился, хотя перечитал все посты.

Есть вот такая конструкция

Код
<?php if ($this->countModules('left') && $option == 'com_jshopping' && $controller == 'category' && $controller != 'product' && $controller != 'cart'&& $controller != 'checkout'  ) : ?>
<div id="left">
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<div id="right"><jdoc:include type="component" /></div>
<?php else: ?>
<div id="right" class="full"><jdoc:include type="component" /></div>
<?php endif; ?>

Не получается вывести левую колонку в категориях магазина. Заранее огромное спасибо.
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #232 : 15.07.2015, 11:56:16 »
Здравствуйте! Есть фильтр в сайдбаре сайта "Подбор товаров", на странице товара его нужно скрыть.
Скрываю на уровне модуля - выходит так

Чтобы скрыть на уровне модуля я в месте где выводится список делаю проверку
Код
if ($option == 'com_jshopping' && $controller == 'product') echo "style='display:none;'";
.
А как скрыть полностью блок з заголовком (на уровне шаблона я так понимаю)?
*

CCTRRoman

  • Захожу иногда
  • 121
  • 3 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #233 : 08.10.2015, 11:40:24 »
Всем - Добрый день!
подскажите пожалуйста, как правильно написать код условия в Advanced Module Manager
что бы модуль отображался только в товарах категории ID=1
https://yadi.sk/i/1pBPUyvDjbRrA

где я сделал ошибку?
$input = JFactory::getApplication()->input;
$option = $input->getCmd('option', '');
$controller = $input->getCmd('controller', '');
$category_id = $input->getCmd('category_id', '');
return ( $option == 'com_jshopping' && $controller == 'category' && $category_id == '1' );

[Решено] правильный код - может кому пригодиться:
Спойлер
[свернуть]
« Последнее редактирование: 23.10.2015, 14:22:03 от CCTRRoman »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #234 : 08.10.2015, 17:21:10 »
в категории, или именно в товарах категории?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

CCTRRoman

  • Захожу иногда
  • 121
  • 3 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #235 : 08.10.2015, 19:07:21 »
во всех товарах нужной одной определённой категории
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #236 : 08.10.2015, 19:19:22 »
ну тогда контроллер не category a product
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

CCTRRoman

  • Захожу иногда
  • 121
  • 3 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #237 : 08.10.2015, 19:35:56 »
Большое спасибо, помогло. :-)
*

tkm

  • Захожу иногда
  • 69
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #238 : 30.01.2016, 15:35:34 »
Код: php-brief
<?php
//Усовершенствовал функцию
function showPage($x = array()){
    return array_intersect_assoc($x,  $_REQUEST) == $x;
}
if(!showPage(array('option'=>'com_jshopping', 'controller'=>'product'))):?>
На всех страницах кроме продукта
<?php endif;?>

А как сюда еще добавить пару условий, например cart и wishlist ?
*

oleg8800

  • Захожу иногда
  • 96
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #239 : 16.05.2016, 11:17:17 »
Добрый день. Спасибо за столь нужную тему! Получилось убрать модуля в корзине но место(пустое) под позицию left остаётся, можно это как то исправить?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мы починили поиск для JoomShopping

Автор Dimidrol-Pruper

Ответов: 101
Просмотров: 34793
Последний ответ 24.06.2024, 14:20:58
от kit2m2
Плагин - Вывод значения поля из таблицы продуктов в корзине JoomShopping

Автор draff

Ответов: 3
Просмотров: 2291
Последний ответ 26.02.2024, 07:00:01
от kit2m2
Плагин - Товар на складе или Товар под заказ для JoomShopping [Скачать]

Автор kit2m2

Ответов: 58
Просмотров: 11884
Последний ответ 18.05.2023, 12:59:00
от Akeksandr
[Решено] Комплект товаров JoomShopping - конструктор

Автор vgromov

Ответов: 96
Просмотров: 31651
Последний ответ 14.12.2022, 15:21:24
от kit2m2
Функционал сравнение товаров в JoomShopping

Автор falur

Ответов: 53
Просмотров: 15725
Последний ответ 22.08.2022, 09:54:16
от kit2m2