Во-первых, sivers, огромное вам спасибо что вообще уделяете время моему вопросу. Мне бы хотелось, чтобы на него обратили внимание больше разработчиков, с учетом того, что моя тема имеет уже больше 100 просмотров, а внимание уделили только вы, но проблема в моем понимании глобальна. Я понимаю, что никто мне тут ничего не должен, но все же хотелось бы привлечь внимание к ней.
Во-вторых, возможно, прикрепив пример модуля, я ввел вас в заблуждение ссылаясь на свой код. Но проблема не связана именно со моим кодом - уверен в этом на 99%.
Вы пишете "
Некуда добавлять" или "
Поле "Табы" с добавлением строк появилось в модуле, но строки пустые" но я не могу по вашим ответам понять, о чем именно вы говорите. Поля не появились в админке или во фронтэнде? Если вы про фронтэнд, то о нем речь и не шла. Проблема видна сразу по админке. Для ее понимания фронтэнд вообще не нужен.
Давайте вообще абстрагируемся от приложенного мной модуля. Я думал что так будет проще людям увидеть проблему, но добился этим противоположного результата.
Вы можете просто внести 2 кусочка кода в ваш mod_custom и убедиться в проблеме. Это займем 3 минуты (реально 3). Ниже я опишу как эту проблему может увидеть каждый на примере модуля mod_custom. Или можно просто скачать мой модуль из первого сообщения.Итак:1. Я устанавливаю чистую версию Joomla 3.9.16 (последняя версия), скачанную с оф сайта на локальный сервер
2. Захожу в папку стандартного всем нам хорошо известного модуля com_custom по адресу modules\mod_custom\ (стандартный модуль вывода произвольного HTML-кода, который устанавливается сразу с самим движком)
3. В файл манифеста этого модуля (modules\mod_custom\mod_custom.xml) в строку 40 (сразу после объявления настроек поля name="prepare_content", можно и в другое место, не важно) вставляю код:
<field
type="subform"
name="test_subform"
formsource="modules/mod_custom/fields.xml"
min="2" max="30"
multiple="true"
groupByFieldset="true"
label="test subform"
description=""
layout="joomla.form.field.subform.repeatable-table"
/>
Это стандартный код из официальной документации Joomla, который добавляет поле type="subform". Этот тип поля предусматривает вывод в админке повторяющихся полей, которые берутся из файла modules/mod_custom/fields.xml. Шаблон отображения повторяющихся полей: Joomla.form.field.subform.repeatable-table. Количество отображаемых по умолчанию полей: min="2".
4. В папке modules/mod_custom/ рядом с манифестом mod_custom.xml создаю файл fields.xml, на который ссылается добавленное мной поле type="subform". Добавляю в этот файл код:
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fieldset name="field_item" label="">
<field
type="editor"
name="test_editor"
label="test editor"
description=""
buttons="true"
filter="JComponentHelper::filterText"
/>
</fieldset>
</form>
Это стандартный код для добавления поля type="editor", - который добавляет textarea с wysiwyg-редактором в качестве повторяющегося поля для type="subform", объявленного ранее в манифесте mod_custom.xml.
5. В админке перехожу в менеджер модулей, и нажимаю на кнопку "Создать". Открывается страница выбора типа модулей. Выбираю модуль "HTML-код". Это тип модуля, в который я добавил 2 поля, описанные выше.
6. Открывается окно редактирования экземпляра модуля "HTML-код". Перехожу на вкладку "Основные параметры" - на эту вкладку мы добавили наше тестовое поле type="subform". Вижу поле "test subform" - наше поле type="subform". Оно отображает 2 поля с wysiwyg-редакторами type="editor" (я специально указал min="2" для type="subform" на шаге №3, чтоб было проще)
7. В поле
второго wysiwyg-редактора нажимаю на кнопку "Изображение"
8. В открывшемся окне медиа-менеджера выбираю изображение (любое), и нажимаю на кнопку "Вставить".
Но! Кнопка вставить не закрывает окно медиа-менеджера, а должна .
Это первая проблема. Закрываю окно медиа-менеджера нажатием на кнопку "Закрыть" или "Х".
9. Смотрю на
первое! поле wysiwyg-редактора, и вижу что картинка, которую я выбрал, добавилась именно туда.
Но работал я с wysiwyg-редактором второго поля, и вставиться она должна была во второе поле, а не в первое . Это проблема номер два.
Не важно, что будет на фротэнде. Проблема уже видна и она на бэке. Сохранив, и выведя данные на фронт, картинка будет в первом поле а не во втором.
Но добавлял я ее во второе поле. Та же проблема будет, если мы бы нажали не на кнопку "Изображение", а, скажем на кнопку добавления модуля "Модуль" - шорткод модуля попадет в первое поле, а мы работаем со вторым. Думаю, и с кнопкой "Материал" будет то же. По сути, не важно с каким из wysiwyg-редакторов мы работаем - 1, 2, 25, все данные всеравно добавляются только в первый wysiwyg-редактор.
Как видите, хоть берем мой модуль, хоть стандартный джумловский, проблема от этого не зависит. Я прав? Или я что-то не учел? Оба типа полей, которые я использую - стандартные и я использую именно тот код, который присутствует в официальной документации. Никаких своих классов, переопределения стилей, скриптов-обработчиков, ничего кроме стандартного кода.
Прокомментируйте, пожалуйста.