Як додати поле (редактора) в модуль щоб воно оброблялось плагінами (наприклад, для виводу іншого модуля )
Щоб добавити власне поле редактора (чи іншого типу) в модуль, добавляємо два параметра в .xml файл модуля. Перший, це кнопки "показати" редактор чи "не показувати", друге - сам редактор:
<field name="show_neweditor" type="radio" layout="joomla.form.field.radio.switcher" label="MOD_MYMODULE_SHOW" default="0" filter="integer" > <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="new_neweditor" filter="raw" type="editor" rows="10" cols="100" default="" showon="show_neweditor:1" label="MOD_MYMODULE_NEWEDITOR" description="" />Тепер в налаштуваннях вашого модуля в адмін панелі з'явилось поле "показати/приховати" редактор і сам редактор відповідно.
Далі в файлі шаблону модуля (за звичай це default.php) після defined('_JEXEC') добавляємо класи, які будемо використовувати (якщо їх там нема):
use Joomla\CMS\Plugin\PluginHelper;use Joomla\CMS\HTML\HTMLHelper;І в потрібному місці виводимо зміст поля:
<?php// Отримуємо сирий текст із параметрів$new_neweditor= $params->get('new_neweditor', '');if ($params->get('show_neweditor', '0') == 1 && !empty($new_neweditor)) :// Імпортуємо групу плагінів 'content'PluginHelper::importPlugin('content');// Обробляємо текст плагінами joomla, через HTMLHelper (це аналог JHtml::_('content.prepare', ...))// Четвертий аргумент — це контекст, можеш вказати назву свого модуля$processed_content = HTMLHelper::_('content.prepare', $new_neweditor, '', 'mod_mymodule.content');?><div class="mod_neweditor_block"> <?php echo $processed_content; ?> </div><?php endif; ?>на що звернути увагу:
- HTMLHelper::_('content.prepare', ...): Це "магічний" метод Joomla. Коли ти його викликаєш, система автоматично знаходить усі увімкнені контент-плагіни, проганяє твій текст крізь них (шукає фігурні дужки {...}) і замінює їх на відповідний контент (модулі, галереї тощо).
- Контекст ('mod_mymodule.content'): Це важливо для деяких плагінів, щоб вони розуміли, звідки прийшов запит. Ти можеш вказати будь-який рядок, зазвичай це назва_компонента.тип.