在页面里显示每部影视作品的浏览量,显示方法如下所示:

首先我们要在内容模板文件里增加显示区:

然后到后保存下文章页的内容页的模版,然后去看下对我们的样式有没有什么影响:

看到这里我们就已经成功一点点噢,样式没一点的影响,不过革命尚未成功,还需继续努力:

我们做之前可以去看下dedecms他们原先是怎么去实现的,看下他们的模版文件:

很明显就看得出他们是嵌套了一段js的代码,向count.php发送了一段请求,这里很显然就是在一个静态模版里面实现部分数据动态的变化。。

现在在市场上我们常见的静态页面中实现局部动态数据变化的主流还是2种方法:

1.用javascript来进行实现,原理如下所示:

第二种方法就是我们的jquery的ajax请求,示意图如下:

然后我们将他的复制过来:

然后在后台更新下文章页模版文件:

然后再去访问看看:

刷新一下看看是否发生了变化:

果然发生了变化。。。

我们来分析一下他是如何实现的:

这里有一个count.php的文件,那么我们来看下他在那长成啥样的,我们毕竟有了静态化模版文件,那么我到到静态化模版文件里看下他的详细路径在哪:

然后搜索“浏览量”。。

这样即可知道他的路径在哪里了,然后我们按照这个路径对他打开看看:

他是存放在我们的plus(这一般都是插件程序的开发目录),我么在这里创建一个mycount.php来自己实现一个浏览次数统计程序,代码如下所示:

<?php
//这里引入了最常用的文件common.inc.php,这里定义了很多的常量而且还自身引入了很多文件
require_once(dirname(__FILE__)."/../include/common.inc.php");
//这里主要是看下我们的d盘有没有生成文件,如果生成文件,证明我们的mycount.php成功被调用到了
file_put_contents("d:/my.log",'yyyy');

然后修改下article_movie.htm(文章页的模版文件)如下所示

<li>浏览量:<script src="{dede:field name='phpurl'/}/mycount.php?flag=update&aid={dede:field name='id'/}" type='text/javascript' language="javascript">
</script>次</li>

然后更新下模版文件:

更新成功后如下所示:

如果没显示,这也是正常的,然后我们到D盘看下有没生成my.log文件:

这里也成功生成了,看下里面的东西是否和我们刚才在mycount.php里面所写的一样:

如果是一样证明我们的mycount.php成功的被调用起来了,继续写mycount.php了,代码如下所示:

<?php
//这里引入了最常用的文件common.inc.php,这里定义了很多的常量而且还自身引入了很多文件
require_once(dirname(__FILE__)."/../include/common.inc.php");
//这里主要是看下我们的d盘有没有生成文件,如果生成文件,证明我们的mycount.php成功被调用到了
//file_put_contents("d:/my.log",'yyyy');
$flag = $_GET['flag'];
if($flag == 'update'){
//首先获取文档的id
$aid = $_GET['aid'];
//点击率是放在主表里面的,因为每个商品或者每篇文章都有点击率这个属性的
$sql = "update dede_archives set click=click+1 where id={$aid}";
//测试下sql语句是否正确
//file_put_contents("d:/my.log",$sql);
//查看下数据类型,我们发现是DedeSqli的
//file_put_contents("d:/my.log",serialize($dsql));
//执行修改让浏览次数添加1
$dsql->ExecuteNoneQuery($sql);
//查询下数据库看下得到多少的流浪次数,并返回给浏览器
$sql = "select click from dede_archives where id={$aid}";
$row = $dsql->GetOne($sql);
if(is_array($row)){
//把这个结果返回给浏览器,但是在得的cms里面这这方法是不会正常显示的,因为样式会错位
//echo $row['click'];
//如果请求方式是<script src="" type=""></script>为了样式不变则要用如下返回方式
echo "document.write('".$row['click']."');\r\n";
}
}

夺命雷公狗---DEDECMS----28dedecms浏览次数的完成的更多相关文章

  1. 夺命雷公狗---微信开发62----所以memcache对access_token进行全局缓存优化

    公众号调用接口并不是无限制的,为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下, 每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到错误信息,造成调用失败. 我们也 ...

  2. 夺命雷公狗-----React---12--添加类和样式

    <!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...

  3. 夺命雷公狗-----React---11--添加css样式的方法

    <!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...

  4. 夺命雷公狗-----React---10--组建嵌套进行数据遍历

    先写一个组建... 然后进行嵌套.. <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  5. 夺命雷公狗-----React---9--map数据的遍历

    比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html l ...

  6. 夺命雷公狗-----React---8--react官方提供的组建实现双向绑定

    首先要引入她.. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. 夺命雷公狗-----React---7--组建的状态props和state

    props:组建初始要渲染的数据,他是不可以改变的 state:组建状态发生改变,调用render重新渲染数据 我们来写一个例子: <!DOCTYPE html> <html lan ...

  8. 夺命雷公狗-----React---6--props多属性的传递

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 夺命雷公狗-----React---5--props对象的传递

    提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  10. 夺命雷公狗-----React---4--props变量的传递

    提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

随机推荐

  1. C#中string.Empty ,"" , null 区别

    引言 String类型作为使用最频繁的类型之一,相信大家都非常熟悉,对于string赋予空值,通常有以下三种方式: String str1=null; String str2=””; String s ...

  2. MAGENTO程序结构图

    Magento程序结构图(Program Structure Diagram): /app – 程序根目录 /app/etc – 全局配置文件目录 /app/code – 所有模块安装其模型和控制器的 ...

  3. asp.net跳转页面的三种方法比较(转)

    2006-10-20 14:32 [小 大] 来源: 博客园 评论: 0分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游戏 今天老师讲了三种跳转页面的方法,现 ...

  4. shell 统计GMT0 时区的数据

    和某个供应商核对数据,对方是GMT+0时区,我方报表默认北京时间,无法修改为GMT0, 对excel中按照小时级别的数据导出到excel处理,然后转为文本文件,shell转为GMT0进行统计: 前期处 ...

  5. 【转】Android Canvas的save(),saveLayer()和restore()浅谈

    Android Canvas的save(),saveLayer()和restore()浅谈 时间:2014-12-04 19:35:22      阅读:1445      评论:0      收藏: ...

  6. JS操作cookie以及本地存储(sessionStorage 和 localStorage )

    JS操作cookie cookie的操作用两种方式 1.substring //创建cookie function setCookie(name,value,expires,path,domain,s ...

  7. 异步刷新tableView

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [self.tableView rel ...

  8. COLUMN_VALUE Pseudocolumn

    With below three situation, we can use the pseudocolumn column_value to refer the column value. an X ...

  9. Python-S13作业-day3-之编辑ha.conf配置文件

    Python-S13作业-day3-之编辑ha.conf配置文件 需求: 让用户输入字符串类型的字典,实现对配置文件指定,backend  www.oldboy.org下的内容进行 * 查询 * 增加 ...

  10. Android --账户注销

    参考博客:android如何实现注销功能 Intent logoutIntent=new Intent(SettingActivity.this,LoginActivity.class); //在执行 ...