Статистика Drupal не считает посещения, когда я вижу узел из пользовательской панели

У меня есть веб-сайт, где каждый узел имеет три разных дизайна (я делаю это с помощью панелей и аргументов), и я использую модуль статистики, таким образом я могу видеть, сколько посещений имеет узел.

Но модуль статистики просто считает посещения, когда они посещают основной дизайн. Могу пояснить на примере:

  • веб-сайт .com/node/01 ‹ --- когда пользователь посещает этот URL-адрес, посещение засчитывается
  • сайт .com/node/01/mobile ‹----- здесь посещение не засчитывается
  • сайт .com/node/01/lightbox ‹----здесь посещение не засчитывается

Это было создано для панелей и аргументов... Итак, можно ли как-то поместить php-код в две панели, чтобы посетителям не приходилось начинать считать?

Лучший,


person Joaquin Souyris    schedule 13.10.2014    source источник


Ответы (4)


Это потому, что панели не вызывают node_view(). Пожалуйста, попробуйте следующий код:

function MODULE_ctools_render_alter(&$info, &$page, &$context) {
  if ($context['handler']->task == 'node_view') {
    $key = $context['handler']->conf['context'];
    $node = $context['contexts'][$key]->data;
    statistics_node_view($node, 'full')
  }
}
person Yenya    schedule 08.01.2015

Вы можете использовать узел модуль подсчета просмотров

Модуль Node View Count позволяет подсчитывать просмотры узлов. В отличие от модуля статистики, этот модуль записывает каждое представление узла с идентификатором пользователя и отметкой времени. Итак, теперь вы можете узнать, сколько раз пользователь просматривал узел в день, неделю, месяц и т. д.

Этот модуль интегрирован с модулем Views. Вы можете использовать его для создания различных страниц статистики, вывода новых непросмотренных узлов для пользователя и многого другого.

person Yuseferi    schedule 21.02.2015

Вот как я заставляю страницу панели работать со статистикой:

    function MODULE_ctools_render_alter(&$info, &$page, &$context) {
      if (!user_is_logged_in() && $context['handler']->task == 'node_view') {
        $node = current($context['contexts'])->data;
        statistics_node_view($node, 'full');
        drupal_process_attached($node->content);
      }
    }

Я добавляю проверку user_is_logged_in, потому что в моем случае я просто хотел подсчитать обращения от незарегистрированных пользователей.

person Pedro Perez Pereda    schedule 10.02.2017

Решение для друпал 8.

function MODULE_panels_build_alter(array &$build, $panels_display) {
        if ($nid = \Drupal::routeMatch()->getRawParameter('node')) {
                $build['#attached']['library'][] = 'statistics/drupal.statistics';
                $settings = ['data' => ['nid' => $nid], 'url' => \Drupal::request()->getBasePath() . '/' . drupal_get_path('module', 'statistics') . '/statistics.php'];
                $build['#attached']['drupalSettings']['statistics'] = $settings;
        }   
}
person Logan    schedule 25.07.2018