Пример фильтра для оборачивания таблиц в div:
// src/Plugin/Filter/TableWrapperFilter.php
/**
* @Filter(
* id = "table_wrapper_filter",
* title = @Translation("Table wrapper"),
* description = @Translation("Wrap tables to div."),
* type = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE,
* weight = 20
* )
*/
class TableWrapperFilter extends FilterBase {
/**
* {@inheritdoc}
*/
public function process($text, $langcode) {
$result = new FilterProcessResult($text);
if (stristr($text, '<table') !== FALSE) {
$dom = Html::load($text);
$xpath = new \DOMXPath($dom);
foreach ($xpath->query('//table') as $table) {
$table_wrapper = $dom->createElement('div');
$table_wrapper->setAttribute('class', 'table-wrapper');
$table->parentNode->replaceChild($table_wrapper, $table);
$table_wrapper->appendChild($table);
}
$result->setProcessedText(Html::serialize($dom));
}
return $result;
}
}
Написанное актуально для
Drupal 8+
Похожие записи
- Текстовый фильтр, оборачивающий контент ссылок в span
- Текстовый фильтр добавляющий внешним ссылкам атрибут rel=nofollow
- Вставка в CKEditor видео из ВКонтакте и Rutube (расширение модуля CKEditor 5 Media Embed)
- Как из PhpStorm выполнить тест(ы)
- Как работает опция "Aggregation type" в настройках полей Views при включённой агрегации
Комментарии
Два года не был здесь а ты еще пишешь, красавчик!!! Продолжай, я твой старый фанат.
Добавить комментарий