当我从自定义面板看到节点时,Drupal 统计信息不计算访问次数
Posted
技术标签:
【中文标题】当我从自定义面板看到节点时,Drupal 统计信息不计算访问次数【英文标题】:Drupal statistics does not count visits when I see the node from a custom panel 【发布时间】:2014-12-08 00:05:02 【问题描述】:我有一个网站,其中每个节点都有三种不同的设计(我通过面板和参数来实现),我使用统计模块,这样我就可以看到节点有多少访问。
但统计模块只是在访问主设计时计算访问次数。我可以举例说明:
website .com/node/01 website .com/node/01/mobile 网站.com/node/01/lightbox这是为面板和参数而构建的...那么,有没有将 php 代码放在两个面板中,访问者不必开始计算?
最好的,
【问题讨论】:
【参考方案1】:这是因为面板不调用 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')
【讨论】:
【参考方案2】:你可以使用节点views count module
节点视图计数模块允许计算节点视图。与统计不同 模块,该模块用用户 uid 记录节点的每个视图和 时间戳。所以现在您可以知道用户查看节点的次数 日、周、月等。
此模块与 Views 模块集成。您可以使用它来创建 不同的统计页面,为用户输出新的未查看节点和 还有更多。
【讨论】:
【参考方案3】:以下是我如何让面板页面与统计信息一起使用:
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 检查,因为在我的情况下,我只想计算来自未登录用户的点击次数。
【讨论】:
【参考方案4】: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;
【讨论】:
以上是关于当我从自定义面板看到节点时,Drupal 统计信息不计算访问次数的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 6 中的自定义搜索表单:视图/面板还是自定义 sql?