Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#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 Гость просматривают эту тему.
  • 4 Ответов
  • 1247 Просмотров
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Доброго дня!

Изобретаю динамические поля для своего custom component. Поля создаются в админке.

Сейчас сделал так, что в виде товара создается доп.вкладка куда выводятся все динамические поля с их настройками. Т.е. в модуле товара в функцию getForm вставлена конструкция
Код
$i = 0; // счетчик групп (fieldsets)
        $this->state->set('cake.prop.groupscount',0);
        foreach ($prop->groups as $group) // Перебираем все группы свойств продукта
        {
            $xml_str ='';
            $xml_str .= '<fieldset name="'.$group->alias.'" label="'.$group->title.'">';
            $group_ids = explode(',',$group->set );

            foreach ($group_ids as $group_id) //Перебор id свойств конкретной группы свойств
            {
                $xml_str .= GenerateXMLFieldHelper::getXMLField($prop->props[$group_id]);
            }
            $xml_str .= '</fieldset>';
            //var_dump($prop->props,true);
            $xml = new SimpleXMLElement($xml_str);
            $form->setField($xml);

            $this->state->set('cake.prop.group-'.$i,$group->alias); // Положили в окружение имя группы/fieldset
            $this->state->set('cake.prop.groupscount',$i+1);    // Общий счетчик групп

            $i++;
        }

Следующий шаг прочитать в эти поля значения. Я их получаю в виде массива
и внедряю в в функции getItem
Код
$model_propvalues = JModelLegacy::getInstance( $name = 'Propvalues', $prefix = 'MyCompModel' );  // Взяли модель
            $propvalues = $model_propvalues->getItemsByProductId($item->id); // Получаем значения свойств конкретного продукта

            foreach ($propvalues as $value){
                $f_name = $value->prop_id;
                $f_value = $value->prop_value;
                $item->$f_name = $f_value;
            }

Но значения в форму не присваиваются.

Как сделать так, чтобы поля принимали значения?

П.С.: После успешного вывода пришлось поковыряться с сохранением динамических полей [РЕШЕНО] Сохранение значений полей добавленных динамически элементу
« Последнее редактирование: 11.11.2019, 15:12:20 от platonische »
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
проверил данные в $form(getForm), $item(getItem), $data(loadFormData)
В итоге в $form нет данных о значениях, хотя и в $item и в $data данные(читай значения) для полей есть.

Возможно дело в том что я создал поля после
Код
$form = $this->loadForm( 'com_mycomp.cake', 'cake', array( 'control' => 'jform', 'load_data' => $loadData ) );

Может надо переформировать $form или как-то дополнительно добавить значения?
*

Director.Gq

  • Осваиваюсь на форуме
  • 33
  • 1 / 1
Не знаю то или ни то надеюсь поможет.
Код: php
// Массив или объект с данными.
$data = [ 'field_name' => 'field_value' ];
// Загружаем XML файл.
$form=JForm::getInstance('myform',VMPATH_MY_PLUGIN_VMUPS.DS.'tmpl'.DS.'ru'.DS.'glavpunkt'.DS.'courierAdress.xml');
// Заносим полученные данные в форму.
$form->bind($data);
// rendering Fieldset - a
$viewData =  $form->renderFieldset('feildset_name');

Вы просто Обратите внимание на строчку с bind. $form->bind($data);
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Нашел $form->setValue, переписал функцию getForm на такое
Код
        $i = 0; // счетчик групп (fieldsets)
        $this->state->set('cake.prop.groupscount',0);
       
->     $name_array = array(); //Массив для сбора имен полей добавленных динамически

        foreach ($prop->groups as $group) // Перебираем все группы свойств продукта
        {
            $xml_str ='';
            $xml_str .= '<fieldset name="'.$group->alias.'" label="'.$group->title.'">';
            $group_ids = explode(',',$group->set );

            foreach ($group_ids as $group_id) //Перебор id свойств конкретной группы свойств
            {
                $xml_str .= GenerateXMLFieldHelper::getXMLField($prop->props[$group_id]);
->            $name_array[] = $prop->props[$group_id]->id; //добавили имя поля в массив
            }
            $xml_str .= '</fieldset>';
            //var_dump($prop->props,true);
            $xml = new SimpleXMLElement($xml_str);
            $form->setField($xml);


            $this->state->set('cake.prop.group-'.$i,$group->alias); // Положили в окружение имя группы/fieldset
            $this->state->set('cake.prop.groupscount',$i+1);    // Общий счетчик групп

            $i++;
        }

->     $item = $this->getItem();
         foreach ($name_array as $name)
        {
            if (isset($item->$name))
            {
                $form->setValue($name,null, $item->$name);
            }
        }

Из всего этого не нравится $item = $this->getItem(); т.к. дергает его повторно. Можно ли как-то обойти повторное дергание?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Итак вот результат:
Спойлер
[свернуть]

Если у кого-то есть замечания я бы с удовольствием выслушал. А в целом задача решена.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 1263
Последний ответ 12.02.2021, 11:24:26
от platonische
[РЕШЕНО] onChange в админке на field modal

Автор platonische

Ответов: 1
Просмотров: 618
Последний ответ 30.01.2021, 16:40:45
от platonische
[РЕШЕНО] Сохранение значений полей добавленных динамически элементу

Автор platonische

Ответов: 30
Просмотров: 3424
Последний ответ 10.11.2019, 15:42:33
от platonische
[РЕШЕНО] curl-файл Joomla $model->save($data) подключение модели администратора

Автор platonische

Ответов: 31
Просмотров: 1839
Последний ответ 30.05.2019, 16:10:57
от sivers
[РЕШЕНО] Создать переменные для сессии в админке

Автор platonische

Ответов: 6
Просмотров: 855
Последний ответ 24.04.2019, 16:15:09
от platonische