Новости 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 

Вышел релиз Joomla 5.3.0

Вышел релиз Joomla 5.3.0

Проект Joomla с радостью объявляет о выходе Joomla 5.3 — последней минорной версии в серии Joomla 5.

Этот релиз сосредоточен на продуманных улучшениях, которые совершенствуют работу с CMS. От лучшей организации файлов и журналирования задач до расширенной обработки электронной почты и улучшенной доступности — Joomla 5.3 помогает администраторам и разработчикам работать более эффективно, сохраняя ваш сайт современным, безопасным и готовым к будущему.

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

miko69

  • Новичок
  • 2
  • 0 / 0
template="sj_petshop"; jQuery(function($) { SqueezeBox.initialize({}); initSqueezeBox(); $(document).on('subform-row-add', initSqueezeBox); function initSqueezeBox(event, container) { SqueezeBox.assign($(container || document).find('a.modal').get(), { parse: 'rel' }); } }); window.jModalClose = function () { SqueezeBox.close(); }; // Add extra modal close functionality for tinyMCE-based editors document.onreadystatechange = function () { if (document.readyState == 'interactive' && typeof TinyMCE != 'undefined' && tinyMCE) { if (typeof window.jModalClose_no_tinyMCE === 'undefined') { window.jModalClose_no_tinyMCE = typeof(jModalClose) == 'function' ? jModalClose : false; jModalClose = function () { if (window.jModalClose_no_tinyMCE) window.jModalClose_no_tinyMCE.apply(this, arguments); TinyMCE.activeEditor.windowManager.close(); }; } if (typeof window.SqueezeBoxClose_no_tinyMCE === 'undefined') { if (typeof(SqueezeBox) == 'undefined') SqueezeBox = {}; window.SqueezeBoxClose_no_tinyMCE = typeof(SqueezeBox.close) == 'function' ? SqueezeBox.close : false; SqueezeBox.close = function () { if (window.SqueezeBoxClose_no_tinyMCE) window.SqueezeBoxClose_no_tinyMCE.apply(this, arguments); TinyMCE.activeEditor.windowManager.close(); }; } } };

Не понимаю, что где менять.
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
Re: Обновил Joomla выскочил глюк
« Ответ #1 : 21.08.2021, 19:10:18 »
нечего обновлять
шаблон не адаптирован.
как выйдет обнова шаблона(что на 90% поломает вам вашу структуру) тогда и обновляйтесь
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Re: Обновил Joomla выскочил глюк
« Ответ #2 : 21.08.2021, 22:57:33 »
Пишите шаблоны сами, уже как 7лет проблем с обновлениями не знаю.
*

miko69

  • Новичок
  • 2
  • 0 / 0
Re: Обновил Joomla выскочил глюк
« Ответ #3 : 25.08.2021, 08:05:16 »
Спасибо за исчерпывающие  ответы. Все это очень печально.
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Re: Обновил Joomla выскочил глюк
« Ответ #4 : 17.10.2021, 02:39:12 »
Спасибо за исчерпывающие  ответы. Все это очень печально.
Где посмотреть данный глюк? если актуально конечно..
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Максимальная версия PHP для Joomla 3

Автор Dram

Ответов: 8
Просмотров: 1441
Последний ответ 27.03.2025, 10:40:29
от wishlight
Joomla! 3.9.21 Невозможно создать пункт меню

Автор edvalitto

Ответов: 1
Просмотров: 147
Последний ответ 26.03.2025, 19:26:30
от azm1n
Проблема со входом в панель администратора Joomla 3.x после обновления

Автор danieeljose

Ответов: 2
Просмотров: 332
Последний ответ 24.03.2025, 20:33:02
от R31rus
Обновление Joomla 3.10 до 4

Автор Scaltro

Ответов: 0
Просмотров: 711
Последний ответ 19.09.2024, 18:32:39
от Scaltro
How To Get URLs Of My Joomla Store

Автор jarethdf

Ответов: 1
Просмотров: 725
Последний ответ 22.08.2024, 14:48:44
от sivers