没事加个没啥用的功能(很蛋疼。。)就是记录访客看过的文章,留个足迹。这也许是真正意义上的足迹吧,看过文章就给记录,不管你是潜水也好,水车也好。实现原理是给客户端浏览器加个cookie,每访问一次记录一次,服务器表示无压力。。。
demo见本站单篇文章底部右下角;您的足迹
首先需要以下函数加到function.php
<?php function save_posts_viewed($maxCount=10){ global $post; $done=false; //新列 $newList=array(); $postsViewed=""; if(isset($_COOKIE['postsViewed'])){ $postsViewed=$_COOKIE['postsViewed']; } if(isset($_COOKIE['postsViewed'])&&$postsViewed!=array()){ $repeat=null; $repeated=false; foreach ($postsViewed as $k=>$p){ if($p['ID']==$post->ID){ $repeat=$p; $repeated=true; } else $newList[]=$p; } if($repeated) $newList[]=$repeat; else $newList[]=array( 'ID'=>$post->ID, 'post_title'=>$post->post_title, 'post_date'=>$post->post_date, 'viewed_date'=>time() ); }else{ $newList[]=array( 'ID'=>$post->ID, 'post_title'=>$post->post_title, 'post_date'=>$post->post_date, 'viewed_date'=>time() ); } if(count($newList)>$maxCount){ $newList2=array(); $m=1; foreach ($newList as $n){ if($m>count($newList)-$maxCount) $newList2[]=$n; $m++; } $newList=$newList2; } creatCookiesList($newList); } function creatCookiesList($newList){ //setcookie("postsViewed",'', COOKIEPATH, COOKIE_DOMAIN); foreach ($newList as $k=>$n){ setcookie("postsViewed[$k][ID]",$n['ID'],time()+3600*24*365,COOKIEPATH, COOKIE_DOMAIN); setcookie("postsViewed[$k][post_title]",$n['post_title'],time()+3600*24*365, COOKIEPATH, COOKIE_DOMAIN); setcookie("postsViewed[$k][post_date]",$n['post_date'],time()+3600*24*365, COOKIEPATH, COOKIE_DOMAIN); setcookie("postsViewed[$k][viewed_date]",$n['viewed_date'],time()+3600*24*365, COOKIEPATH, COOKIE_DOMAIN); } } function get_posts_viewed(){ if(isset($_COOKIE['postsViewed'])){ $list=$_COOKIE['postsViewed']; $num=0; for ($i=count($list)-1;$i>=0;$i--){ $num++; ?> <li style="height:16px;"><span style="margin-right:5px;"><?php echo $num;?>?</span><a href="<?php echo get_permalink($list[$i]['ID'])?>" title="您在 <?php echo date('Y-m-d h:i',$list[$i]['viewed_date'])?>观看了这篇文章"><?php echo $str=$list[$i]['post_title']?></a></li> <?php } }else {?> <li>你没有浏览过任何文章或者你没有开启cookies。</li> <?php } }
调用方法:
1、先在single.php主循环里面加上:
<?php save_posts_viewed(10);?>
数字10是记录数量,这个可以自定义。
2、然后在页面任意适合的地方,比如在foot里面输出:
<?php get_posts_viewed();?>
具体位置和样式就看css怎么写了。
以上方法来自 I-will-Html3AndCss3
好吧,觉得无聊的可以试试。
Over