Новости Joomla

Рендер пользовательского поля внутри другого пользовательского поля. Joomla 5.3

Писал ранее о том, как внутри одного пользовательского поля рендерить другое пользовательское поле. Применил для этого возможность Joomla обращаться к методам плагинов напрямую. Процитирую строчку кода из предыдущего поста:

<?php
$joomlaFieldContentPlugn->onContentPrepare('com_content.article', $fakeItem, $app->getParams());

Joomla постепенно переходит от простого указания аргументов для триггеров плагинов к собственным классам событий. Это позволяет не запоминать порядок передачи аргументов класса и использовать человекопонятные методы $event->getContext(), $event->getItem() и т.д. А то в одном месте в Joomla было $article, в другом - $item, в третьем ещё как-то... Порядку больше становится.

Сегодня обновил сайт клиентов до Joomla 5.3. В ней обновили контент-плагин fields и мой финт ушами с вызовом метода плагина отвалился потому, что я передавал в нём 3 аргумента, вместо одного. И для события onContentPrepare это должен быть объект класса ContentPrepareEvent. Как меняется фрагмент кода из предыдущего поста:

<?php
// мы находимся в файле макета поля

use Joomla\CMS\Event\Content\ContentPrepareEvent;
use Joomla\CMS\Factory;

$app = Factory::getApplication();
$fakeItem = new \stdClass();
// Получаем id текущего материала из объекта Input
$fakeItem->id = $app->getInput()->getInt('id');
// {field 29} - это шорт код вставки поля с id 29 - "ассортимент проекта"
// к содержимому поля конкатенируем шорт-код для обработки
$fakeItem->text = $field->value . '{field 29}';
// Получаем объект плагина
$joomlaFieldContentPlugn = $app->bootPLugin('fields', 'content');
// вызываем метод обработки напрямую
// вместо 3-х аргументов теперь указываем один
// это объект класса ContentPrepareEvent
$joomlaFieldContentPlugn->onContentPrepare(new ContentPrepareEvent('onContentPrepare', [
            'context' => 'com_content.article',
            'subject' => $fakeItem,
            'params'  => $app->getParams(),
            'page'    => 0,
        ]));
// выводим оба поля
echo $fakeItem->text;

@webtolkru 

0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 573 Просмотров
*

sesil

  • Захожу иногда
  • 82
  • 0 / 0
  • Учусь!
Всем доброго времени суток, добавил поле /components/com_users/models/forms/registration.xml

Код
		<field
name="type"
type="hidden"
filter="string"
/>

В исходном коде при регистрации появилось поле

Код
<input type="hidden" name="jform[type]" id="jform_type" value="">

Но мне в момент ввода данных необходимо подставить свое значение в value. Как это можно сделать? в xml я не могу запихать php обработку.
*

sesil

  • Захожу иногда
  • 82
  • 0 / 0
  • Учусь!
Есть конечно способ удалить foreach который выводит список полей и выводить их вручную через
Код
        <input type="hidden" name="jform[type]" id="jform_type" value="<?php echo $type_user; ?>" />

Но возможно ли сделать без костылей?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Так нужно что- если одинаковое значение, то добавить дефолт в поле, а если менять на лету, то JavaScript.
МОжно не удалять foreach, а пропустить вывод вашего поля и потом вывести отдельно .
*

NewUsers

  • Живу я здесь
  • 2310
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Но мне в момент ввода данных необходимо подставить свое значение в value. Как это можно сделать? в XML я не могу запихать php обработку.
Если у Вас хватит знаний сделать это через плагин, то это будет куда лучше....
С помощью события onContentPrepareForm изменяете форму как вам надо, далее там же добавляете путь к файлам полей (создаете свой тип поля, и там уже пишите обработку).

Или воспользуйтесь доп. полями
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

sivers

  • Живу я здесь
  • 2571
  • 355 / 0
добавил поле /components/com_users/models/forms/registration.xml
Но возможно ли сделать без костылей?
Правка XML - это уже костыль. К тому же эта правка может быть затерта при обновлении Joomla.
Делайте либо плагином (как советуют выше), либо правкой копии макета в своем шаблоне.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Замена данных сайта на данные поддомена

Автор rezchik

Ответов: 5
Просмотров: 795
Последний ответ 05.02.2024, 11:45:36
от web1
Добавление поля в форму регистрации

Автор Robert24

Ответов: 3
Просмотров: 723
Последний ответ 10.10.2022, 23:35:04
от Robert24
Нет категорий поиска в регистрации J-BusinessDirectory

Автор tochka

Ответов: 0
Просмотров: 442
Последний ответ 28.07.2022, 09:00:11
от tochka
Передать значения полей категории блога материалу

Автор Zelyonkin

Ответов: 4
Просмотров: 543
Последний ответ 24.02.2022, 18:05:47
от Zelyonkin
Как передать значения полей категории в значения полей материала?

Автор Upps_J

Ответов: 4
Просмотров: 521
Последний ответ 27.01.2022, 08:59:25
от Upps_J