细心的访客可以看见,首页导航条上,加了个封神榜(topten),这里的封神榜,指将来访的访客按评论总数进行排行,也就是类似读者墙插件读取的用户数的前十位。由于tiandi一直使用最近访客showguests插件,所以一直没有使用读者墙这类插件,今天偶尔看见一个js特效SwatchBook,感觉可以拿来和wordpress的评论者数据结合一下,做出一些排名效果,下图为效果图截图。
想看真实效果,请看这里。[flatbtn url=”http://www.tiandiyoyo.com/topten/” size=small type=blue]封神榜示例页面[/flatbtn]
1.打开functions.php文件,插入下面代码以添加showtopten函数,js文件请自行下载获取并调整路径地址。
function showtopten() { echo "<script type='text/javascript' src='http://www.tiandiyoyo.com/wp-content/themes/freshblog/javascripts/modernizr.custom.79639.js'></script>"; global $wpdb; $counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM $wpdb->comments where user_id = '0' and comment_approved = 1 GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 10"); echo "<div class='container'> <section class='main'> <div id='sb-container' class='sb-container'>"; foreach(array_reverse($counts) as $count){ $guesturl = $count->comment_author_url; $guestavatar = get_avatar($count->comment_author_email, 50); $guest = $count->comment_author; echo "<div style='transition: all 700ms ease; -webkit-transition: all 700ms ease; -webkit-transform: rotate(0deg);'><span class='sb-icon'><a href=".$guesturl." target=_blank>".$guestavatar."</a><span style='color:#eee'>".$count->cnt."</span></span><h4><span>".$guest."</span></h4></div>"; } echo "<div style='transition: all 700ms ease; -webkit-transition: all 700ms ease; -webkit-transform: rotate(0deg);'><h4><span>名人堂</span></h4><span class='sb-toggle'>都是千年老妖啊</span><h5><span>★千丝海阁</span></h5></div></div><!-- sb-container --></section></div>"; echo "<script type='text/javascript' src='http://www.tiandiyoyo.com/wp-content/themes/freshblog/javascripts/jquery.swatchbook.js'></script>"; echo "<script type='text/javascript'> $(function() { $( '#sb-container' ).swatchbook( { angleInc : 17, neighbor : 15, initclosed : true, closeIdx : 10 } ); }); </script>"; }
2.打开style.css文件,添加如下样式:
/***************************/ /* topten css */ /***************************/ .sb-container { position: relative; width: 150px; height: 400px; margin: 30px auto 0 auto; } .sb-container div { position: absolute; top: 0; left: 0; width: 130px; background: #fff; height: 400px; border-radius: 5px; box-shadow: -1px -1px 3px rgba(0,0,0,0.1); cursor: pointer; text-align: center; -webkit-transform-origin: 25% 90%; -moz-transform-origin: 25% 90%; -o-transform-origin: 25% 90%; -ms-transform-origin: 25% 90%; transform-origin: 25% 90%; } .sb-container div:last-child:after{ content: ''; position: absolute; bottom: 15px; left: 15px; width: 20px; height: 20px; border-radius: 50%; background: #dddddd; background: -moz-linear-gradient(-45deg, #dddddd 0%, #58535e 48%, #889396 100%); background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#dddddd), color-stop(48%,#58535e), color-stop(100%,#889396)); background: -webkit-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%); background: -o-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%); background: -ms-linear-gradient(-45deg, #dddddd 0%,#58535e 48%,#889396 100%); background: linear-gradient(135deg, #dddddd 0%,#58535e 48%,#889396 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#889396',GradientType=1 ); box-shadow: -1px -1px 1px rgba(0,0,0,0.7), 1px 1px 1px rgba(255,255,255,0.1); } .sb-container div:nth-child(1){ background-color: #ea2a29; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 1px 1px 1px rgba(0,0,0,0.1), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(2){ background-color: #f16729; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 2px 2px 1px rgba(0,0,0,0.1), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(3){ background-color: #f89322; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 3px 3px 2px rgba(0,0,0,0.2), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(4){ background-color: #ffcf14; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 4px 4px 4px rgba(0,0,0,0.2), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(5){ background-color: #ffea0d; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 5px 5px 6px rgba(0,0,0,0.3), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(6){ background-color: #87b11d; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 6px 6px 8px rgba(0,0,0,0.3), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(7){ background-color: #008253; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 7px 7px 10px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(8){ background-color: #3277b5; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 8px 8px 12px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(9){ background-color: #4c549f; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 9px 9px 14px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:nth-child(10){ background-color: #764394; box-shadow: -1px -1px 3px rgba(0,0,0,0.1), 10px 10px 16px rgba(0,0,0,0.4), inset 0 3px 0 rgba(255, 255, 255, 0.2); } .sb-container div:last-child{ background: #111; box-shadow: -1px -1px 3px rgba(0,0,0,0.2), 12px 12px 20px rgba(0,0,0,0.6), inset 2px 2px 0 rgba(255, 255, 255, 0.1); } .sb-container div h4{ color: rgba(255,255,255,0.9); text-shadow: 1px 1px 1px rgba(0,0,0,0.2); font-weight: 700; font-size: 16px; text-transform: uppercase; border-top: 1px dashed rgba(0,0,0,0.1); border-bottom: 1px dashed rgba(0,0,0,0.1); margin: 5px; padding: 5px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .sb-container div:last-child h4{ background: rgba(0,0,0,0.2); box-shadow: 0 1px 1px rgba(255,255,255,0.1); } .sb-container div:last-child h5{ font-size: 50px; white-space: nowrap; text-align: left; margin: 0; padding: 0; position: absolute; line-height: 50px; top: 0px; left: 0px; color: #000; text-shadow: -1px -1px 1px rgba(255,255,255,0.1); text-transform: uppercase; -webkit-transform: rotate(-90deg) translateX(-157%) translateY(73px); -moz-transform: rotate(-90deg) translateX(-157%) translateY(73px); -o-transform: rotate(-90deg) translateX(-157%) translateY(73px); -ms-transform: rotate(-90deg) translateX(-157%) translateY(73px); transform: rotate(-90deg) translateX(-157%) translateY(73px); -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; -ms-transform-origin: 0 0; transform-origin: 0 0; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } span.sb-icon{ display: block; height: 70px; width: 70px; margin: 20px auto; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
3.新建一个页面模板并命名为topten.php,在模板里相应位置调用showtopten函数,例如:
<?php /* Template Name: Topten */ ?> <?php get_header(); ?> <div id="content"> <div id="innercontent"> <h2 class="pagetitle">名人堂</h2> <div class="entry"> <?php showtopten(); ?> </div> <!--end: entry--> </div> </div> <!--end: content--> <?php include('sidebar.php'); ?> <?php get_footer(); ?>
4.最后新建一个页面,启用刚刚创建的topten.php模板。
大功告成啦!来看下实际效果吧:[flatbtn url=”http://www.tiandiyoyo.com/topten/” size=small type=blue]封神榜示例页面[/flatbtn]
文章评分1次,平均分5.0:★★★★★
很酷 就是有点卡