Как выводить Last Modified — различия между версиями
Материал из Umicms
(Новая страница: «Как выводить Last-Modified? Попробуйте добавить следующий код в ~/classes/modules/custom.php сразу после стр…») |
Whoa (обсуждение | вклад) |
||
(не показано 8 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
− | + | '''Актуально для версии 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()%
Дата будет выводится текущая. Если хотите, можете поправить на любую другую.