高手可以绕道了,呵呵!最近有不少人问到博客首页两列的随机友情链接是如何实现的,想想干脆写出来,大家看一下就明白了。当然你也可以用后台的 Widgets 来实现,但明显 Widgets 可操作性不强,无法控制显示几个,随着链接的越来越多,看着那么多的链接会比较的头疼。
另外如果你是用 iNove 的话,我的建议是你不要启用任何的 Widgets ,因为侧边栏的调用函数作者已经写好了,而且我认为非常的合理,如首页调用随机文章,文章页调用最新文章等等。像我现在的主题就是0个Widgets,然后另外自己加了一个友情链接的函数而已。
其实随机友链的实现也非常的简单,调用一个 wordpress 的 wp_list_bookmarks 函数,然后用几行 CSS 控制样式实现两列显示就可以了!
那么首先介绍一下 wp_list_bookmarks 这个函数:函数基本调用方式如下:
默认情况下会显示全部的链接,当然函数中还有很多的参数以供我们使用,如 orderby (链接排序方式),limit(最多显示几个链接),具体可以参考官方的说明文档。也可以去参考下:wp_list_bookmarks 函数详解。
那么我们今天介绍的只要用到几个参数就可以了,其余的都默认就OK!我是这样写的:
这样就用列表的方式调用了没有标题的16个随机的友情链接,你可以根据自己的情况进行修改。当然你还要根据自己的皮肤情况,添加到皮肤的 sidebar.php 文件中。
只需要去找一下 sidebar.php 文件的规律,或者复制一个已经写好的模块,把其中的函数和标题替换了就OK!我是这样添加的:
<h3>Links</h3>
<div class="content" id="links">
<ul><?php wp_list_bookmarks('title_li=&categorize=0&orderby=rand&limit=16'); ?></ul><div id="morelink"><a href="http://www.xiaorsz.com/friend-link/">more»</a></div><div class="fixed"></div>
</div>
</div>
当然,其中除了添加相当的函数外,我还添加了 more 的链接,用于显示所有的链接,修改为你自己的链接页面就行了。还为相应的 div 添加了 ID ,便于在 CSS 中进行控制。结合自己的模版添加到对应的位置就可以了!
另外如果你不想在所有的页面都显示,而只想在首页显示的话只需用 wp 的函数判断一下:
<div class="widget">
<h3>Links</h3>
<div class="content" id="links">
<ul><?php wp_list_bookmarks('title_li=&categorize=0&orderby=rand&limit=16'); ?></ul><div id="morelink"><a href="http://www.xiaorsz.com/friend-link/">more»</a></div><div class="fixed"></div>
</div>
</div><?php } ?>
我加了 if ( is_home() ) 的判断条件,即如果是首页的话才会显示如下的代码,其它页刚不会显示。当然扩展一下还有如:is_single() 文章页,is_page() Pages页,is_category() 存档页等,可以进行非常详细的控制。具体可参考官方文档。
现在就可以在首页随机显示16个链接了,但并没有分两行显示,这时就要用到强大的CSS来控制了。在你的 style.css 文件中添加如下样式:
background:transparent none repeat scroll 0 50%;
float:left;
padding-left:0;
width:50%;
}
#links li a{
background:transparent url(img/icons.gif) no-repeat scroll 0 -320px;
padding-left:22px;
}
#morelink a
{
float:right;
}
当然,这是根据我自己的情况添加的,关键的就两个属性,一个是让 li float:left ,即左浮动,另外一个就是 width:50% ,让每个 li 占一半的宽度,很明显就是两列了,当然你也可以设置成25%,然后就是四列了!!然后又让 morelink 也就是那个 more 右浮动,它就靠右对齐了。
上面的都搞定后就是我博客现在的样子,大家可以根据自己的情况进行修改!如有疑问请留言,我会尽量帮忙解决……哈哈!
PS:文章写到一半居然断电了,我又禁用了自动保存,那个忧伤啊,以为要重新来过了,打开后居然文章还在,而且显示 Post saved. 额?厉害,难道是 WP2.7 的新功能?!!
Update:如果觉得上面添加代码比较麻烦的话,建议大家使用 Hot Friends 插件,些插件支持调用随机的友情链接,数目可以在后台设置,而且支持 Widgets ,也非常的方便,不用去修改 sidebar.php 文件,但如果想实现两列显示,还是修改对应的 CSS,这个参考上面的介绍。


















受用,赶明我也用下,我现在的链接太多了
http://wordpress.org/extend/plugins/wp-multicollinks/
无意中看到了这款插件也是mg12功效和这篇文章的功能完全一样,所以过来回复下
PS:还有就是
不清楚是不是设置ctrl+enter快捷回复的原因,在IE6环境下完全变形了侧边栏跑到文章底部来咯,因为我今天在本地测试ctrl+enter快捷回复也是这么个情况,后来就没搞起.
@坏人 Huài Rén 是啊,这个插件是可以实现同样的功能,以前也用过,但好像效果不是我想要的,就没用了。那个跟ctrl+enter应该没什么关系吧?你设置了ctrl+enter后就不正常了?
每次都能学到新的东西在你这里
@xiaorsz
@坏人 Huài Rén
谢谢提醒,我还真没发现呢!不过我的是因为Related Posts这个东西搞的鬼,昨天我改了些代码改错了,现在已经好了。你现在还是在下面吗?我去看下!!
@xiaorsz
人气超旺啊!呵呵
不过,这个暂时没有想用的意思…不过先收藏着先!
人气真旺啊,来顶下~
突然发现你的代码高亮更漂亮了~
没用CoolCode了?
这个看上去真美诶~呵呵
@Zoll 还是 coolcode 哈!只是改了样式!!呵呵,CSS 是很强大的!!
其实mg12的一个插件就可以搞定
学习了!留名备用!
很好很强大,收藏了,指不定什么时候想用呢。
@Zoll 其实问题很多的!
随机链接是可以很好解决首页过长问题,但是对于某些做链接的博友来说,可能不那么友善,怕影响pr
@莫良 那你可以给他们加上 rel=nofollow ,然后google就不会理会这些链接了!!
这个功能不错
不过人家连接的可能不喜欢咯
刚好想要学习…
-_- 额 width 50% 我怎么没想到呢? 搞得老去做算术题了
学到真东西了,烦了三天的问题今天得到解决了。支持一下。呵呵。
@CoxGo 谢谢支持,呵呵!!解决了就好,欢迎常来!!
学习了···回复的效果真赞的说···
如何用下拉列表显示链接(用wp_list_bookmarks()函数)
@wp.wm 不太明白你说的什么意思啊?
就是把友情链接不用无序列表显示,而是用下拉列表显示,通过下拉列表选择某一个链接
哈哈,这个代码救了我一命~~
这下友情链接的css不用烦了~
终于找到了一个好方法啊~~
非常感谢,学习
这个好东西,最近正需要呢。
我怎么实现不了两栏友情链接呢?
试试看
呵呵 很不错 文章收藏了
多谢了,很棒
不错,参考着改了改,效果还行。
你这个真的很实用啊,我正愁没有办法实现呢,竟然用一个50%,就可以实现了,看了才知道,竟然这么简单,差距啊!
这个可以隐身到让分类2列显示。那个插件只能让友链实现。正在找这方面的文章。
[...] 自己在编辑模板里写代码的话,最大的好处就是可以自己动手决定位置和数量等等,而且不用考虑CSS的问题,因为只要照搬一个主题里的css和div格式就行了。wp_list_bookmarks这个wp函数,详细请看官方文档,还有slyar的这篇解释文章。嗯,基本上就是这样了,从谷歌搜索到的这篇文章详细说了实例,我就不费口舌了。 [...]
[...] 原文地址:http://www.xiaorsz.com/wordpress-random-link-2-row-shows/ 发表评论 | Trackback 目前还没有任何评论. [...]
[...] 参考地址:http://www.xiaorsz.com/wordpress-random-link-2-row-shows/ Wordpress, 主题修改 [...]
[...] 5、将侧边栏显示的内容分两列显示。两栏主题的侧边栏一般比较宽,这样可以照顾到比较长的部分,比如文章题目、评论等内容;但是这样一来,内容比较少的部分比如链接和分类,在显示上就有些不均衡,这时候就希望它们能够分两列显示。使用插件当然能够解决这个问题,比如有个叫wp-multicollinks的插件能够将链接分多列显示,但如果有代码的话,有些时候会有更多的选择吧,参考Xiaorsz的文章(这篇文章还说明了如何控制连接显示的个数),有以下一段css代码: #links li { [...]