Emlog 按字母排序的标签页源码

接触emlog也快一个月了,不敢说已经完全掌握,但还算了解吧,也可以自己摸索一些功能。


熟悉wordpress的都知道,wordpress有各种漂亮的标签页,而emlog,搜索了下,找到一些,看起来很是简单,都是直接调用emlog的全局缓存变量里的直接foreach输出,和emlog边栏的标签没什么两样,于是就自己移植了wordpress的。

效果:点击查看

代码如下:


首先,要修改的是主题文件夹下的module.php文件,在里面添加一下代码:


//根据标题首字母输出标签页面{
//输出标签
function specs_show_tags() {
		global $CACHE;
		$tag_cache = $CACHE->readCache('tags');
		foreach($tag_cache as $value){
			for($i = 65; $i <= 90; $i++){
				if(specs_pinyin($value['tagname']) == chr($i)){
					$r[chr($i)][] = $value;
				}
			}
			for($i=48;$i<=57;$i++){
				if(specs_pinyin($value['tagname']) == chr($i)){
					$r[chr($i)][] = $value;
				}
			}
		}
		ksort($r);
		$output = "<ul id='tag-letter'>";
		for($i=65;$i<=90;$i++){
			$tagi = $r[chr($i)];
			if(is_array($tagi)){
				$output .= "<li><a href='#".chr($i)."'>".chr($i)."</a></li>";
			}else{
				$output .= "<li><a class='none' href='javascript:;'>".chr($i)."</a></li>";
			}
		}
		
		for($i=48;$i<=57;$i++){
			$tagi = $r[chr($i)];
			if(is_array($tagi)){
				$output .= "<li><a href='#".chr($i)."'>".chr($i)."</a></li>";
			}else{
				$output .=  "<li><a class='none' href='javascript:;'>".chr($i)."</a></li>";
			}
		}
		$output .= "</ul>";
		
		$output .= "<ul id='all-tags'>";
		for($i=65;$i<=90;$i++){
			$tagi = $r[chr($i)];
			// print_r($tagi);
			if(is_array($tagi)){
				$output .= "<li id='".chr($i)."'><h4 class='tag_name'>".chr($i)."</h4><div class='tag-list clearfix'>";
				foreach($tagi as $tag){
					$output .= "<a href='".Url::tag($tag['tagurl'])."'>".$tag['tagname']."<span class='number'>(".$tag['usenum'].")</span></a>";
				}
				$output .= "</div></li>";
			}
		}
		// echo $output;
		for($i=48;$i<=57;$i++){
			$tagi = $r[chr($i)];
			if(is_array($tagi)){
				$output .= "<li id='".chr($i)."'><h4 class='tag_name'>".chr($i)."</h4><div class='tag-list clearfix'>";
				foreach($tagi as $tag){
					$output .= "<a href='".Url::tag($tag['tagurl'])."'>".$tag['tagname']."<span class='number'>(".$tag['usenum'].")</span></a></div>";
				}
				$output .= "</div></li>";
			}
		}
		$output .= "</ul>";

    echo $output;
}


//PHP获取汉字拼音首字母
function specs_getfirstchar($s0){   
	$fchar = ord($s0{0});
	if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0{0});
	$s1 = iconv("UTF-8","gb2312", $s0);
	$s2 = iconv("gb2312","UTF-8", $s1);
	if($s2 == $s0){$s = $s1;}else{$s = $s0;}
	$asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
	if($asc >= -20319 and $asc <= -20284) return "A";
	if($asc >= -20283 and $asc <= -19776) return "B";
	if($asc >= -19775 and $asc <= -19219) return "C";
	if($asc >= -19218 and $asc <= -18711) return "D";
	if($asc >= -18710 and $asc <= -18527) return "E";
	if($asc >= -18526 and $asc <= -18240) return "F";
	if($asc >= -18239 and $asc <= -17923) return "G";
	if($asc >= -17922 and $asc <= -17418) return "H";
	if($asc >= -17417 and $asc <= -16475) return "J";
	if($asc >= -16474 and $asc <= -16213) return "K";
	if($asc >= -16212 and $asc <= -15641) return "L";
	if($asc >= -15640 and $asc <= -15166) return "M";
	if($asc >= -15165 and $asc <= -14923) return "N";
	if($asc >= -14922 and $asc <= -14915) return "O";
	if($asc >= -14914 and $asc <= -14631) return "P";
	if($asc >= -14630 and $asc <= -14150) return "Q";
	if($asc >= -14149 and $asc <= -14091) return "R";
	if($asc >= -14090 and $asc <= -13319) return "S";
	if($asc >= -13318 and $asc <= -12839) return "T";
	if($asc >= -12838 and $asc <= -12557) return "W";
	if($asc >= -12556 and $asc <= -11848) return "X";
	if($asc >= -11847 and $asc <= -11056) return "Y";
	if($asc >= -11055 and $asc <= -10247) return "Z";
	return null;
}
function specs_pinyin($zh){
	$ret = "";
    $s1 = iconv("UTF-8","gb2312", $zh);
    $s2 = iconv("gb2312","UTF-8", $s1);
    if($s2 == $zh){$zh = $s1;}
    $s1 = substr($zh,$i,1);
    $p = ord($s1);
    if($p > 160){
        $s2 = substr($zh,$i++,2);
        $ret .= specs_getfirstchar($s2);
    }else{
        $ret .= $s1;
    }
	return strtoupper($ret);
}

//标签页end }
之后,在主题文件夹中新建一个名为tag.php文件,复制page.php的内容粘贴进去,把里面的:


<?php echo $log_content; ?>
<?php blog_comments($comments); ?>
<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?>
替换成
<div class="tags-page"><?php specs_show_tags(); ?></div>
保存



最后,新建个页面,模板和别名都填上tags,就可以了,访问:http://你的域名/tags,就可以看到内容,但是,没用样式啊,那在此我提供我博客的通用样式吧!把我的样式复制到主题文件夹下的css文件就可以了,需要改成怎样的这个需要大家自己发挥了


/*tags*/
#tag-letter{padding: 0 15px}
#tag-letter li{display: inline-block;margin: 10px}
#tag-letter li a{border: 1px solid #ee9285;color: #ee9285;padding: 5px 6px;text-align: center;width: 20px;display: inline-block;-webkit-transition: all .3s ease-in-out;transition: all .3s ease-in-out}
#tag-letter li a:not(.none):hover{border: 1px solid #ee9285;color: #fff;background-color: #ee9285}
#tag-letter li .none{background-color: #fafafa;border: 1px solid #EEE;color: #DDD;cursor: not-allowed}
#all-tags li{margin: 20px 35px}
#all-tags li:last-child .tag-list{border-bottom: 0}
#all-tags .tag-name{font-size: 1.8rem}
#all-tags .tag-list{margin:0 30px;padding-bottom:20px;border-bottom: 1px dotted #ee9285;}
#all-tags .tag-list a{color: #333;padding: 2px 8px;float: left;}
#all-tags .tag-list a:hover{color:#ee9285}
#all-tags .tag-list a .number{font-size: .8rem;position: relative;top: -6px;margin-left: 5px}
.clearfix:before, .clearfix:after {content: "";display: table;}
.clearfix:after {clear: both;}
/*tags*/





正文到此结束

随便看看

发表评论

    avatar
    微笑 大笑 拽 大哭 奸笑 流汗 喷血 生气 囧 不爽 晕 示爱 卖萌 吃惊 迷离 爱你 吓死了 呵呵