Drupal → Создание своего текстового фильтра (оборачиваем таблицы в div)

27.06.2019

Пример фильтра для оборачивания таблиц в 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+
Похожие записи

Комментарии

Игорь Бадалов
18.08.2019, 21:21

Два года не был здесь а ты еще пишешь, красавчик!!! Продолжай, я твой старый фанат.

Добавить комментарий