改进 Onebox 点击计数

如果我在帖子中插入链接,我可以看到有多少人点击了该链接。但如果我将链接放在单独一行,它被生成摘要框(onebox)后,我就再也看不到点击次数了。

这篇帖子进一步描述了该问题:

答案分为两部分。

首先,必须启用在新标签页中打开链接的选项。(从技术上讲,我不太理解这一点,因为其他链接在不启用此选项的情况下也能被统计点击次数。)

其次…

因此,用户最常点击的主链接永远不会被统计。同样,我也不理解这些链接在技术上的区别,以及为什么其中一个会被统计而另一个不会。

尽管我不太理解背后的技术原因,但我非常希望摘要框链接的点击次数能够被一致地统计。

6 个赞

我已经检查了仪表板中的所有设置,但没有找到用于启用在新标签页中打开链接的复选框……不过链接确实已经在另一个标签页中打开了。
我们尝试点击文章标题以及链接本身——两者的计数器都没有反应。
这里有个棘手的问题:计数器在一两天内突然开始工作,随后又停止了。我们完全没有进行任何更改。我还询问了一位版主和几位用户,看他们是否在发布的链接旁看到过点击计数。没有人看到过,因此我知道这并非仅因为我作为管理员的身份所致。
和您一样,我也希望 Onebox 链接的点击能够被一致地统计。

编辑:我想补充说明,对于在空白空间后发布的链接(因此不会被 Onebox 处理),计数器可以正常工作……只是对于 Onebox 处理的链接则不行。

2 个赞

我上周已经启用了该设置,请搜索 default other external links in new tab。此设置将适用于在该设置启用后注册您网站的所有新用户。旧用户可以从其个人资料中激活它(如果我们可以通过控制台为旧用户批量启用该设置)。

我尝试点击该主题前两个帖子中的两个 onebox(https://forum.nodders.net/t/2019-plastic-waste-and-recycling/167),计数已从 0 增加到 1。可能是进行测试的用户是旧用户,未在个人资料中启用外部标签页设置,或者该用户尝试通过右键单击链接本身直接在新的窗口中打开链接。

3 个赞

大概就是这样。我会通知大家需要在个人资料中进行更改……就像我一样。:wink: 谢谢。

另外请注意,点击您自己的帖子中的链接不会增加计数。

3 个赞

@dax, @codinghorror,我找到了为什么链接计数器在我们论坛对我及其他人有效的原因。在“偏好设置/界面/其他”中,虽然我勾选了“在所有外部链接在新标签页中打开”,但我也勾选了“在浏览器图标上显示计数”。显然,后者会覆盖前者。我取消勾选了“在浏览器图标上显示计数”,保存后检查了一篇文章……计数器就出现了!

我还发现了一个小细节。当用户发布链接,而 OneBox 尝试但未能将其转换为 OneBox 卡片(即保留原链接)时,如果该链接前面没有空格,链接点击计数器将不会工作。我刚刚编辑了用户的一篇文章,其中正好出现了这种情况,我添加了一个空格,计数器就开始显示了。:wink:

2 个赞

@dax 对于为何此设置是显示 onebox 点击徽章的必要条件,您有什么看法吗?我可以为我的站点更改此设置,但若要使其发挥作用,我不得不批量更改 7400 多名用户的设置,而我并不想这么做,因为这只会引起混淆。

2 个赞

我也不明白你为何要费心,因为单盒点击量无论如何都不会被计入,除非是那些点击最不显眼链接的少数人。这意味着,你本可以选择不显示任何点击数据,却反而展示了错误的数据(人为偏低),在我看来,这要糟糕得多。

1 个赞

说得对——理想情况下,onebox 也应该统计其标题的点击次数。

4 个赞

我创建了一个主题组件,用于统计其标题的点击次数。

3 个赞

这以前确实有效。Onebox 点击量在我们网站上会被统计。但后来不知从何时起就不起作用了。我记不清确切时间,但我觉得已经不止一年了。我认为这是一个回归问题,而不是真正的功能请求。

@evantill,能否详细说明一下你的组件具体是做什么的?

1 个赞

这看起来是一小段 JavaScript,假设它能正常工作,可以直接添加到核心代码中。

只是一个简单的脚本,用于将点击 onebox 内部链接的操作替换为点击标题栏链接的操作。

    // 如果点击发生在 onebox 主体内部
    $('.onebox-body a').on('click.onebox-track-url', function(event) {      
      event.preventDefault(); // -> 忽略 onebox 内部的点击事件
      var headerUrl = $(event.target).closest('.onebox').find('header a'); // 选择标题栏链接
      // 改为点击标题栏链接以更新追踪计数器
      if (headerUrl.length > 0) {
        headerUrl[0].click(); // -> 模拟点击标题栏链接
      }
    });
</script>
1 个赞

看起来 onebox 主体内的链接未被追踪:

如果链接位于 .onebox-body 中,isValidLink() 会返回 false。

1 个赞

一个解决方案是在 onebox 中添加一个新设置,以启用对 onebox 内部链接的跟踪,并在该情况下为 onebox 内的链接添加 track-link 类?

1 个赞

从这个讨论串中,我不清楚停止追踪 onebox 点击是有意为之的决定,还是仅仅是一个可以提交拉取请求(pull request)来修复的 bug。

3 个赞

将拟议的修复方案描述为以下内容是否正确?

“如果链接位于 onebox 主体内,则查找该 onebox 的 URL。如果该 URL 与链接相同,则统计点击次数;否则忽略。”

4 个赞

Onebox 中除了被 oneboxed 的 URL 之外,还能包含其他链接吗?我原以为是不行的。

我在下方的提交中添加了此功能

5 个赞