Идея этой небольшой заметки появилась в момент переноса сайтов с 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); // Отображаем редактор на сайте
Как видим, при желании можно программно задать определенный редактор, установить ширину, высоту и включить или отключить в редакторе отображение кнопок под редактором