Минификсация html кода в 1 строку
Доброго! размещаю инструкцию чтобы не потерять, ну и просто если кому понадобится, все же вещь полезная. Позволяет перевести весь код страницы в неудобный для копирования html код.
+ удаляет комментарии <!- ->, пробелы, табуляцию. Это частично отбивает желание копировать ваш сайт, ускоряет немного загрузку. Данное сжатие можно включать и отключать tv полем.
Не ругайтесь если что-то подобное уже лежит на modx.pro, я доработал код и теперь все работает так как мне нужно. Можно было бы добавить данную функцию в компонент minifyx
В итоге получим вот такой вывод html на своем сайте.

1. Создаем TV поле с названием tvMinifyxHtml
— Тип ввода: список (одиночный выбор).
— Возможные варианты: Да==1||Нет==0
— Значение по умолчанию: 1
— Включаем для всех шаблонов на сайте
— Запоминаем id этого tv поля
В итоге вы сможете включать и отключать сжатие для каждого ресурса

2. Создаем плагин с названием MinifyxHtml
Содержимое:
OnWebPagePrerender
5. Добавляем в плагин параметр:
Название: tvMinifyxHtml
Значение: id вашего tv-поля
Тип: Текстовое поле
После этого обновляем страницу на сайте, при просмотре кода страницы (не инспектор) увидите сжатый, чистый html
+ удаляет комментарии <!- ->, пробелы, табуляцию. Это частично отбивает желание копировать ваш сайт, ускоряет немного загрузку. Данное сжатие можно включать и отключать tv полем.
Не ругайтесь если что-то подобное уже лежит на modx.pro, я доработал код и теперь все работает так как мне нужно. Можно было бы добавить данную функцию в компонент minifyx
В итоге получим вот такой вывод html на своем сайте.

1. Создаем TV поле с названием tvMinifyxHtml
— Тип ввода: список (одиночный выбор).
— Возможные варианты: Да==1||Нет==0
— Значение по умолчанию: 1
— Включаем для всех шаблонов на сайте
— Запоминаем id этого tv поля
В итоге вы сможете включать и отключать сжатие для каждого ресурса

2. Создаем плагин с названием MinifyxHtml
Содержимое:
<?php
if($modx->event->name=='OnWebPagePrerender'){
$flag=true;
if(isset($tvMinifyxHtml) && (int)$tvMinifyxHtml>0){
$id = $modx->resource->get('id');
$tvs = $modx->getObject('modTemplateVarResource',array('tmplvarid'=>(int)$tvMinifyxHtml, 'contentid'=>$id));
if($tvs && 0==$tvs->get('value')){
$flag=false;
}
}
if($flag){
$html = &$modx->resource->_output;
$html = preg_replace('|\s+|', ' ', $html);
$html = preg_replace('#<!--.*-->#sUi', '', $html);
$html = str_replace('> <','><', $html);
}
}4. Включаем системное событие:OnWebPagePrerender
5. Добавляем в плагин параметр:
Название: tvMinifyxHtml
Значение: id вашего tv-поля
Тип: Текстовое поле
После этого обновляем страницу на сайте, при просмотре кода страницы (не инспектор) увидите сжатый, чистый html
Комментарии: 11
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Можно просто плагином на событие OnWebPagePrerender:
2) Скройте код по кат.
Обрабатывать HTML, как и любую структуру, регулярками, а не полноценным построением подели через парсинг, очень плохая идея. Про это неоднократно пишут. Возможны самые различные последствия, самые вкусные из которых:
1. Повреждение преформатированного текста, где важен каждый символ.
2. Повреждение ld+json разметки, json-аттрибутов, шаблонов, где пробелы тоже часто играют роль.
3. Повреждение JavaScript кода, в частности регулярных выражений, строк и логики (потеря перевода строки может приводить к нерабочему коду).
И другие подобные прелести.
Лучше пользоваться услугами CDN, если уже совсем лень.
но хочется все равно сжать сайт, что б компактно было для браузера и отпадало желание у других шуршать в коде моем