最近一个项目需要用到 记得以前收藏过一个浏览记录帖子 就看了一下 发现是2008的版本 那么小做修改 变成V9版本的了 感谢原作者.
20131113更新只能读取一个浏览记录BUG 改代码时不小心改到了….居然没人反馈啊
作者原帖 http://bbs.phpcms.cn/forum.php?mod=viewthread&tid=136719
论坛上看见过浏览记录的解决方案。但如果要实现的话需要修改源文件,并且需要动态页面才可以调用。且没有详细的操作步骤。
相信会有不少人需要,在参考了PC文章的浏览记录后,解决如下:
1、不需要改动原来文件。新增一个文件及一个模板文件。
2、静态页面AJAX调用。
步骤:
1、根目录下新增文件readid.php
<?php
header("Cache-Control: no-cache, must-revalidate");
include 'phpcms'.DIRECTORY_SEPARATOR.'base.php';
pc_base::load_sys_class('param', '', 0);
$contentid = isset($_GET['contentid']) ? intval($_GET['contentid']) : 0;
$readid = param::get_cookie('readid');
$readid = intval($readid);
$action = $_GET['action'];
if($readid)$readwhere = $readid;
switch($action)
{
case 'read':
if($contentid){
if($readid)
{
$readid = $contentid.','.$readid;
$tmp = explode(",",$readid);
$tmp = array_unique($tmp);
while(count($tmp) > 10)array_pop($tmp);
$readid = implode(",",$tmp);
}
else $readid = $contentid;
param::set_cookie('readid',$readid,time()+3600*365*24);
}
break;
case 'list':
include template('content', 'read_fang');
break;
}
?>
2、新增模板文件read_fang.html
<ul>
{if $readwhere}
{pc:get sql="SELECT * FROM `phpcms_news` WHERE id IN ($readwhere) AND status = '99' ORDER BY FIND_IN_SET(id,'$readwhere')" num="10"}
{loop $data $key $r}
<li><a href="{$r[url]}" title="{$r['title']}">{$r['title']}</a></li>
{/loop}
{/pc}
{else}
<li>您还没有浏览过信息</li>
{/if}
</ul>
3、静态页面调用:
(1)、需要调用的内容页面模板文件,如show.html,加上:
<script language="JavaScript" src="readid.php?contentid={$contentid}&action=read"></script>
(2)、浏览页调用:
先添加JS代码:
<script type="text/javascript">
$(document).ready(function(){
$('#readhouse').load("readid.php?action=list");
});
</script>
在需要浏览记录显示的地方,添加:
<div id="readhouse"><img src="images/loading.gif" align="absmiddle"> 数据加载中</div>