Вывод количество просмотров страниц с учетом cookie (модернизация HitsPage)

Всем привет, настроил компонент HitsPage, и обнаружил, что компонент считает не уникальные просмотры, а увеличивает счетчик при каждом обновлении страницы.

Есть ли возможность, как-то подкрутить компонент, изменить сниппет, плагин, идущие с ним, что бы счетчик работал корректно, учитывал именно уникальные визиты с cookie, засчитывал одно посещение страницы в сутки одним пользователем?

Заранее спасибо!
Константин
05 февраля 2023, 15:25
modx.pro
414
0

Комментарии: 5

Артур Шевченко
06 февраля 2023, 21:28
0
Есть. Надо открыть сниппет или плагин, посмотреть где там происходит подсчёт и поставить нужное условие.
    Константин
    07 февраля 2023, 07:58
    0
    Вот сниппет, судя по всему, в нем происходит подсчет:

    $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;
    А как его модифицировать, что бы уникальных только считал?
      Артур Шевченко
      07 февраля 2023, 12:06
      0
      Вот строки отвечающие за сохранение
      $tvs->set('value',intval($viewTv) + 1);
       if($tvs->save()) $view = $viewTv;
      $page->setProperty('hitts',intval($view) + 1,'hitspage');
      $page->save();
      Заверните их в условие. Предварительно правда надо записывать время начала визита.
        Константин
        07 февраля 2023, 15:00
        0
        Есть какой либо пример? Я новичок в этом, не умею пока на таком языке глаголить))) В условие завернуть — это примерно понятно что, а как время записывать и как это делать, 0)
          Артур Шевченко
          07 февраля 2023, 15:02
          0
          В сессию или в куки записывайте. Как работать с куками или сессией можно посмотреть в документации по PHP.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5