当我从自定义面板中看到节点时,Drupal统计数据不计算访问次数



我有一个网站,每个节点都有三种不同的设计(我通过面板和参数来实现),我使用统计模块,这样我就可以查看该节点的访问次数。

但统计模块在访问主要设计时只计算访问次数。我可以用一个例子来解释:

  • website.com/node/01&lt---当用户访问此url时,访问次数将被计算在内
  • website.com/node/01/mobile<-----这里不算参观次数
  • website.com/node/01/lightbox&lt----这里不算参观次数

这是为小组讨论和辩论而建的。。。那么,有没有办法把php代码放在两个面板中,访问者不必开始计算?

最佳,

这是因为面板不会调用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')
  }
}

您可以使用节点视图计数模块

节点视图计数模块允许对节点视图进行计数。与统计数据不同模块,该模块使用用户uid和时间戳。因此,现在您可以通过天、周、月等

此模块与视图模块集成在一起。您可以使用它来创建不同的统计页面,为用户和更多。

以下是我如何使Panel Page与Statistics:一起工作

    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检查,因为在我的情况下,我只想计算未登录用户的点击量。

Drupal 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;
        }   
}

相关内容

  • 没有找到相关文章

最新更新