Здравствуйте. Имеется сборка на опенкарт 3. Не корректно работает переключатель языка. После клика на выбор языка нужно обновлять кэш браузера, что бы язык включился. В index.php обнаружил такой код Код: $LastModified_unix = strtotime(date("D, d M Y H:i:s", filectime($_SERVER['SCRIPT_FILENAME']))); $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); $IfModifiedSince = false; if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5)); if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; } header('Last-Modified: '. $LastModified); $expires = 30; if ($_SERVER['REQUEST_URI'] == '/') { $expires = 5; } else if (in_array($_SERVER['REQUEST_URI'], array('/company/', '/projects/', '/info/', '/articles/'))) { $expires = 14; } header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + $expires*24*60*60)); Но если закоментировать вот этот кусок, то все работет Код: /* if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; } */ За что отвечает данный код и как сделать так, что бы код работал без кометирования и язык?
А вы точно уверены, что это вообще к опенкарт 3 относится? Или может скрипт перекочевал откуда-нибудь? Просто там какая-то непонятная попытка кэша, при чем не подходящая для опенкарт от слова "совсем"))
Сделайте бэкап. Потом, если у вас не было каких-то диковинных модулей, то откройте исходную версию файла для опенкарта (дистрибутива) и замените. Потому что этот код лишь проблем принесет
В index.php все нормально, кроме этого добавленого кода. Какие там до этого модули были - мне не извесно и посреднику тоже. Если этот код не убрать, то язык вообще не переключается. А то, что описал в первом посте - оно вижу и в стандартной сборке такая проблема.