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

AlexP750

  • Захожу иногда
  • 189
  • 1 / 0
Всем привет!
Только поставил, создал первую форму, опубликовал. Но стоит зайти на страницу, где расположена форма, сразу приходит пустое письмо... Явно что-то упустил, но никак не пойму, что... Подскажите, если кто сталкивался...
Собственно, что я сделал:
  • скачал Chronoforms_V6.1.4_Extension.zip и поставл его
  • настроил форму, добавив туда поля Имя, емейл, само сообщение и кнопку Отправить
  • в конце статьи добавил код {chronoforms6}feedback{/chronoforms6}
Насколько я понял, сейчас нет отдельно устанавливаемого плагина, как раньше. Форма видна в материале, но письмо приходит сразу, стоит зайти на страницу с материалом
« Последнее редактирование: 30.05.2020, 11:02:03 от AlexP750 »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Так а что за форма?
Чем создали?
Как выведена?
*

AlexP750

  • Захожу иногда
  • 189
  • 1 / 0
Сорри, я понял, что мало информации изначально дал, поэтому подредактировал вопрос
*

AlexP750

  • Захожу иногда
  • 189
  • 1 / 0
 :laugh: :laugh: :laugh:
Это я над собой ))))
Я отправку емейла разместил в Actions в поле Load, а не Submit. ))))) Сорри, разобрался ))))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как в ChronoForms сделать изменение формы в зависимости от выбора?

Автор sashka17

Ответов: 0
Просмотров: 2342
Последний ответ 08.02.2021, 09:33:52
от sashka17
Ширина всех полей формы и высота поля Text area

Автор AlexP750

Ответов: 0
Просмотров: 2611
Последний ответ 30.05.2020, 11:58:27
от AlexP750
ChronoForms 6 ajax 2 формы

Автор strela.mari

Ответов: 1
Просмотров: 3670
Последний ответ 19.04.2019, 09:22:19
от osinalex88
Предел для добавления полей формы

Автор krigan

Ответов: 2
Просмотров: 2019
Последний ответ 19.09.2017, 22:53:48
от Heartflight
ChronoForms 5 на одной странице стоят 2 формы с включенным AJAX. Вторая форма не работает

Автор Shad-777

Ответов: 1
Просмотров: 2405
Последний ответ 02.12.2016, 01:22:04
от bob chipeska