开始使用K2模版自带的SBM

2006年7月低,K2 r16版里加入了SBM,从此以后,K2模版用户可以很方便地控制自己的sidebar,而不用再辛苦地修改sidebar.php文件了。

一直没研究SBM,这两天抽空研究了一下,发现还是蛮好玩的。

Sidebar ModulesSidebar Modules,简称SBM。从名字里就可以看出,这是一个sidebar控制插件,可以在后台很方便地控制sidebar的显示内容以及显示顺序。SBM比WordPress官方提供的WordPress WidgetsWordPress Widgets更好一些,同时也兼容WordPress Widgets插件的API,支持为它所写的"Widget"。K2内置了SBM插件,因为SBM的作者也在K2开发组里。所以,所有K2模板的用户就不用再很辛苦地安装SBM插件了,只要在K2后台的SBM设置页面添加了模块,K2自身的sidebar.php文件即被自动禁用,sidebar转由SBM控制,非常方便。

由于K2已经集成了SBM,所以SBM的安装过程我也就没研究。进入后台->外观->K2 SBM页面,即可看到漂亮的,大量运用AJAX的SBM设置页面。输入要添加的模块名称,选择模块类型以及要添加的列表,点添加。由于SBM使用了AJAX技术,模块会立刻出现在sidebar列表中。K2模版只有一个sidebar,所以只有一个sidebar1和一个禁用列表。三栏K2有两个sidebar,所以他有sidebar1,sidebar2和禁用列表三个列表,使用三栏K2时要注意选择列表啊。至于“禁用列表”的作用,那是为了临时禁用某个模块时临时停放模块的。因为模块如果被删除了,模块所有的配置信息都会丢失,所以如果只是临时禁用某个模块的话,把它拖到“禁用列表”就可以了。

添加完后模块就已经生效了,到Blog的sidebar就可以看到新添加的模块了。接下来还要对模块进行进一步配置。回到K2 SBM页面,点击模块名称,右边会出现模块的选项页。除了模块的类型禁止修改以外,其他的选项均可调整,比如模块的名称,名称是否显示,以及允许在哪些页面显示。你可以详细地设置此模块是否显示在首页、存档页、搜索页、404页、文章页和page页,甚至可以设置模块只显示在某几篇文章或是某几个页面里。

选项页里还有一个少用的选项——“相关CSS”。如果模块需要一个CSS协同工作,可以在这里填入CSS文件地址,当模块启用时,SBM会在显示模块的页面里调用这个CSS。这个功能本身很少用到,不过我们可以利用他来实现只在某些页面调用CSS的功能。假如有比较少用的插件,只在几篇文章内用到了,可以添加一个空的模块,只在这几篇文章里输出插件的CSS,这样可以使得其他的页面显示得更快些。

选项页的下方是各个模块特有的选项,模块可以自行在这里添加一些需要的选项,用户可以自行设置。大多数模块是没有自带选项的,像搜索模块,关于模块都是没有的,而HTML模块和PHP模块就有自带选项,用户可以在这里设置想要插入的HTML和PHP代码。

K2自带了很多模块,下面一一说明:

About module
显示本页说明信息,比如首页显示K2里设置的About Me,存档页显示“这是×××存档页...”一类的。
Asides module
提供对Matt的那个Asides插件的支持。
Calendar module
WordPress自带的日历
Category list module
分类列表
Flickr module
flickr图片展示
HTML module
html模块,可以插入一段html代码
Latest posts module
最新文章模块
Links module
链接模块
Meta module
Meta模块
Month list module
按月存档
Navigation module
按名称翻译是“导航条模块”,不过他是为page页服务的。当一个page有子page的时候,在该page中会显示子page列表。
PHP module
PHP模块,可以插入一段PHP代码,记得要加<?php ... ?>哦。
Recent comments module
最新评论模块,可以显示10条最新评论,支持BLCBLC
Related posts module
相关文章模块,需要Related PostsRelated Posts插件。
RSS module
RSS模块,可以显示一个RSS feed中的文章。
Search module
搜索模块
Text module
插入一段纯文本。

对一些模块做了修改:按月存档没有显示每个月的文章数,分类列表没有树状排列,这两个都做了修正。另外我在以前做了对K2 menu的修改,把一部分page作为menu,另一部分显示在sidebar。现在开始用SBM了,就把代码移出来,修改了一下,成为一个模块。最新文章和最新评论都是通过修改插件,增加对SBM的支持来显示在sidebar的。其他部分可以通过HTML、PHP、Text三个模块很方便的添加。

Navigation module有一个小bug,已经报上去了,等待更新中。Update:K2 r263已经修正了这个bug。

今天更新了K2,r248解决了升级Prototype后SBM不能添加模块的问题,r262说解决了IE7下的问题。我一直只关心Blog在我的Firefox 1.5.0.6下的显示,偶尔,比如写插件的时候,在IE下测试效果,顺便会看一下整个Blog在IE下的显示,看是否有错误。听alonefly大大说,我的Blog在IE7下有问题,在safari也有显示问题。唉,浏览器多了,才会发现W3C的重要啊。

K2开发组最近也懒了,更新变得很少,很多bug都没有及时解决。而且,K2下的rolling archive, Live Comment, Live search都使用了AJAX,互相之间经常起一些莫名其妙的冲突。想来K2开发组也真是辛苦,要研究PHP、html、JavaScript,还要注意兼容各个浏览器,真是不容易啊。而且,这么辛苦写出来的K2,在以貌取“模版”的环境里,竟然比不上一些小模版,嘿嘿。这不,最近升级了一下Prototype,结果SBM出问题了,伤脑筋啊。最近一个星期,K2开发组好像又活过来了,正在抓紧升级K2,并开始写K2的Wiki。Google Code真是个好东西,K2现在有了Wiki页,用来做K2文档。还有了Download页面,用来做下载页。假如Google Code再包含WordPress项目所使用的Trac的代码管理功能,可以很方便地查看svn里各个版本的代码,并对不同版本进行比较。那就完美了啊。

我在Blog的footer里给K2添加了版本号,现在可以很方便地查看我的Blog的K2当前版本,而且点击它就可以进入K2的nightly下载页了。

顺便更新了True Blue。新版的True Blue 1.3.4_svn对于最新的K2 svn支持的很好,上面的trimer已经能正确显示了。嗯,steveo真是个勤奋的人啊。

Update:另外,其他插件也可以内置对SBM的支持,就像对WordPress Widgets的支持一样。插件只有使用SBM提供的API,向SBM注册即可。SBM之所以被设计出来,就是为了提供比WPW更多的功能。WPW里很多事情都更麻烦点,比如,每个widget必须被设计成一个独立的插件,必须安装好后在WordPress后台激活。还有,WPW不能控制每个widget的在哪些页面中显示,而SBM可以精确控制到在某个页面显示与否。另外,widget只能使用WordPress提供的选项设置保存功能,而SBM自己提供了这样的功能,并把设置内容和module的其他信息一起保存在wp-options表的一行里,这样,当module被删除的时候,信息也随之丢弃,不怕占用数据库。

作为用户,在选用侧边栏控制插件的时候应该首选SBM,毕竟基本上所有为WordPress Widgets设计的widget都可以直接运用于SBM中,而SBM提供了比WPW更强的功能。

而作为插件作者,在写插件的过程中,如果需要提供对侧边栏控制插件的支持,恐怕WPW和SBM都要考虑。正如SBM主页所说,设计SBM的module时可以直接使用WPW的API,但是如果想用SBM特有的功能还是只考虑SBM的好。我最近在更新Yskin's wp-statistics插件2.3版的时候,就考虑了半天选项的问题,使用SBM提供的选项保存功能比起用WordPress的要省点事啊。

WPW的网站上给出了一些API的说明,而一些具体的细节则直接要求插件开发者查看WPW源代码。SBM网站上则没给出任何文档。唉,有空我再来谢谢两个插件的API文档吧。

本文共有 24 条评论开始使用K2模版自带的SBM


  1. 1 sok

    yskin

    我在用widgets的时候发现 分类 什么的本来后面应该显示文章数量的 比如
    无分类(17)
    心情故事(2)
    .....(X)
    .....(X)
    用了widgets的插件以后就不能显示那些数字了
    有办法解决吗?

  2. 2 yskin

    改一下咯,如果是用的wp_list_cats()函数,那么在参数里加上"&optioncount=1"。如果是用的list_cats()函数,那么把第8个参数设为1。

  3. 3 sok

    哦.知道了.谢谢 :)

    祝圣诞快乐!

  4. 4 yaoge123

    按月存档显示每个月的文章数如何改?谢谢了啊 呵呵

  5. 5 yskin

    wp_get_archives('type=monthly');
    换成
    wp_get_archives('type=monthly&show_post_count=true')

  6. 6 capri

    yskin你好,我用着K2的sidebar modules也,有个问题不知能否帮助:网站www.joycapri.com/inside,试图把右边Latest posts 和recent comments两个module用
    overflow: hidden; text-overflow:ellipsis; white-space: nowrap;做破行自动截断,在sidebar module的设定里单独设置这两个module调用#sidebarhidden ,怎么定义也老定义不好……有点郁闷……

  7. 7 yskin

    SBM里好像不能设置module的id属性吧,你是在哪里设置的呢?

    我记得写module的时候,可以在最后注册module的时候添加一个class属性,你不妨用那个class吧。SBM自动给每个module的div添加一个id,属性值为module名称,不过对中文支持的不是很好,你也可以试试。

  8. 8 Mike

    我下载了最新版本的K2,发现About module这个模块我不知道如何使用?比如如何输入关于的信息的?

  9. 9 yskin

    请下载最新的K2 r288,这是K2 0.95里的一个bug。

    K2的release版其实根本不算release版,因为根本就不做稳定性测试。所以下载K2请到http://getk2.com/nightly/下载。

  10. 10 yaoge123

    不好意思,上次忘记问了,如何让分类列表树状排列?

  11. 11 yskin

    WordPress 2.1.x系列里默认是树状排列的吧,如果没有树状排列说明是被禁用了,找到调用wp_list_categories()函数的地方把hierarchical=1去掉就好了。另外,如果没有使用这个函数,最好还是改成用这个函数的好,因为它比以前2.0.x里的函数要好。

  12. 12 Lincei

    我用的模板侧边栏默认是树状排列,但升级到wp2.2后,使用了widgets,就变成左对其样式了。
    请问怎么更改?具体是修改哪个文件?

  13. 13 yskin

    假如你用了K2的SBM,就不要再用WordPress 2.2里新加入核心的Widgets了。SBM不是很好?

    你换了侧边栏控制插件,导致侧边栏的DOM结构改变,所以原有的CSS失效。调一下CSS就好了。

  14. 14 Lincei

    sorry,事实上我只是个刚刚开始用wp的新手。直接接触的就是2.2版。
    说以,对于K2的SBM只是刚刚听说而已。以后慢慢试吧。

    谢谢你的回答。

    在决定用K2的SBM之前,我还是想试试看怎么修改加入wp核心的Widgets的某项属性

  15. 15 buding

    怎么我选了K2模版,后台->外观->下面的选项是分别是themes,widgets,themes editor.K2 options,custom Images editor。找不到SBM啊,打开Widget,下面也没有about module这些模块,是些简单的recent posts等东西。怎么回事。我是新手,刚弄的空间,装的wordpress2.2.1,什么插件都没激活。

  16. 16 buding

    问题解决了,必须装个disable wordpress widget插件把wp2.2自带的wigdet禁掉。或许你这边有过介绍了,我没看到。

  17. 17 yskin

    K2在WordPress 2.2还未发布以前都是自动禁用WordPress自带的Widgets的。所以,你应该检查下你安装的K2版本。

  18. 18 buding

    完全新手兼外行再问个菜鸟问题,怎么把整体的字体变大,就像CTRL 滚轮放大那种效果.改什么地方?

  19. 19 crusher

    多谢博主了。

  1. 1 BloggingPro China » K2模版进阶:SBM
    Pingback2006-12-25 3:12 下午
  2. 2 WordPress的侧边栏 at 龍眼看世界
    Pingback2007-2-16 8:02 下午
  3. 3 WordPress的侧边栏 - 龙网天下
    Pingback2007-3-9 6:00 下午
  4. 4 我使用的wordpress插件 at ┢┦imalaya 雪人’ Blog
    Pingback2007-3-25 4:11 下午
  5. 5 WP升级到2.3 于 云居
    Pingback2008-2-9 3:40 下午

请留下您的评论: