Добро пожаловать в переполнение стека!
У вас есть доступ к базе кода? Тогда загрузка и включение этого модуля, вероятно, будет большим помощником: CKEditor Accordion
Добавляет новую кнопку в встроенный CKEditor Drupal 8, который позволяет
Пользователь может создавать и отображать любой тип контента в формате аккордеона.
Я попытался применить стандарты кодирования к вашим фрагментам кода и понял, что в обоих из них отсутствует закрывающий </div>
. Это специально?
Используете ли вы модуль Big Pipe для кэширования, и эта проблема исчезает при его отключении? (Однажды я испытал нечто подобное, как объяснено здесь https://www.drupal.org/project/drupal/issues/2738685,, что подводит меня к следующему вопросу.)
Какую версию Drupal вы используете?
И последнее, но не менее важное: я хочу упомянуть, что все остальные ответы здесь просто пытаются вылечить симптомы, когда основной проблемой является JS, который добавляет дополнительный <div>
в первую очередь. Но еще большая «проблема» в том, что вы пытаетесь сделать это в поле редактора. Который должен использоваться для контента, а не для функциональности.
Существует ряд проблем, которые возникают при попытке построить функции в текстовых полях. Нет подсветки кода, нет автоматического отступа, нет завершения кода. После того, как он закончен, он может быть легко сломан кем-то без ваших навыков Нет отслеживания версий, нет поиска и замены в базе кода, трудно развернуть в разных средах с разными базами данных.
Короче: не делай этого. Попробуйте упомянутый модуль. Или добавьте другой тип контента (возможно, «Элемент аккордеона», а затем отобразите эти узлы в Аккордеоне видов (функциональность аккордеона, примененного к представлению), а затем поместите представление с кратким кодом, предоставленным Вставить представление в любом месте содержимого, которое вы хотите.