"Ctrl + f5 нажмите". Плагин EVO

Расписывать долго не буду, просто предоставляю вашему вниманию плагин для Evolution, который добавляет в конец ссылки подключаемых скриптов и картинок время последнего изменения. Таким образом браузер при загрузке страницы будет всегда брать актуальную версию файла.
Решение накидал на скорую руку, поэтому код не самый идеальный (но рабочий), если кто поправит — буду признателен)


Название — любое.
Событие — OnWebPagePrerender

//<?php
$base = $modx->config['site_url'];		
$files_origin = array();
$files_new = array();		
$expansion='css,js,jpeg,jpg,png';		
$content = $modx->Event->params['documentOutput'];
		
		
preg_match_all('/(link|href)=("|\')[^"\'>]+/i', $content, $media);
$data = preg_replace('/(link|href)("|\'|="|=\')(.*)/i', "$3", $media[0]);
foreach ($data as $url) 
{	
	$a = substr(strrchr($url, '.'), 1);			
	$b = explode('?',$a);
	$ex = explode('/',$b[0]);	
	$fo = explode('?',$url);			
	$file_name = str_replace($base,'',$fo[0]);

	if (in_array(mb_strtolower($ex[0]),explode(',',$expansion))) 
	{		
	$fa = @stat($file_name);
		if ($fa)
		{
			$files_origin[] = $url;
			$files_new[] = $fo[0].'?v='.$fa['mtime'];				
		}
	}
}

		
preg_match_all('/(script|img||src)=("|\')[^"\'>]+/i', $content, $media);
$data = preg_replace('/(script|src)("|\'|="|=\')(.*)/i', "$3", $media[0]);
foreach ($data as $url) 
{	
	$a = substr(strrchr($url, '.'), 1);			
	$b = explode('?',$a);
	$ex = explode('/',$b[0]);	
	$fo = explode('?',$url);			
	$file_name = str_replace($base,'',$fo[0]);

	if (in_array(mb_strtolower($ex[0]),explode(',',$expansion))) 
	{		
	$fa = @stat($file_name);
		if ($fa)
		{
			$files_origin[] = $url;
			$files_new[] = $fo[0].'?v='.$fa['mtime'];				
		}
	}
		
}
		
$content = str_replace($files_origin,$files_new,$content);		
$modx->Event->output($content);		

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.