没事加个没啥用的功能(很蛋疼。。)就是记录访客看过的文章,留个足迹。这也许是真正意义上的足迹吧,看过文章就给记录,不管你是潜水也好,水车也好。实现原理是给客户端浏览器加个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

评论分页: 1 ... 4 5 6

发布评论

邮箱(必填)

换个背景