Новости 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 Ответов
  • 2333 Просмотров
*

AlexP750

  • Захожу иногда
  • 189
  • 1 / 0
Всем привет.
Поставил, запустил Chronoforms7 (не могу понять, где посмотреть точный номер версии), скачан и установлен через JED. Joomla 3.9.28
Создал форму, благодаря помощи draff победил ошибку, возникающую при отправке.
После успешной отправки сообщения, пользователь получает такую надпись:
Цитировать
Thanks for being awesome! We have received your message and would like to thank you for writing to us. We will reply by email as soon as possible.
Её, конечно же, хотелось бы перевести. Я воспользовался поиском в Total Commander по слову awesome и нашел файл, в котором это сообщение прописано.
Им оказался файл \administrator\components\com_chronoforms7\chronoforms\behaviors\settings\confirmation_message\confirmation_message_config.php
В котором я дописал нужное мне содержимое, но никакого толка от этого не было:
Код
<?php
/* [member=126442]copyright[/member]:ChronoEngine.com @license:GPLv2 */defined('_JEXEC') or die('Restricted access');
defined("GCORE_SITE") or die;
?>
<div class="field required">
<label><?php el3('Content'); ?></label>
<textarea rows="3" name="Connection[<?php echo $utype; ?>][<?php echo $n; ?>][confirmation_message][content]">
Спасибо за сообщение!
Я постараюсь ответеть на него, как можно быстрее, если того требуют обстоятельства ;-)

Thanks for being so awesome!

We have received your message and would like to thank you for writing to us. We will reply by email as soon as possible.
</textarea>
</div>
Ещё я видел кнопку Translation и всевозможные названия там, но ничего похожего на текст сообщения там не нашёл.
Подскажите, как изменить текст?
Спасибо.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
Похоже что это поле должно быть в конфиге Chronoforms7
там оно и есть в настройках самое нижнее
*

AlexP750

  • Захожу иногда
  • 189
  • 1 / 0
Вот, я  *ОХ-Х-Х* )))))
Спасибо! Я искал в глобальных настройках, но там не нашёл. А это делается в настройках самой формы. Спасибо!  *DRINK*
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Замена сообщения "Mailer Error: You must provide at least one recipient email address."

Автор eldenio

Ответов: 3
Просмотров: 4652
Последний ответ 19.08.2016, 11:52:23
от eldenio
Русификатор (локализация) ChronoForms V4

Автор Djahat

Ответов: 9
Просмотров: 15752
Последний ответ 07.04.2016, 18:30:28
от kayras
На почту приходит два сообщения!

Автор ma3cs

Ответов: 0
Просмотров: 1217
Последний ответ 12.08.2015, 12:23:57
от ma3cs
Joomla 3 + ChronoForms 5. Как сделать, чтобы форма после отправки сообщения не закрывалась

Автор saitodom

Ответов: 0
Просмотров: 2426
Последний ответ 19.11.2014, 10:24:45
от saitodom
Локализация для компонента форм Chronoforms_V5.0.2

Автор aspidy

Ответов: 0
Просмотров: 1388
Последний ответ 29.09.2014, 09:04:17
от aspidy