C# Umbraco CMS:如何制作命中计数器

C# Umbraco CMS:如何制作命中计数器,c#,umbraco,C#,Umbraco,我需要为Umbraco CMS制作一个点击计数器。有办法吗?我想追踪热门文章并将其显示在主页上。天哪,又是90年代初吗?那怎么办?您必须自己实现,这不是现成的。以下是您可以采取的措施: 首先,你需要知道你想要计算什么:一个url被请求的次数?或者查看一个节点的次数(同一个节点可能在多个url下可用)?点击或访问,如果用户重新加载页面,计数器是否应该上升 对于实际实现,您将需要三个部分: 1.客户端请求 无论何时查看本应跟踪的页面,您都需要触发对服务器的请求,该请求允许您增加该页面的计数器 有几

我需要为Umbraco CMS制作一个点击计数器。有办法吗?我想追踪热门文章并将其显示在主页上。

天哪,又是90年代初吗?那怎么办?

您必须自己实现,这不是现成的。以下是您可以采取的措施:

首先,你需要知道你想要计算什么:一个url被请求的次数?或者查看一个节点的次数(同一个节点可能在多个url下可用)?点击或访问,如果用户重新加载页面,计数器是否应该上升

对于实际实现,您将需要三个部分:


1.客户端请求 无论何时查看本应跟踪的页面,您都需要触发对服务器的请求,该请求允许您增加该页面的计数器

有几种方法可以实现这一点,我建议通过包含一个图片请求(1px透明gif)来实现

例如:

<img src="/hits/4882/counter.gif" />

4882是文章页面的节点id,在每个文章页面上都不同

您可能应该在母版页(模板)上包含生成url的代码


2.服务器端处理程序 在服务器端,您需要一个响应图片请求的处理程序。A非常适合这份工作。您可以在单独的项目中创建它,将dll放到bin文件夹中,并添加必要的web.config设置

处理程序必须执行以下操作:

  • 通过使用请求的
    HTTP\u referer
    头,或通过使用url中的信息(如上面示例中图像url中的节点id),识别图片请求来自哪个url/节点
  • 增加该页面的计数器——您需要向数据库中添加一个表,一个简单的表,包含一列url或节点id以及一列请求数
  • 发回图像并确保客户端不缓存它(设置expires标头等)

3.显示最流行的链接 为了显示页面上的热门文章,您需要一个Umbraco,它可以查询数据库中的表并显示最流行的链接。

代码隐藏的代码:

C#

VB.NET

    Protected Sub Page_Load(sender As Object, e As EventArgs)
        Me.countMe()

        Dim tmpDs As New DataSet()
        tmpDs.ReadXml(Server.MapPath("~/counter.xml"))

        lblCounter.Text = tmpDs.Tables(0).Rows(0)("hits").ToString()
    End Sub

    Private Sub countMe()
        Dim tmpDs As New DataSet()
        tmpDs.ReadXml(Server.MapPath("~/counter.xml"))

        Dim hits As Integer = Int32.Parse(tmpDs.Tables(0).Rows(0)("hits").ToString())

        hits += 1

        tmpDs.Tables(0).Rows(0)("hits") = hits.ToString()

        tmpDs.WriteXml(Server.MapPath("~/counter.xml"))
    End Sub
然后,您需要在根目录中有一个xml文件,以使代码也能工作。XML文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<counter>
  <count>
     <hits>0</hits>
  </count>

0

<?xml version="1.0" encoding="utf-8" ?>
<counter>
  <count>
     <hits>0</hits>
  </count>