Конфликт при смене языка

Тема в разделе "Ошибки и их решения", создана пользователем Sanik, 31 июл 2022.

  1. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Здравствуйте. Имеется сборка на опенкарт 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;
    } */
    
    За что отвечает данный код и как сделать так, что бы код работал без кометирования и язык?
     
  2. Pie

    Pie Активный пользователь

    Сообщения:
    121
    Симпатии:
    28
    Сколько денег за сео оптимизацию отвалили?
     
  3. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Сайт не мой. Занимаюсь версткой. Моя задача на данном этапе, установить доп. язык.
     
  4. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    746
    Симпатии:
    100
    А вы точно уверены, что это вообще к опенкарт 3 относится? Или может скрипт перекочевал откуда-нибудь?

    Просто там какая-то непонятная попытка кэша, при чем не подходящая для опенкарт от слова "совсем"))
     
  5. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    Этот код в файле index.php опенкарта, вверху перед стандартным кодом..
     
  6. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    746
    Симпатии:
    100
    Сделайте бэкап. Потом, если у вас не было каких-то диковинных модулей, то откройте исходную версию файла для опенкарта (дистрибутива) и замените. Потому что этот код лишь проблем принесет
     
  7. Sanik

    Sanik Активный пользователь

    Сообщения:
    299
    Симпатии:
    3
    В index.php все нормально, кроме этого добавленого кода. Какие там до этого модули были - мне не извесно и посреднику тоже. Если этот код не убрать, то язык вообще не переключается. А то, что описал в первом посте - оно вижу и в стандартной сборке такая проблема.
     
  8. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    746
    Симпатии:
    100
    То что я вам описал - это удаление кода. В стандартной сборке такого кода в Index.php попросту нет