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

maddestiny

  • Осваиваюсь на форуме
  • 18
  • 2 / 0
Вообщем есть 5 форм (различных, не важно что за формы), каждая форма в своем табе, и со своей кнопкой отправить. При нажатии отправки одной из форм, отправляются все 5 форм. как обойти?
писи: проверка полей игнорируется и выполняется только на активном табе. (в остальных формах вписываются имена полей, вместо отсутствующих валью)
« Последнее редактирование: 17.06.2011, 08:41:15 от maddestiny »
*

maddestiny

  • Осваиваюсь на форуме
  • 18
  • 2 / 0
Re: Несколько форм на странице
« Ответ #1 : 16.06.2011, 13:30:22 »
Никто не сталкивался с такой задачей или нет идей? Хелп люди)
*

maddestiny

  • Осваиваюсь на форуме
  • 18
  • 2 / 0
Re: Несколько форм на странице
« Ответ #2 : 16.06.2011, 15:03:47 »
у всех форм в акшен прописан event (***?event=submit&Itemid=***) наверное поэтому, но вопрос все так же открыт, что делать (
*

maddestiny

  • Осваиваюсь на форуме
  • 18
  • 2 / 0
Re: Несколько форм на странице
« Ответ #3 : 17.06.2011, 08:40:31 »
Relative URL - Вот настройка которую нужно отключить, конкретно в формах, для того, чтоб кнопка отрабатывала не страницу (итем айди) а конкретную форму.
задача решена, всем спасибо xD
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
RE: Несколько форм на странице
« Ответ #4 : 13.11.2013, 13:15:35 »
Судя по тому, что форум мёртв - нет ответов на задаваемые вопросы. Всё же решусь, ибо не могу решить проблему.
Вдруг произойдёт чудо...
Та же самая ситуация. Только есть 2 формы и они в контейнерах с разными id. Relative URL отключены.
При нажатии на первую форму валидация проходит, но при нажатии на вторую - идёт её редирект:
Код
index.php?option=com_chronoforms&chronoform=Newsletter_main_news&event=submit
форма отображается уже на месте компонента, хотя находилась в левой колонке.
с киданием ошибки:
Цитировать
Вы ввели неверный код!
Если сразу тыкнем другую фому, то всё описанное произойдёт уже с ней.
Могу показать страницу, если кто может помочь с ошибкой.
Не знаю, что делать...
Версия самая свежая, недельной давности
*

eldenio

  • Новичок
  • 6
  • 0 / 0
RE: Несколько форм на странице
« Ответ #5 : 21.08.2016, 02:15:41 »
Попробуй отключить еще добавление ip-адреса в письмо (это в настройках e-mail). Мне помогло.
*

andreytver

  • Захожу иногда
  • 70
  • 1 / 0
RE: Несколько форм на странице
« Ответ #6 : 05.02.2019, 13:03:48 »
Relative URL - Вот настройка которую нужно отключить, конкретно в формах, для того, чтоб кнопка отрабатывала не страницу (итем айди) а конкретную форму.
задача решена, всем спасибо xD

Спасибо, мне помогло. Только дополню, что нужно включить advanced в настройках основных, а не simple, тогда на вкладке setup можно будет нажать в настройки блока HTML и выставить данное значение Relative URL -No
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

url материала на email (ChronoForms) [Решено]

Автор Konstantinl

Ответов: 20
Просмотров: 12164
Последний ответ 12.08.2022, 03:00:20
от jesus
Дублироваение контента на странице

Автор strange76

Ответов: 0
Просмотров: 2520
Последний ответ 01.08.2019, 12:26:47
от strange76
[Решено] ChronoForms бесплатен? - после установки просит Validation key

Автор kefla

Ответов: 13
Просмотров: 19279
Последний ответ 25.07.2018, 20:32:36
от MeTaNAlex
Компонент построения форм для 1.5 - ChronoForms

Автор de vovan

Ответов: 89
Просмотров: 75936
Последний ответ 26.10.2017, 19:01:42
от bybus
ChronoForms 5 на одной странице стоят 2 формы с включенным AJAX. Вторая форма не работает

Автор Shad-777

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