В MiniShop2 встроена система контроля клиентского кэширования, но она негибкая, и учитывает лишь версию Minishop2, тогда как в реальной жизни файлик может быть отредактирован и без обновления пакета. И Вот тут возникает проблема с файлом JS, так как CSS можно просто отключить в настройках и подключить его вручную, наладив контроль кэширования. Со скриптами все сложнее, так как на системной настройке завязан вывод конфига. В общем, все это можно поправить в файле
/core/components/minishop2/model/minishop2/minishop2.class.php
Находим строчку
$js = trim($this->modx->getOption('ms2_frontend_js'));
и вносим правки. Например такие:
if (preg_match('/\.js$/i', $js)) { $config['vl']=str_replace('type="text/javascript"',"",$config['vl']); $js_file = str_replace($config['pl'], $config['vl'], $js); $file_path = MODX_BASE_PATH.$js_file; if(file_exists($file_path)){ $js_file .= "?file_version=".md5_file($file_path); }else{ $js_file = str_replace($config['pl'], $config['vl'], $js); } $this->modx->regClientScript($js_file); }
В итоге получаем адрес скрипта:
.../default.js?file_version=9cf6e2309ea8cf75b836ab6abe5393f4
И при изменении содержимого этого файла хэш file_version будет меняться, не допуская загрузки устаревшего файла для частого пользователя вашего интернет-магазина.
Комментарии (0)
Не писать ответ