CMS MODx - Заголовок Last-Modified
Продолжаем учиться корректно использовать заголовок Last-Modified в различных системах управления контентом сайтов. В прошлый раз я показал вам функцию для CMS WordPress. Сегодня я написал плагин для CMS MODx Evolution, который расширит функционал данной системы и научит ее корректно отвечать на запросы поисковых роботов, содержащие директиву If-Modified-Since.
Создайте новый плагин в системе управления MODx, назовите его, например "LastModifiedAnswer", в системных событиях плагина отметьте галочкой событие "OnWebPagePrerender" и в поле "Код плагина" вставьте код, который я привожу ниже и сохраните вновь созданный плагин.
Чтобы проверить работу нового плагина, вы можете воспользоваться сервисом Last-Modified.com
//
if($modx != true) exit('Error: You don\'t have permissions!');
$event = &$modx->Event->name;
if($event == 'OnWebPagePrerender')
{
$ID = $modx->documentIdentifier;
if($ID == true)
{
$a = $modx->db->getRow($modx->db->query('SELECT * FROM ' . $modx->getFullTableName('site_content') . ' WHERE `id` = ' . $ID));
$time = date('D, d M Y H:i:s', ($a['editedon'] > 0 ? $a['editedon'] : $a['createdon']));
$request = false;
if(isset($_ENV['HTTP_IF_MODIFIED_SINCE']) == true) $request = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) == true) $request = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
header(($request == true && $request >= $time) ? $_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified' : 'Last-Modified: ' . $time . ' GMT');
}
}
//
Вам требуются услуги или консультация специалиста по веб-разработке?
Свяжитесь со мной