Описание на сайте вставленное из Word имеет много мусора и кривые стили - как исправить

Вставленные тексты в визуальный редактор на сайте вставляются с другими стилями и не сайте выглядят очень плохо

декабрь 21 , 2017

Контент это большая головная боль для владельцев интернет магазинов. Дело в том что контент (тестовое описание) это очень важный фактор в продвижении сайта и он необходим в большом количестве в магазине. Это как правило описания товаров, описания категорий и другие  информационные статьи, такие как анонсы, обзоры и т.п.

Дело в том что многие авторы создают текст в текстовых редакторах Word, Open Office, Pages или просто копируют из других источников. Особенность визуальных редакторов в том что они при вставке текста смотрят на источник и подтягивают его стили. Проще говоря засоряют текст и добавляют к нему много ненужных тегов и инлайновых стилей. Это в 99% коверкает стили на сайте и выглядит очень плохо. Еще к тому засоряет базу данных ненудным объемом.

Как выход, перед копированием чистить текст от стилей. Это можно сделать примерно так.

  • Создаем контент в Word, Open Office, Pages и т.п.
  • Копируем его в текстовый редактор - таким образом обнуляем стили
  • Копируем его в визуальный редактор на сайте и проставляем маркированные списки, заголовки, выделения и т.п.

После такой чистки у нас будет чистый текст, какой и должен быть.

Но если у Вас уже на 1000 товаров есть описания с лишними стилями, или же некогда заниматься ручной чисткой, можно воспользоваться автоматическим решением. Заключается оно в том, что текст чистится от тегов (кроме разрененных) и от атрибутов в тегах.

Для внедрения автоочистки в товарах нам надо открыть контроллер по адресу catalog/controller/product/product.php и после строки

$data['description'] = ...

вставляем код чистки от мусора:

$data['description'] = strip_tags($data['description'], '<p><quote><b><strong><i><u><strike><em><center><h1><h2><h3><h4><h5><h6><li><ol><ul><br><hr>'); // вырезаем все теги кроме...
$data['description'] =  preg_replace('/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i','<$1$2>', $data['description']); // у всех тегов вырезаем атрибуты
После чего увидите на сайте в описании чистый код без лишнего мусора. Это решение можно продублировать и для категорий и для текстовых страниц, для чего угодно.