TYPO3 RTE — разрешенные классы в TSconfig не имеют никакого эффекта

Я использую TYPO v12.4. На определенной странице моего веб-сайта, когда я редактирую поле «Page TSconfig» всего одной строкой:

RTE.default.proc.allowedClasses := addToList(custom, rowmax25, btn, btn-sm)

Но это не имеет никакого эффекта: когда я добавляю класс (например: <p class = "custom">) и сохраняю, атрибут класса всегда удаляется из абзаца. Я не понимаю, что я делаю не так.

Моя конфигурация кажется активной на странице:

Я что-то упускаю? Я прочитал документацию, но не могу найти ничего, что могло бы мне помочь в дальнейшем.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для настройки RTE рекомендуется использовать конфигурацию YAML.
https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/Configuration/Reference.html#page-tsconfig

Лучше всего скопировать следующий файл в пакет вашего сайта:
Копия:
вендор/typo3/cms-rte-ckeditor/Configuration/RTE/Default.yaml
Кому:
EXT:your_sitepackage/Configuration/RTE/Default.yaml

А затем добавьте конфигурацию:
EXT: ваш_сайтпакет/ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['default'] = 'EXT:your_sitepackage/Configuration/RTE/Default.yaml';

В файле Default.yaml есть следующий раздел:

editor:
  config:
    contentsCss: 'EXT:your_sitpackage/Resources/Public/Css/rte.css'

    style:
      definitions:
        - { name: "Custom", element: "p", classes: [ 'custom' ] }
        - { name: "Rowmax25", element: "small", classes: [ 'rowmax25' ] }
        - { name: "Btn", element: "span", classes: [ 'btn' ] }

Там вы можете добавить свои собственные классы стилей. А также немного CSS для стилизации текста в RTE.

Для получения дополнительной информации читайте:
https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/Configuration/QuickStart.html#configuration-quickstart

РЕДАКТИРОВАТЬ 1:
Предположим, вы хотите иметь возможность добавить класс в таблицу, как вы описали в своем первом комментарии. Тогда вам просто нужно добавить следующее к определениям стилей:

editor:
  config:
    style:
      definitions:
        - { element: 'table', classes: ['my-custom-class'] }
        

Теперь вы можете добавить class = "my-custom-class" к тегу таблицы. Если имя не добавлено в определение, оно не будет отображаться в раскрывающемся списке стилей.

Обновлено еще раз:
EXT:fluid_styled_content поставляется с анализатором HTML, который отображает классы для таблиц.
EXT:fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.typoscript

Итак, чтобы ваш пользовательский класс отображался в теге table, вы должны добавить следующее в настройки TypoScript:

lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.list = contenttable, my-custom-class

Теперь класс должен отображаться так, как установлено в RTE.

Привет, я не хочу добавлять собственное определение стиля, но я хочу, чтобы участник мог добавлять определенный класс CSS в <table>, если он этого захочет. Я уже прочитал документ, но то, что вы объяснили, полезно для добавления нового стиля в раскрывающийся список стилей, чтобы не допустить удаления класса CSS при сохранении контента?

Paolo Deferre 02.07.2024 11:14

Обновил мой ответ

Mogens 02.07.2024 11:28

Привет @Mogens, это работает! Идеальный. Тем не менее, он сохраняет класс, но когда я смотрю результат во внешнем интерфейсе, класс был заменен другим (например: <table class = "contenttable">). Что это за обработка?

Paolo Deferre 02.07.2024 13:32

Это из-за анализатора HTML EXT:fluid_styled_content. Обновил свой ответ.

Mogens 02.07.2024 14:18

Спасибо за ваше второе обновление. К сожалению, это не работает

Paolo Deferre 02.07.2024 15:04

Извини. Была опечатка в TypoScript. Пропустил stdWrap. Теперь это должно работать. ;-)

Mogens 02.07.2024 16:07

Все еще не работает. Я очистил все кеши, перезагрузил серверную часть, единственный класс во внешнем интерфейсе — «contenttable». Я проверил TSconfig страницы, lib.parseFunc_RTE [...] установлен, но не влияет на внешний интерфейс. Кстати, я ценю помощь!

Paolo Deferre 02.07.2024 17:49

Typoscript не установлен в Page TsConfig. Вам необходимо установить его в настройках TypoScript. EXT:your_sitepackage/Configuration/TypoScript/setup.typoscri‌​pt или, если у вас нет собственного TypoScript, вы также можете установить его в настройках TypoScript шаблона страницы.

Mogens 02.07.2024 18:04

Теперь это работает! Еще раз большое спасибо за вашу помощь.

Paolo Deferre 02.07.2024 18:21

Другие вопросы по теме