抛弃边栏widget的自动显示

二月 14th, 2011 530 留下评论 阅读评论

博客最近收到不少博友的交换友情链接的提议,当然只要符合要求都给加上了。慢慢问题就出来了,链接多了导致友情链接这个侧栏widget十分的长,而且因为是多行一列的形式排列,右边却大片空白,不匀称又浪费了空间,而且由于博客主题设定的侧栏比较窄,排成2列的话名称比较长的链接会显示不全,只能通过自己写代码通过字数判断来分类从而2列化,基本想法就是这样。

wordpress有一个十分酷的功能就是后台可以拖拽操作边栏页面的widget,很自由从而插件可以制作自己的widget来方便使用。不过自动化程度再高,都比不上需求变化来得快,因为这一切都由wordpress后台自动为你完成而不是在任何主题和插件的代码中,导致你根本不能修改任何代码,更加不能个性化自己的ideas了。而对于懂得控制wordpress代码的人来说,一块博客上至关重要的区域却不能完全掌控它的代码实现,这是难以容忍的。

抛弃边栏widget的自动显示和后台拖拽吧,通过修改主题自带的sidebar.php来个性化完全由自己掌控的侧边栏!

边栏widget的自动显示由dynamic_sidebar()函数实现,一般默认会在sidebar.php中被调用。别急着把这段代码删了,先去博客页面打开源代码,将一个widget的整个HTML代码框架copy下来,然后就可以自己随意插入想要的widget了,只要修改调用的函数即可。譬如以下一段代码:

1
2
3
4
5
6
<div class="widget">
	<h3>widget名称</h3>
	<ul>
	<?php wp_list_categories('title_li=&amp;categorize=0&amp;show_count=1'); ?>
	</ul>
</div>

每一个不同的的widget只需要复制一下这段代码,修改一下标题和调用的php函数就可以了。

1
2
3
4
5
6
类目录:wp_list_categories(),categorize=0 表示不分类别,show_count=1 显示文章数目
标签云:wp_tag_cloud()
连接表:wp_list_bookmarks(),category=num 指定类别的term_id
存档表:wp_get_archives(),show_post_count=1 显示存档文章数量
 
每个API中不同参数,可以在网上搜索或看API源代码,源代码内一般会有一个数组,里面有参数的名称和默认值

这样侧边栏你还只有掌控了一半,因为要实现链接分栏的功能,是不能直接调用wp_list_bookmarks()的,于是继续抛弃wordpress的内置函数吧,自己写!其实就从wp_links表里面读取链接并按照<li>link</li>的形式输出,简单的不能再简单了。期间碰到了一个小问题,链接的类别信息并不是直接存在wp_links表内的,想要得到link与类别相关信息,必须要连接3张表十分复杂,然后发现自己分类的规则简单,可以直接从wp_links表的link_rel属性是me还是friend区分出来。接下去就简单了,将strlen(link_title) > maxSize的链接拎出来放在底下,其余就能乖乖地排成整齐的2排了,最后在css上动一些手脚,就搞定了~

自己动手的感觉十分爽!

Categories: Wordpress 标签:
  1. 二月 22nd, 2011 15:51

    自己改代码啥的最有爱了。
    同时很欣慰我的链接还在 :mrgreen:

    • 哈哈,同感同感。cb的链接我怎么可能会去掉呢 :wink:

  2. 二月 16th, 2011 22:32

    对Aladd设计量贩铺的右链回访啦..
    HOHO.文章挺不错!
    赞一个!
    欢迎回访! 不介意订阅一下吧~哈哈哈~~见谅!随意~

    • 乐意回访,我猜你是女生?

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif