2006年7月低,K2 r16版里加入了SBM,从此以后,K2模版用户可以很方便地控制自己的sidebar,而不用再辛苦地修改sidebar.php文件了。
一直没研究SBM,这两天抽空研究了一下,发现还是蛮好玩的。
Sidebar Modules
,简称SBM。从名字里就可以看出,这是一个sidebar控制插件,可以在后台很方便地控制sidebar的显示内容以及显示顺序。SBM比WordPress官方提供的WordPress 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条最新评论,支持BLC
。 - Related posts module
- 相关文章模块,需要Related 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文档吧。
yskin
我在用widgets的时候发现 分类 什么的本来后面应该显示文章数量的 比如
无分类(17)
心情故事(2)
.....(X)
.....(X)
用了widgets的插件以后就不能显示那些数字了
有办法解决吗?
改一下咯,如果是用的wp_list_cats()函数,那么在参数里加上"&optioncount=1"。如果是用的list_cats()函数,那么把第8个参数设为1。
哦.知道了.谢谢
祝圣诞快乐!
按月存档显示每个月的文章数如何改?谢谢了啊 呵呵
wp_get_archives('type=monthly');换成
wp_get_archives('type=monthly&show_post_count=true')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 ,怎么定义也老定义不好……有点郁闷……
SBM里好像不能设置module的id属性吧,你是在哪里设置的呢?
我记得写module的时候,可以在最后注册module的时候添加一个class属性,你不妨用那个class吧。SBM自动给每个module的div添加一个id,属性值为module名称,不过对中文支持的不是很好,你也可以试试。
我下载了最新版本的K2,发现About module这个模块我不知道如何使用?比如如何输入关于的信息的?
请下载最新的K2 r288,这是K2 0.95里的一个bug。
K2的release版其实根本不算release版,因为根本就不做稳定性测试。所以下载K2请到http://getk2.com/nightly/下载。
不好意思,上次忘记问了,如何让分类列表树状排列?
WordPress 2.1.x系列里默认是树状排列的吧,如果没有树状排列说明是被禁用了,找到调用wp_list_categories()函数的地方把
hierarchical=1去掉就好了。另外,如果没有使用这个函数,最好还是改成用这个函数的好,因为它比以前2.0.x里的函数要好。我用的模板侧边栏默认是树状排列,但升级到wp2.2后,使用了widgets,就变成左对其样式了。
请问怎么更改?具体是修改哪个文件?
假如你用了K2的SBM,就不要再用WordPress 2.2里新加入核心的Widgets了。SBM不是很好?
你换了侧边栏控制插件,导致侧边栏的DOM结构改变,所以原有的CSS失效。调一下CSS就好了。
sorry,事实上我只是个刚刚开始用wp的新手。直接接触的就是2.2版。
说以,对于K2的SBM只是刚刚听说而已。以后慢慢试吧。
谢谢你的回答。
在决定用K2的SBM之前,我还是想试试看怎么修改加入wp核心的Widgets的某项属性
怎么我选了K2模版,后台->外观->下面的选项是分别是themes,widgets,themes editor.K2 options,custom Images editor。找不到SBM啊,打开Widget,下面也没有about module这些模块,是些简单的recent posts等东西。怎么回事。我是新手,刚弄的空间,装的wordpress2.2.1,什么插件都没激活。
问题解决了,必须装个disable wordpress widget插件把wp2.2自带的wigdet禁掉。或许你这边有过介绍了,我没看到。
K2在WordPress 2.2还未发布以前都是自动禁用WordPress自带的Widgets的。所以,你应该检查下你安装的K2版本。
完全新手兼外行再问个菜鸟问题,怎么把整体的字体变大,就像CTRL 滚轮放大那种效果.改什么地方?
多谢博主了。