C# Umbraco CMS:如何制作命中计数器
我需要为Umbraco CMS制作一个点击计数器。有办法吗?我想追踪热门文章并将其显示在主页上。天哪,又是90年代初吗?那怎么办?您必须自己实现,这不是现成的。以下是您可以采取的措施: 首先,你需要知道你想要计算什么:一个url被请求的次数?或者查看一个节点的次数(同一个节点可能在多个url下可用)?点击或访问,如果用户重新加载页面,计数器是否应该上升 对于实际实现,您将需要三个部分:C# Umbraco CMS:如何制作命中计数器,c#,umbraco,C#,Umbraco,我需要为Umbraco CMS制作一个点击计数器。有办法吗?我想追踪热门文章并将其显示在主页上。天哪,又是90年代初吗?那怎么办?您必须自己实现,这不是现成的。以下是您可以采取的措施: 首先,你需要知道你想要计算什么:一个url被请求的次数?或者查看一个节点的次数(同一个节点可能在多个url下可用)?点击或访问,如果用户重新加载页面,计数器是否应该上升 对于实际实现,您将需要三个部分: 1.客户端请求 无论何时查看本应跟踪的页面,您都需要触发对服务器的请求,该请求允许您增加该页面的计数器 有几
1.客户端请求 无论何时查看本应跟踪的页面,您都需要触发对服务器的请求,该请求允许您增加该页面的计数器 有几种方法可以实现这一点,我建议通过包含一个图片请求(1px透明gif)来实现 例如:
<img src="/hits/4882/counter.gif" />
4882是文章页面的节点id,在每个文章页面上都不同
您可能应该在母版页(模板)上包含生成url的代码
2.服务器端处理程序 在服务器端,您需要一个响应图片请求的处理程序。A非常适合这份工作。您可以在单独的项目中创建它,将dll放到bin文件夹中,并添加必要的web.config设置 处理程序必须执行以下操作:
- 通过使用请求的
头,或通过使用url中的信息(如上面示例中图像url中的节点id),识别图片请求来自哪个url/节点HTTP\u referer
- 增加该页面的计数器——您需要向数据库中添加一个表,一个简单的表,包含一列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>