Вывод количество просмотров страниц с учетом cookie (модернизация HitsPage)
Всем привет, настроил компонент HitsPage, и обнаружил, что компонент считает не уникальные просмотры, а увеличивает счетчик при каждом обновлении страницы.
Есть ли возможность, как-то подкрутить компонент, изменить сниппет, плагин, идущие с ним, что бы счетчик работал корректно, учитывал именно уникальные визиты с cookie, засчитывал одно посещение страницы в сутки одним пользователем?
Заранее спасибо!
Есть ли возможность, как-то подкрутить компонент, изменить сниппет, плагин, идущие с ним, что бы счетчик работал корректно, учитывал именно уникальные визиты с cookie, засчитывал одно посещение страницы в сутки одним пользователем?
Заранее спасибо!
Комментарии: 5
Есть. Надо открыть сниппет или плагин, посмотреть где там происходит подсчёт и поставить нужное условие.
Вот сниппет, судя по всему, в нем происходит подсчет:
$page = $modx->getObject('modResource', $modx->resource->get('id'));
$view = 0;
// Check the option to record in TV
if($saveTv == 'true') {
// get the required TV object by name (or id)
$tv = $modx->getObject('modTemplateVar',array('name'=>'HitsPage'));
if($tv) {
$tvs = $modx->getObject('modTemplateVarResource',array('tmplvarid'=>$tv->id, 'contentid'=>$page->get('id')));
if($tvs) {
$viewTv = $tvs->get('value');
$tvs->set('value',intval($viewTv) + 1);
if($tvs->save()) $view = $viewTv;
} else {
$tvn = $modx->newObject('modTemplateVarResource');
$tvn->set('tmplvarid',$tv->id);
$tvn->set('contentid',$page->get('id'));
$tvn->set('value',1);
if($tvn->save()) $view = 1;
}
}
} else {
$view = $page->getProperty('hitts','hitspage',$view);
}
$page->setProperty('hitts',intval($view) + 1,'hitspage');
$page->save();
return $view;
А как его модифицировать, что бы уникальных только считал?
Вот строки отвечающие за сохранение
$tvs->set('value',intval($viewTv) + 1);
if($tvs->save()) $view = $viewTv;
$page->setProperty('hitts',intval($view) + 1,'hitspage');
$page->save();
Заверните их в условие. Предварительно правда надо записывать время начала визита.
Есть какой либо пример? Я новичок в этом, не умею пока на таком языке глаголить))) В условие завернуть — это примерно понятно что, а как время записывать и как это делать, 0)
В сессию или в куки записывайте. Как работать с куками или сессией можно посмотреть в документации по PHP.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.