Как правильно вывести пресет редактора?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 4 марта 2025 в 05:16

Создал пресет и в нем отключил плагины и кнопки,

В опциях виджета, пишу такой код

  1. new fieldHtml('options:text', [
  2. 'title' => 'LANG_CONTENT',
  3. 'options' => [
  4. 'editor' => 'redactor',
  5. 'preset' => 'h1'
  6. ],
  7. ]),

Редактор выводится, но со всеми кнопками и плагинами, которых недолжно быть, что делаю не так, объясните пожалуйста?

#2 4 марта 2025 в 06:35

'editor' это и есть сами редакторы и пресеты основанные на них — github.com/instantsoft/icms2/blob/master/system/fields/html.php#L22

Пробуйте так

  1. new fieldHtml('options:text', [
  2. 'title' => 'LANG_CONTENT',
  3. 'options' => [
  4. 'editor' => 'h1' // Тут или имя пресета или его номер, точно не скажу.
  5. ],
  6. ]),

Если нужны пресеты для разных групп пользователей, то там используется «editor_presets»

#3 4 марта 2025 в 07:40

Попробовал, выходит кракозяблик какой-то😀

Изображение
Сегодня в 22:35
#4 4 марта 2025 в 08:11

Очень интересный вопрос. Правильным решением будет отдельный компонент, в котором для данной опции можно будет выбрать пресет редактора. И уже потом в данной опции использовать id выбранного пресета. Вот почему.

Поле html при выводе своей формы использует редактор, указанный в настройках github.com/instantsoft/icms2/blob/b239faeba9df55b6e05ba3a67c239ac8bcc116b7/system/fields/html.php#L282

Посмотрим, что делает метод getEditorParams github.com/instantsoft/icms2/blob/b239faeba9df55b6e05ba3a67c239ac8bcc116b7/system/controllers/wysiwygs/frontend.php#L16

А он, если передан id пресета, получает его настройки, а если название, то использует переданное имя редактора и ищет, есть ли рядом с editor еще указанное editor_options. Если нет, то использует редактор с опциями по умолчанию.

Вот и получается, если хотите вывести там что-то четко настроенное, у вас два варианта:

1. Где-то дать юзеру выбрать, каким редактором пользоваться в вашем виджете. И это где-то использовать в настройках виджета
2. Передать название редактора и список опций, например так

  1. 'options' => [
  2. 'editor' => 'tinymce',
  3. 'editor_options' => [
  4. 'toolbar' => 'bold italic underline'
  5. ]
  6. ],

и тогда юзер увидит тини с тремя кнопками

Изображение

Подсмотреть все варианты опций можно у настроенного пресета в базе в таблице wysiwygs_presets.

Есть еще третий вариант. При установке виджета самому добавить настроенный пресет в список пресетов сайта пользователя. А затем в форме виджета получать его id по имени созданного пресета, и использовать в поле.

#5 4 марта 2025 в 10:52

Пресет создавал чтобы настройки у редактора убрать😄, но то что вы подсказали, это намного лучше, спасибо!

  1. new fieldHtml('options:text', [
  2. 'title' => 'Текст под заголовком',
  3. 'options' => [
  4. 'editor' => 'tinymce',
  5. 'editor_options' => [
  6. 'toolbar' => 'bold italic underline'
  7. ]
  8. ],
  9. ]),
Изображение

Похожие темы

Похожее в блогах

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.