Загрузка ...

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');
		}
	}
//

Вам требуются услуги или консультация специалиста по веб-разработке?

Свяжитесь со мной
Цвет элементов сайта