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

Harper

  • Захожу иногда
  • 82
  • 4 / 0
Сообщение о добавлении
« : 17.08.2013, 13:12:21 »
Как сделать в JoomShopping так, что бы при нажатии на кнопку купить, всплывало сообщение о том что товар добавлен (например как в Virtuemart)?
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Re: Сообщение о добавлении
« Ответ #1 : 17.08.2013, 14:43:05 »
поищите на JED плагин - системные сообщения в модальном окне
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Сообщение о добавлении
« Ответ #2 : 17.08.2013, 15:54:51 »
В Joomla версии >3 разработчикам возможно на уровне шаблона в файле /templates/имя шаблона/html/message.php переопределять вывод системных сообщений. Тогда вывод системных сообщений может занять несколько строк вставлять в шаблон(Вообще данные фишки я вставляю в один файл js примерный код которого http://joomlaforum.ru/index.php/topic,101107.msg1354537.html#msg1354537)
Код: php-brief
JFactory::getDocument()->addScriptDeclaration("
jQuery(document).ready(function(){
if (jQuery('#system-message-container .alert').length) jQuery('#message').modal();
});
");
Файл message.php под катом пример
Спойлер
[свернуть]
*

Harper

  • Захожу иногда
  • 82
  • 4 / 0
Re: Сообщение о добавлении
« Ответ #3 : 17.08.2013, 16:34:37 »
Модальность то понятно как сделать. Тут суть в том, что вообще никакого сообщения не выводится при добавлении товара в корзину. Как сделать что бы сообщение вообще появлялось?
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Re: Сообщение о добавлении
« Ответ #4 : 17.08.2013, 16:49:42 »
<jdoc:include type="message" /> значит нет в шаблоне, добавьте
*

Harper

  • Захожу иногда
  • 82
  • 4 / 0
Re: Сообщение о добавлении
« Ответ #5 : 17.08.2013, 17:05:14 »
Спасибо помогло частично. Действительно не было вывода в шаблоне, но сообщение все равно не выводится при добавлении товара в корзину из категории. Из карты товара все нормально. Как сделать что бы и из категории выводилось?

UPD: Все разобрался, для этого должна страница обновляться, у меня на AJAX стояло добавление из категории.
*

Harper

  • Захожу иногда
  • 82
  • 4 / 0
Re: Сообщение о добавлении
« Ответ #6 : 17.08.2013, 17:21:01 »
И что бы не создавать лишнюю тему, еще один вопрос по этому окну. Можно ли в него как то передать название добавленного товара?
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: Сообщение о добавлении
« Ответ #7 : 23.08.2013, 14:34:47 »
Harper можете пожалуйста подробнее описать как вы сделали чтобы у вас появилось сообщение ?
У меня также нету сообщения при добавлении в корзину, и не выводится сообщение когда пытаешся купить товар у которого есть атрибуты, но не выбрано не одного атрибута. Но выводится сообщение если добавлять в "список пожеланий"

<jdoc:include type="message" /> ета строчка есть в шаблоне
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сообщение о добавлении
« Ответ #8 : 23.08.2013, 18:16:35 »
а шаблон наверное it the shop? или просто корзина их используется?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Harper

  • Захожу иногда
  • 82
  • 4 / 0
Re: Сообщение о добавлении
« Ответ #9 : 25.08.2013, 20:25:14 »
Harper можете пожалуйста подробнее описать как вы сделали чтобы у вас появилось сообщение ?
У меня также нету сообщения при добавлении в корзину, и не выводится сообщение когда пытаешся купить товар у которого есть атрибуты, но не выбрано не одного атрибута. Но выводится сообщение если добавлять в "список пожеланий"

<jdoc:include type="message" /> ета строчка есть в шаблоне

Посмотрите обновляется ли у вас страница при добавлении товара. У меня модуль подключал AJAX скрипт и страница не обновлялась. Посмотрите, может у вас тоже где то модуль или плагин, а может и шаблон использует AJAX.
*

Anton shop

  • Захожу иногда
  • 261
  • 1 / 0
Re: Сообщение о добавлении
« Ответ #10 : 26.08.2013, 23:17:44 »
А как сделать вывод всех системных сообщений в модальном окне с применением вот такой вещи?:
http://graphicriver.net/item/ok-info-alert-and-error-messages/99666?WT.ac=search_thumb&WT.seg_1=search_thumb&WT.z_author=Vonikx
или вот такой http://graphicriver.net/item/adroit-notification-message/2442566?ref=thepixelart

В каком файле и какой именно код нужно заменить или добавить, чтобы сообщения выводились в таком красивом виде, как в примерах выше (по ссылкам).
Там файлы в формате PSD и JPEG. Как их вообще использовать?
*

marble92

  • Новичок
  • 2
  • 0 / 0
Re: Сообщение о добавлении
« Ответ #11 : 25.07.2014, 23:30:53 »
Все можно решить гораздо проще, установив плагин http://extensions.joomla.org/extensions/style-a-design/popups-a-iframes/22670
*

threemonkeys

  • Захожу иногда
  • 171
  • 1 / 0
Re: Сообщение о добавлении
« Ответ #12 : 20.01.2015, 08:49:51 »
В Joomla версии >3 разработчикам возможно на уровне шаблона в файле /templates/имя шаблона/html/message.php переопределять вывод системных сообщений. Тогда вывод системных сообщений может занять несколько строк вставлять в шаблон(Вообще данные фишки я вставляю в один файл js примерный код которого http://joomlaforum.ru/index.php/topic,101107.msg1354537.html#msg1354537)
Код: php-brief
JFactory::getDocument()->addScriptDeclaration("
jQuery(document).ready(function(){
if (jQuery('#system-message-container .alert').length) jQuery('#message').modal();
});
");
Файл message.php под катом пример
Спойлер
[свернуть]
Fedor, скажите пожалуйста, как можно подключить вывод сообщений в модальное окно для корзины, чтобы страница не перегружалась? просто при добавлении товара в корзину, страница перезагружается, тем самым удаляю навигацию по товаров, что крайне не удобно...
*

IceBerg

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: Сообщение о добавлении
« Ответ #13 : 27.10.2015, 14:07:43 »
И что бы не создавать лишнюю тему, еще один вопрос по этому окну. Можно ли в него как то передать название добавленного товара?
Уважаемый, удалось-ли вам в системные сообщения Joomla передать название или ещё какие-то параметры товара?
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
Re: Сообщение о добавлении
« Ответ #14 : 16.06.2024, 09:53:01 »
В Joomla версии >3 разработчикам возможно на уровне шаблона в файле /templates/имя шаблона/html/message.php переопределять вывод системных сообщений. Тогда вывод системных сообщений может занять несколько строк вставлять в шаблон...

Знаю, что тема старая, но, вот оказалась актуальной.
Хотела воспользоваться этим же методом, но, на данный момент для Joomla4 файл message.php изменился.
что делать, если теперь он вот такой:

Код
<?php

/**
 * @package     Joomla.Site
 * @subpackage  Layout
 *
 * [member=126442]copyright[/member]   (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Application\CMSApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;

/* @var $displayData array */
$msgList   = $displayData['msgList'];
$document  = Factory::getDocument();
$msgOutput = '';
$alert     = [
    CMSApplication::MSG_EMERGENCY => 'danger',
    CMSApplication::MSG_ALERT     => 'danger',
    CMSApplication::MSG_CRITICAL  => 'danger',
    CMSApplication::MSG_ERROR     => 'danger',
    CMSApplication::MSG_WARNING   => 'warning',
    CMSApplication::MSG_NOTICE    => 'info',
    CMSApplication::MSG_INFO      => 'info',
    CMSApplication::MSG_DEBUG     => 'info',
    'message'                     => 'success'
];

// Load JavaScript message titles
Text::script('ERROR');
Text::script('MESSAGE');
Text::script('NOTICE');
Text::script('WARNING');

// Load other Javascript message strings
Text::script('JCLOSE');
Text::script('JOK');
Text::script('JOPEN');

// Alerts progressive enhancement
$document->getWebAssetManager()
    ->useStyle('webcomponent.joomla-alert')
    ->useScript('messages');

if (is_array($msgList) && !empty($msgList)) {
    $messages = [];

    foreach ($msgList as $type => $msgs) {
        // JS loaded messages
        $messages[] = [$alert[$type] ?? $type => $msgs];
        // Noscript fallback
        if (!empty($msgs)) {
            $msgOutput .= '<div class="alert alert-' . ($alert[$type] ?? $type). '">';
            foreach ($msgs as $msg) :
                $msgOutput .= $msg;
            endforeach;
            $msgOutput .= '</div>';
        }
    }

    if ($msgOutput !== '') {
        $msgOutput = '<noscript>' . $msgOutput . '</noscript>';
    }

    $document->addScriptOptions('joomla.messages', $messages);
}
?>
<div id="system-message-container" aria-live="polite"><?php echo $msgOutput; ?></div>

...не хватило знаний, чтоб подправить...

p.s.: извините, пожалуйста, я ошиблась разделом - мой вопрос не касается Joomshopping, а всех уведомлений Joomla...

« Последнее редактирование: 16.06.2024, 10:10:16 от tigra-uki »
Слишком сконцентрированное внимание необходимо разбавлять действием.
*

victorantoniak

  • Moderator
  • 1579
  • 185 / 2
  • JoomShopping Team
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка при добавлении фото товара на сайт JoomShopping

Автор Zacken

Ответов: 5
Просмотров: 1679
Последний ответ 16.09.2022, 23:23:52
от victorantoniak
Как убрать системные сообщения о добавлении товара в корзину?

Автор Dolphin4ik_1

Ответов: 3
Просмотров: 718
Последний ответ 05.10.2021, 16:12:44
от draff
Отключить сообщение "товар добавлен в корзину."

Автор Dolphin4ik_1

Ответов: 0
Просмотров: 573
Последний ответ 10.04.2021, 12:00:27
от Dolphin4ik_1
Не перезагружать страницу при добавлении в корзину JoomShopping

Автор Damarkuzz

Ответов: 1
Просмотров: 636
Последний ответ 18.01.2021, 17:00:44
от kit2m2
После регистрации сообщение благодарности

Автор warlocksp

Ответов: 3
Просмотров: 1141
Последний ответ 15.05.2018, 13:13:10
от warlocksp