CKeditor добавить по умолчанию class="table-responsive"

Главные вкладки

Аватар пользователя alexbrd alexbrd 25 августа 2018 в 13:45

Есть верстка — в которой тэг

имеет class="table-responsive"
<table class="table-responsive">
        <caption>Tableau de test (Ceci est un tableau de test)</caption>
        <thead>
            <tr>
                <th scope="col"></th>              
                    <th scope="col">reprehenderit</th>
                    <th scope="col">dolor</th>
                    <th scope="col">culpa</th>
......................

Подскажите есть ли способ - в тег таблицы добавлять по умолчанию класс class="table-responsive", но только в добавленные при помощи CKEditor

Лучший ответ

Аватар пользователя ivnish ivnish 25 августа 2018 в 17:30

Можно. Надо писать плагин для CKeditor

Комментарии

Аватар пользователя VasyOK VasyOK 25 августа 2018 в 22:41

А что если немного упростить логику:
Таблицы не
добавленные с помощью CKEditor
а
присутствующие в поле body (возможно определенных типов материалов)

Тогда можно JS скриптом добавить класс этим таблицам.

Аватар пользователя alexbrd alexbrd 26 августа 2018 в 18:30

Кому понадобится вот код:

<?php
/**
 * @file
 * Contains Drupal\tableclass\Plugin\Filter\TableClass
 */

namespace Drupal\tableclass\Plugin\Filter;

use 

Drupal\filter\FilterProcessResult;
use 
Drupal\filter\Plugin\FilterBase;
use 
Drupal\Core\Form\FormStateInterface;
use 
Drupal\Component\Utility\Html;

/**
 * Provides a filter to help celebrate good times!
 *
 * @Filter(
 *   id = "table_class",
 *   title = @Translation("Table Class responsive"),
 *   description = @Translation("Filter to automatically add responsive class for table"),
 *   type = Drupal\filter\Plugin\FilterInterface::TYPE_MARKUP_LANGUAGE,
 * )
 */
class TableClass extends FilterBase {

  

/**
   * {@inheritdoc}
   */
    
public function process($text$langcode) {
        
// Create DOM document.
        
$dom Html::load($text);

        

// Get all UL tags.
        
$lists_query '//table';

        

// Get DOM nodes from XPath query.
        
$xpath = new \DOMXPath($dom);
        
$nodes $xpath->query($lists_query);
        
// Whether we have results.
        
if ($nodes->length 0) {
            
// Iterate over list elements and add our class.
            
foreach ($nodes as $node) {
                
$classes explode(' '$node->getAttribute('class'));
                
$classes[] = 'table-responsive';
                
$node->setAttribute('class'join(' 'array_unique($classes)));
            }
        }

        return new 

FilterProcessResult(Html::serialize($dom));
    }
}
?>