Идея этой небольшой заметки появилась в момент переноса сайтов с Joomla 3 на Joomla 4. В старых версиях Joomla визуальный редактор выводился методом getEditor класса JFactory. Однако, в Joomla 4 данный метод был удален и при попытке вызова визуального редактора старым способом мы получаем ошибку:
Call to undefined method Joomla\CMS\Factory::getEditor()
В Joomla 4 для вызова визуального редактора используется следующая конструкция:
JEditor::getInstance('название редактора, который отображаем');
Будет здорово построить код таким образом, чтобы отображался именно тот визуальный редактор, который установлен в настройках пользователя, а если таковой не установлен, то пускай он берется из общих настроек системы.
Поэтому я предлагаю вариант кода, представленный ниже:
use Joomla\CMS\Factory;
use Joomla\Registry\Registry;
$application = Factory::getApplication();
$default_editor = Factory::getConfig()->get('editor'); // Получаем редактор установленный в общих настройках сайта
$user = $application->getIdentity(); // Получаем пользователя
$user->params = new Registry($user->params); // Получаем параметры
$user->editor = $user->params->get('editor', $default_editor); // Получаем из настроек пользователя значение редактора
$wysiwyg = JEditor::getInstance($user->editor); // Получили объект редактора
$textValue = 'Какой то текст, который будет выводиться в редакторе при его отображении на экране';
$wysiwyg->display('text', $textValue, '100%', '400px', '', '', $buttons=true); // Отображаем редактор на сайте
Как видим, при желании можно программно задать определенный редактор, установить ширину, высоту и включить или отключить в редакторе отображение кнопок под редактором
