Сжатие HTML кода

Здравствуйте. Есть такой плагин для сжатия HTML кода:
/** HTML2Minify plugin for MODX Revo
* @internal @event OnWebPagePrerender
* @internal @properties &Minify=ID TV;integer;1
* @internal @modx_category HTML-code
*
* INSTALL
*        1) Assign Minify TV to your template
*        2) Minify TV values
*              - Yes==1||No==0 
*              - Default value: 1
*        3) Enjoy:)
*/
if($modx->event->name=='OnWebPagePrerender'){
  $id = $modx->resource->get('id');
  $page = $modx->getObject('modResource', $id);
  $tv = $page->getTVValue('Minify');
  if($tv == 1){
	$html = &$modx->resource->_output;
	$html = preg_replace('|\s+|', ' ', $html);
  }
}
Если я правильно понял, то для его активации нужно в шаблоне установить TV параметр. Не могу разобраться, подскажите как это сделать.
Павел
12 ноября 2016, 17:17
modx.pro
1
4 684
0

Комментарии: 13

Дмитрий Суворов
13 ноября 2016, 01:00
0
Судя по всему, необходимо для каждой страницы добавить TV, под именем «Minify». Если в нем будет содержаться 1 — то плагин сработает, если 0 — то нет.

Сам плагин повесить на событие OnWebPagePrerender
    Павел
    13 ноября 2016, 07:44
    0
    А TV куда добавлять? В шаблоне на вкладку параметры или в другое место?
      Дмитрий Суворов
      13 ноября 2016, 13:56
      0
      Просто создайте TV, присвойте его всем шаблонам и установите значение по умолчанию (1)
        Павел
        13 ноября 2016, 16:10
        0
        Нашёл в разделе «Элементы» пиктограмму «Новый TV», если её нажать и задать имя и свойства, то появляется в «Дополнительных полях» новый элемент Minify. Я всё правильно сделал?
Роман Садоян
13 ноября 2016, 02:20
0
Смысл от подобной минификации html кода? Тестил pagespeed, делал замеры скорости загрузки — ни на что «вырезанные пробелы» не влияют.
    Дмитрий Суворов
    13 ноября 2016, 13:55
    0
    этим занимаются, как правило, чтобы угодить тесту: developers.google.com/speed/pagespeed/insights/
      Pavel Zarubin
      13 ноября 2016, 16:28
      0
      Как написали выше — угодить пэйджспиду, тем самым уменьшить стоимость рекламы в google/yandex
        aligan
        12 апреля 2017, 09:24
        0
        а почему стоимость рекламы снижается?
          Никита
          20 ноября 2020, 10:28
          0
          Насчет яндекса это неизвестно, скорее всего нет, но вот у Гугла при контекстной рекламы решающее значение имеет «показатель качества», состоящий из трех элементов: релевантность объявления, CTR и показатель качества целевой страницы. Так вот, на последний показатель как раз и влияет скорость загрузки
      Василий
      08 ноября 2019, 17:03
      0
      Плагин выдает ошибку, если включить в настройках «сайт недоступен».
      Решается простой проверкой
      if($modx->event->name=='OnWebPagePrerender'){
      $id = $modx->resource->get('id');
      if($page = $modx->getObject('modResource', $id)){
      $tv = $page->getTVValue('Minify');
      if($tv == 1){
      $html = &$modx->resource->_output;
      $html = preg_replace('|\s+|', ' ', $html);
      }
      }

      а вообще, получение id ресурса, потом получение ресурса по id, а затем получение тв и проверку этого тв можно заменить одной строчкой и получится вот так (проверил у себя, работает):
      if($modx->resource->getTVValue('Minify') == 1){
      $html = &$modx->resource->_output;
      $html = preg_replace('|\s+|', ' ', $html);
      }
        Илья
        29 мая 2020, 10:32
        +1
        Если у кого-то после сжатия вылезают «битые» крокозябры вместо, например, кириллической буквы «Р» и другие неизвестные символы, пробуйте такой preg_replace:

        $html = preg_replace( '/[\p{Z}\s]+/u', ' ', $html);
        Решил апнуть темку, вдруг кому поможет. Сам вчера столкнулся.
          Джанго
          02 сентября 2020, 00:47
          0
          Регулярное выражение лучше использовать вот это, оно более полное:
          preg_replace('#(?ix)(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!/?(?:textarea|pre)\b))*+)(?:<(?>textarea|pre)\b|\z))#', ' ', $output);
          Взято отсюда, тут и расшифровка — stackoverflow.com/questions/5312349/minifying-final-html-output-using-regular-expressions-with-codeigniter
          Данное регулярное выражение может некорректно «минифицировать» js, если он встроен прямо в html(присутствует например, в вашем шаблоне). В этому случае ужимайте его вручную через js minify. (например через javascript-minifier.com/).
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            13