Как выводить Last Modified — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Как выводить Last-Modified? Попробуйте добавить следующий код в ~/classes/modules/custom.php сразу после стр…»)
 
 
(не показано 8 промежуточных версий 4 участников)
Строка 1: Строка 1:
Как выводить Last-Modified?
+
'''Актуально для версии 18.'''
 +
 
 +
В актуальной версии системы для вывода Last-Modified используйте директиву [http://dev.docs.umi-cms.ru/nastrojka_sistemy/dostupnye_sekcii/sekciya_seo/#sel=9:1,9:3 calculate-last-modified = 1] в файле config.ini
 +
 
 +
Нижеуказанный пример можно использовать для старых версий системы.
  
 
Попробуйте добавить следующий код в ~/classes/modules/custom.php сразу после строки  
 
Попробуйте добавить следующий код в ~/classes/modules/custom.php сразу после строки  
Строка 9: Строка 13:
 
<source lang="php">
 
<source lang="php">
 
public function lastMDF() {
 
public function lastMDF() {
$header = '<meta http-equiv="Last-Modified" content="'.gmdate("D, d M Y H:i:s").' GMT" />';
+
    $LastModified_unix = 1294844676; // время последнего изменения страницы
return $header;  
+
    $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);
 +
    $header = '<meta http-equiv="Last-Modified" content="'.gmdate("D, d M Y H:i:s").' GMT" />';
 +
    return $header;  
 
}
 
}
 
</source>
 
</source>
Строка 26: Строка 42:
  
 
Дата будет выводится текущая. Если хотите, можете поправить на любую другую.
 
Дата будет выводится текущая. Если хотите, можете поправить на любую другую.
 +
 +
[[category:Написание кастомных макросов]]

Текущая версия на 14:04, 21 ноября 2018

Актуально для версии 18.

В актуальной версии системы для вывода Last-Modified используйте директиву calculate-last-modified = 1 в файле config.ini

Нижеуказанный пример можно использовать для старых версий системы.

Попробуйте добавить следующий код в ~/classes/modules/custom.php сразу после строки

//TODO: Write your own macroses here
public function lastMDF() {
    $LastModified_unix = 1294844676; // время последнего изменения страницы 
    $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);
    $header = '<meta http-equiv="Last-Modified" content="'.gmdate("D, d M Y H:i:s").' GMT" />';
    return $header; 
}


Регистрировать его нигде не нужно.

Пример использования:

Вставляете следующий макрос в шаблоне .tpl в тэге <head>

%custom lastMDF()%

Дата будет выводится текущая. Если хотите, можете поправить на любую другую.