| 
|  | Дата: Пятница, 15.05.2015, 04:12 | Сообщение # 1 |  | Группа: Администраторы Сообщений: 1530 | Создаем сниппет для отправки заголовка страницы на дату изменения [[LastModified_robots]]: ------------------------------------------------------------------------------------
 
 <?php
 function DetectSearchEngine($USER_AGENT)
 {
 $engines = array(
 array('Aport', 'Aport'),
 array('Google', 'Google'),
 array('msnbot', 'MSN'),
 array('Rambler', 'Rambler'),
 array('Yahoo', 'Yahoo'),
 array('Yandex', 'Yandex'),
 array('Aport', 'Aport robot'),
 array('Google', 'Google'),
 array('msnbot', 'MSN'),
 array('Rambler', 'Rambler'),
 array('Yahoo', 'Yahoo'),
 array('AbachoBOT', 'AbachoBOT'),
 array('accoona', 'Accoona'),
 array('AcoiRobot', 'AcoiRobot'),
 array('ASPSeek', 'ASPSeek'),
 array('CrocCrawler', 'CrocCrawler'),
 array('Dumbot', 'Dumbot'),
 array('FAST-WebCrawler', 'FAST-WebCrawler'),
 array('GeonaBot', 'GeonaBot'),
 array('Gigabot', 'Gigabot'),
 array('Lycos', 'Lycos spider'),
 array('MSRBOT', 'MSRBOT'),
 array('Scooter', 'Altavista robot'),
 array('AltaVista', 'Altavista robot'),
 array('WebAlta', 'WebAlta'),
 array('IDBot', 'ID-Search Bot'),
 array('eStyle', 'eStyle Bot'),
 array('Mail.Ru', 'Mail.Ru Bot'),
 array('Scrubby', 'Scrubby robot'),
 array('Yandex', 'Yandex')
 );
 
 foreach ($engines as $engine)
 {
 if (stristr($USER_AGENT, $engine[0]))
 {
 return($engine[1]);
 }
 }
 return (false);
 }
 
 //определяем поисковой ли бот пришёл к нам
 $detect = DetectSearchEngine($_SERVER['HTTP_USER_AGENT']); //только для ботов
 //или (ненужное заремить)
 detect =1; //для всего
 
 if ($detect)
 {
 //Получаем время изменения ресурса из таблички site_content
 //этот параметр меняется только тогда, когда меняем содержимое страницы, но не шаблона
 //это важно!
 $last_modified_time = $modx->documentObject['editedon'];
 
 //Если поисковик спрашивает у сервера: у меня есть эта страница в кэше с определённого времени, изменилась ли она?
 //смотрим на время, сверяем:
 if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified_time){
 //Если НЕ изменилась то отправляем 301 ответ
 header('HTTP/1.1 304 Not Modified');
 //И убиваем выполнение дальнейших скриптов, то есть сервер кроме ответа заголовка не шлёт саму страничку
 die;
 }
 
 //устанавливаем поисковику Last-Modified если он первый раз на странице либо если страница обновлена.
 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_modified_time).' GMT');
 
 }
 else
 {
 //тут можно выполнять код для обычного посетителя
 }
 ?>
 ------------------------------------------------------------------------------------
 
 Создаем сниппет для проверки даты изменения страницы [[last_modified_info]]:
 ------------------------------------------------------------------------------------
 <?php
 $last_modified_time = $modx->documentObject['editedon'];
 $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $last_modified_time);
 echo "<!--last_modified_time:".$last_modified_time."/".$LastModified."-->";
 ?>
 ------------------------------------------------------------------------------------
 
 Теперь, чтобы все работало вставляем во все шаблоны
 
 [!LastModified_robots!]
 код шаблона
 [!last_modified_info!]
 
 Проверяем валидатором урлы страниц сайта
 
 http://last-modified.com/ru/
 
 Должны увидеть что-то типа
 
 
   |  |  |  |  |