小心爱与不爱之间 离得不是太远

WordPress最新评论高度自适应无缝滑动显示

技术文档 124627浏览 0评论

大家可以看看新浪微博首页大家正在说,里面会将最新的内容进行滑动展示,感觉很不错。今天在网上闲逛时,看到了LiveMe优秀评论频道,而且他还提供了可以供实现的代码,不过只是一个演示的,没有具体实现。于是动手弄了一下,本站的演示效果可见TOP页

具体步骤如下:

1、将下面的JS代码存为comment-slider.js,放入你的博客主题目录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function H$(i) {return document.getElementById(i)}
function H$$(c, p) {return p.getElementsByTagName(c)}
var slider = function () {
	function init (o) {
		this.id = o.id;
		this.at = o.auto ? o.auto : 3;
		this.o = 0;
		this.pos();
	}
	init.prototype = {
		pos : function () {
			clearInterval(this.__b);
			this.o = 0;
			var el = H$(this.id), li = H$$('li', el), l = li.length;
			var _t = li[l-1].offsetHeight;
			var cl = li[l-1].cloneNode(true);
			cl.style.opacity = 0; cl.style.filter = 'alpha(opacity=0)';
			el.insertBefore(cl, el.firstChild);
			el.style.top = -_t + 'px';
			this.anim();
		},
		anim : function () {
			var _this = this;
			this.__a = setInterval(function(){_this.animH()}, 20);
		},
		animH : function () {
			var _t = parseInt(H$(this.id).style.top), _this = this;
			if (_t >= -1) {
				clearInterval(this.__a);
				H$(this.id).style.top = 0;
				var list = H$$('li',H$(this.id));
				H$(this.id).removeChild(list[list.length-1]);
				this.__c = setInterval(function(){_this.animO()}, 20);
				//this.auto();
			}else {
				var __t = Math.abs(_t) - Math.ceil(Math.abs(_t)*.07);
				H$(this.id).style.top = -__t + 'px';
			}
		},
		animO : function () {
			this.o += 2;
			if (this.o == 100) {
				clearInterval(this.__c);
				H$$('li',H$(this.id))[0].style.opacity = 1;
				H$$('li',H$(this.id))[0].style.filter = 'alpha(opacity=100)';
				this.auto();
			}else {
				H$$('li',H$(this.id))[0].style.opacity = this.o/100;
				H$$('li',H$(this.id))[0].style.filter = 'alpha(opacity='+this.o+')';
			}
		},
		auto : function () {
			var _this = this;
			this.__b = setInterval(function(){_this.pos()}, this.at*1000);
		}
	}
	return init;
}();//以上是评论轮回展示js

2、将如下CSS内容复制到你的主题的style.css中(借鉴了LiveME的,大家根据需要进行必要的修改):

1
2
3
4
5
6
7
8
.home-talking{width:635px;float:left;margin:16px 0 10px 5px;}
.say-also,#home-start-more{font-size:12px;font-weight:400;font-family:Tahoma, Arial, sans-serif;float:right;padding-right:8px;}
.home-comment-slider{position:relative;float:left;width:640px;height:270px;overflow:hidden;margin:-5px 0 0 -2px;}
.home-comment-slider ul li{list-style:none;}
.home-slider{position:absolute;width:610px;padding:0 20px;}
.home-slider li{font-size:13px;margin-left:-7px;border-bottom:thin dotted #D0D0D0;overflow:hidden;line-height:17px;padding:5px 0;}
.home-slider li:hover{background:#F3F3EA;}
.home-bottomcover{position:absolute;background:url(http://img.t.sinajs.cn/t3/style/images/tlogin/halftransp.png);background-repeat:repeat-x;height:35px;width:482px;overflow:hidden;pointer-events:none;_background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.t.sinajs.cn/t3/style/images/tlogin/halftransp.png',sizingMethod='crop');margin:235px 0 0 8px;}.

3、在相应的位置添加如下代码(可以是页面或者侧边栏等),要注意你的js代码存放的位置,我的是放在主题下面的JS目录下

1
2
3
4
5
6
7
8
9
10
11
<div class="home-talking">
           <h2>他们正在说……<a class="say-also" target='_blank' href="/?page_id=489">| 我也想说»</a></h3>
        </div>
        <script type="text/javascript"src="<?php bloginfo('template_url')?>/js/comment-slider.js"></script>
        <div class="home-comment-slider">
            <ul id="slider" class="home-slider"> 						
                <?php looskyRecentcomments('number=25&status=approve',400);?>
            </ul>
            <div class="home-bottomcover"></div>
        </div>
		<script type="text/javascript">new slider({id:'slider'})</script>

4、函数looskyRecentcomments实现调用最新评论的功能,提供一个仅供参考,可支持缓存功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function looskyRecentcomments($args='number=5&status=approve',$length=25){
 
	$cacheID = md5($args);
 
	if($output = wp_cache_get('recentComments_'.$cacheID, 'loosky')){
		echo $output;
		return;
	}
 
	$rcms = get_comments($args);
 
	//print_r($rcms);return;
	if(empty($rcms)){
		_e('No Data Found','inove');
		return;
	}
	//历遍数据
	$output = '';
	foreach( $rcms as $rcm ){
		// 如果访客昵称为空, 则将显示名字设为 "Anonymous"
		$author = $rcm->comment_author ? $rcm->comment_author : __('Anonymous', 'inove');
 
		$content = looskyStriptags( $rcm->comment_content);
 
		$l_excerpt = looskySubstr( $content, 200 );
		$l_excerpt = preg_replace('/["\']/', '', $l_excerpt);
		$s_excerpt = convert_smilies( looskySubstr( $content, $length));
 
		$comment_author_link = '<a href="'.get_comment_link($rcm).'" rel="external nofollow" title="'.$l_excerpt.'">'.$author.'</a>';
 
		if($rcm->comment_type == ''){
			$output .= '<li class="r_item"><div class="row"><span class="r_name">'.$comment_author_link.'</span><span class="r_excerpt">'.$s_excerpt.'</span></div><div class="clear"></div></li>'."\n";
		}elseif($rcm->comment_type == 'pingback'){
			$output .= '<li class="r_item r_pingback"><span class="rc_label name">' . __('Pingback:') . '</span>'.$comment_author_link.'</li>';
		}elseif($rcm->comment_type == 'trackback'){
			$output .= '<li class="r_item r_traback"><span class="rc_label name">' . __('Trackback:') . '</span>'.$comment_author_link.'</li>';
		}
	}
	wp_cache_add('recentComments_'.$cacheID. $output, 'loosky');
	echo $output;
}

OK,如果需要实现别的功能,你可以进行相应的修改,Enjoy yourself!

更新:

2011-6.27 14:02:对looskyRecentcomments函数增加了设置字符截断长度的功能,调用方式为:
< ?php looskyRecentcomments('number=25&status=approve',400);?>
其他的参数可参考get_comments函数

转载请注明:自由的风 » WordPress最新评论高度自适应无缝滑动显示

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (11)

  1. 老板,你的looskyRecentcomments()方法是放在function.php里面的吗?还是单独写了一个文件啊?请指导一下,菜鸟~ :gl:

    nick2011-07-05 22:02 回复
    • @ nick
      都可以啊,如果单独写个文件,那要在function.php中包括这个文件。

      自由的风2011-07-05 22:08 回复
  2. 麻烦看看我的是这么回事? 我的不是向下滑动 而是一个一个往下蹦 感觉不好看
    我放到我的侧栏的最新评论上了 麻烦去看看是什么原因

    iSayme2011-07-11 12:25 回复
  3. 找到了 添加一个 position:relative就好了 不知道是什么原因

    iSayme2011-07-11 12:51 回复

  4. 你的肿么没有动啊?

    浩子2011-07-11 21:31 回复
  5. Fatal error: Call to undefined function looskystriptags() in /home/weiphpco/public_html/wp-content/themes/default/functions.php

    怎么回事?出现这个错误

    微PHP-鸿枫业2011-12-15 21:14 回复
  6. 原地址失效,终于在你这里找到了,多谢!

    有点蓝2014-11-04 10:59 回复