Как сделать LastModifier через YT - kulichkov-roman/prk GitHub Wiki
AddEventHandler('main', 'OnEpilog', array('LastModifierHandler', 'CheckIfModifiedSince'));
- В /local/php_interface/classes/Handler/ создаём файл LastModifierHandler.php в нем пишем
/**
* Class LastModifierHandler
*/
class LastModifierHandler
{
public function CheckIfModifiedSince()
{
$CLastModifierHelper = KSK\Helper\LastModifierHelper::getInstance();
if ($strLastModifier = $CLastModifierHelper->getLastModifier())
{
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $strLastModifier).' GMT');
$arr = apache_request_headers();
foreach ($arr as $header => $value)
{
if ($header == 'If-Modified-Since')
{
$ifModifiedSince = strtotime($value);
if ($ifModifiedSince > $strLastModifier)
{
$GLOBALS['APPLICATION']->RestartBuffer();
CHTTP::SetStatus('304 Not Modified');
}
}
}
}
}
}
- В /local/php_interface/classes/Helper/ создаём файл LastModifierHelper.php в нем пишим
<?
// KSK нужно заменить на нужный
namespace KSK\Helper;
/**
* Class LastModifierHelper
*/
class LastModifierHelper
{
/**
* @var LastModifierHelper
*/
protected static $instance = null;
/**
* @var $strLastModifier
*/
private $strLastModifier;
/**
* @return LastModifierHelper
*/
public static function getInstance()
{
if (is_null(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
protected function __construct()
{}
private function __clone()
{}
/**
* Сохранить $strLastModifier
*/
public function setLastModifier($lastModifier)
{
$this->strLastModifier = $lastModifier;
}
/**
* Сохранить $strLastModifier
*/
public function getLastModifier()
{
return $this->strLastModifier;
}
}
?>
- В карточка товара, новости или др. в result_modifier.php пишем
/*
* Передать TIMESTAMP_X в кеш для установки в LastModifier
* */
$cp = $this->__component;
if (is_object($cp))
{
$cp->SetResultCacheKeys(array('TIMESTAMP_X'));
}
- В карточке товара, новости или др. в component_epilog.php пишем
$CLastModifierHelper = KSK\Helper\LastModifierHelper::getInstance();
/*
* Передать TIMESTAMP_X в кеш для установки в LastModifier
* */
$CLastModifierHelper->setLastModifier(MakeTimeStamp($arResult['TIMESTAMP_X']));