这个问题困扰我很久了,差不多两个月之前我就写过《分类排序的问题》,一直没有找到解决办法,网上搜过很多次,也问过一些人,别人要么不懂,要么让我自己好好看看代码,那代码研究起来也不是一时半会领悟得了的,何况也没有那个时间,这个问题就搁起来了。
虽然后台的分类里添加了好多子分类,但这期间并没有用过,因为用起来侧边栏的分类里看起来就怪怪的,显得杂乱无章,这样我就宁愿不用了,期待将来能找到解决办法。前几天在网上胡乱搜k2的资料时,发现了这篇文章,看到鸿飞也在问类似的问题,yskin也给出了修改方案,我完全按样改了,还是没有变化,用的是从k2里新解压出来的sidebar.php,代码要用的字符是拷贝css内部已有的,注意了全半角、编码等问题,但是子分类还是乱的。无语了,郁闷。
昨晚突然想到,你不是乱着来吗,我进数据库把各个分类的ID重新从1开始编,然后改成按ID排序,这样应该是按着我规定的ID顺序排列的吧。今天从上午开始就着手改了,好好地规划了一下分类,重新分配ID,把sidebar里list_cats的参数改成了按ID排序,也加上了”,1″来树型显示分类,这个参数我昨天从官网看到了说明,WordPress2.x以上才支持。在IE和FX里刷新了无数次,还是无效,仅仅两个字符,搞了这么久,郁闷,吃饭去了。
吃饭回来,又进数据库的管理界面,看见wp_categories的表下有个cat_my_order的字段,看起来有点奇怪,搜一下,发现好像是我原来装的一个插件My Category Order遗 留下来的,记得原先还删不掉这个字段,现在既然这个插件没有用,还是删了这个字段吧,不想在数据库里留垃圾。但我还是不确定这个字段是系统自带的还是插件 生成的,一时半刻又找不到别人问他们的数据库里有没有这个,就想装个全新的数据库+WordPress看看。虚拟主机里我没有创建数据库的权限,找个免费 的php+MySQL+phpMyAdmin空间又太麻烦,就下了个Xampp,在本地测试一下就行了。Xampp和Appserv这种东西,以前研究过,用起来轻车熟路。
装好了,发现果然没有cat_my_order这个字段,可以删了。不如在全新的WordPress和k2环境下,试试分类排序的问题,改了 sidebar.php,建了几个分类,写了几篇文章, 乖乖,全新的环境都没有反应,看来跟建站以来对WordPress程序、k2程序、TrueBlue程序所作的修过都没有关系。在phpMyAdmin里 翻了好半天,甚至删了category_description这个字段,这时侧边栏的分类报错,从错误信息看分类是按照name参数排序的,重新添加 category_description就好了。从sidebar.php里翻出list_cats这个函数,没问题,忽然想到分类是以模块的方式显示 在侧边栏的,于是找出/k2/modules下的categories.php,果然也有一条list_cats函数,一看,和sidebar.php里 默认一样的参数形式,在这里添加”,1″,一刷新,树型果然出来了。原来问题出在这里,终于搞定了。接着就在style.css的末尾增加一行代码来实现 子分类缩进。
yskin说的方法没错,他自己的blog实现了,我看过官方对list_cats函数的说明后,更确信了最后一个参数就是实现分类树型显示的。之前一直有问题,是因为,修改错了对象,yskin在《k2 svn》里 清楚说了是修改sidebar.php,其实非也,他记错了,修改的应该是modules目录里的categories.php,这就是问题所在。我理 解,侧边栏是按模块显示的,分类如何显示应该优先加载的是模块里categories.php对排序的定义,这时sidebar.php里的定义就无效 了。我后来修改过几次sidebar.php里的参数,页面都没有变化,也证实了我的猜想。
末了再提提那个My Category Order插件,其实这个插件挺棒的,可惜对k2这种模块化的主题无效,在作者的网站留了评论,第二天就收到了他的email,问什么是k2,回了email,把k2介绍了一番,反映了一点问题,可惜到现在还没有收到回复。