我有一个网站,每个节点都有三种不同的设计(我通过面板和参数来实现),我使用统计模块,这样我就可以查看该节点的访问次数。
但统计模块在访问主要设计时只计算访问次数。我可以用一个例子来解释:
- website.com/node/01<---当用户访问此url时,访问次数将被计算在内
- website.com/node/01/mobile<-----这里不算参观次数
- website.com/node/01/lightbox<----这里不算参观次数
这是为小组讨论和辩论而建的。。。那么,有没有办法把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检查,因为在我的情况下,我只想计算未登录用户的点击量。
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;
}
}