$modx->resource;
// URL
$url = $modx->makeUrl($resource->get('id'), '', '', 'abs');
// id TV views
$tvViewsId = 83;
// количество просмотров
$views = 0;
// если TV не доступна для этого шаблона, то завершаем
$tvViewsTemplate = $modx->getObject('modTemplateVarTemplate', [
'tmplvarid' => $tvViewsId,
'templateid' => $resource->get('template')
]);
if (!$tvViewsTemplate) {
return;
}
// получаем TV
$tvViews = $modx->getObject('modTemplateVarResource', [
'tmplvarid' => $tvViewsId,
'contentid' => $resource->get('id')
]);
// если имеется TV то получаем его значение, иначе создаем
if ($tvViews) {
$views = $tvViews->get('value');
} else {
$tvViews = $modx->newObject('modTemplateVarResource');
// устанавливаем значение поля tmplvarid
$tvViews->set('tmplvarid', $tvViewsId);
// устанавливаем значение поля contentid
$tvViews->set('contentid', $resource->get('id'));
}
// если значение куки не равно текущему URL, то увеличиваем счетчик
if ($_COOKIE['views'] != $url) {
// устанавливаем количество просмотров
$tvViews->set('value', ++$views);
// сохраняем TV
$tvViews->save();
// устанавливаем COOKIE views
setcookie('views', $url, time() + (86400 * 365), $url);
}
// устанавливаем плейсхолдер views
$modx->setPlaceholder('views', $views);
Помечайте пожалуйста код специальным оформлением monospace (Выделил текст и выбрал форматирование). Уважайте глаза тех, кто читает
Обсуждают сегодня