Описание на сайте вставленное из Word имеет много мусора и кривые стили - как исправить
Вставленные тексты в визуальный редактор на сайте вставляются с другими стилями и не сайте выглядят очень плохо
Контент это большая головная боль для владельцев интернет магазинов. Дело в том что контент (тестовое описание) это очень важный фактор в продвижении сайта и он необходим в большом количестве в магазине. Это как правило описания товаров, описания категорий и другие информационные статьи, такие как анонсы, обзоры и т.п.
Дело в том что многие авторы создают текст в текстовых редакторах 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']); // у всех тегов вырезаем атрибуты