升级WP旧模板,让它支持Widgets

授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/402)的形式标明文章原始出处和作者信息及本声明。

正如大家所见,我使用的模板已经是很旧很旧的了,是以前在 1.5还是1.0系列的默认模板之上,简单修改而来的。没有选用三栏布局,因为我喜欢用稍微大一点的字体,三栏布局对我来说侧边栏东西太多,加上文章长了以后侧边栏的下面空白很大。不过旧模板自然也就没有

No Sidebars Defined

You are seeing this message because the  you are currently using isn’t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your  widget-aware, please follow these instructions.

刚开始我还能忍受,上没有的东西俺自己手工加上,不过用上Simple Tags插件之后,感叹到了插件和Tags的强大, Post很方便,可 Tags就是出不来,探查一番,原因应该就是我的模板不支持。所以忍不住了,模板可以不变样,但不能不升级,我就动手把它改成支持的吧。

刚才的提示中已经给出了修改指引的链接,首先把模板中的改成ul形式的, Editor -> (.php),第一行的ul换成div即可:

<ul id="">
......中间的很多内容
</ul>

看了一下,对外观没有太大影响,css应该是用id来引用的,不过还是需要调整一点css:

/* 启用样式有些变化,在这里修正 */
# {list-style: none;}
# li ul li:before {
    content: "\00BB \0020";
}
# li ul li {
    margin-bottom: 5px;
}

然后还是修改模板文件,加入是否有动态的检查、如果有就调入的PHP代码:

<ul id="">
<?php if ( !function_exists('dynamic_sidebar')
    || !dynamic_sidebar() ) : ?>
......中间的很多内容
<?php endif; ?>
</ul>

代码一共就3行,前面加2行,后面加一行,就是个简单的判断而已。别着急,现在还没有完成,还有最后一步。

在模板目录下,比如我的就是wp-content/themes/fwolfs-blog这个目录,创建一个新文件functions.php,内容就4行:

<?php
if ( function_exists('register_sidebar') )
    register_sidebar();
?>

好了,现在再刷新Design -> 页面,就有内容了,我的旧模板现在也支持了。

同样的,Design -> Editor页面中也会多一项可编辑内容:

 Functions (functions.php)

PS1: 如果要添加多个,需要模板的支持,也就是模板中制定需要几个,在Design中就能管理几个(register_sidebars(n),n就是数量)。

PS2: 如果想在的Text里面内嵌php代码,比如设定只有首页才显示BlogRoll,那么需要安装PHP Code Widget插件,并使用PHP Code代码块。直接在原来的Text中写php代码的话,会原封不动的被当成php代码输出,昏死。

PS3: 一切都折腾好了, Tags功能还是得手工添加php代码块到中:

<?php
if (is_tag()) {
    st_related_tags();
    st_remove_related_tags();
}
?>
Tags: , , , , , , ,

Related posts

2 Responses to “升级WP旧模板,让它支持Widgets”

  1. 戴耳钉的猫 Says:

    不知道为什么我很不习惯用widgets… 呵呵… 可能是我的电脑太古董了, 一加载widgets的设置页面就卡的很厉害… 而且我觉得widgets里面的东西设置起来不如直接在sitebar.php的源码里面改舒服… 呵呵… 个人习惯问题… :)

    [Reply]

    Fwolf reply on 2008-5-12 23:21:40:

    页面卡应该不是Widgets的缘故,多半是动态图片、flash太多造成的
    Widgets的处理方式类似于原先平坦的代码,现在用函数封装起来调用而已,
    生成的结果也是纯html,和直接修改sidebar.php一样。
    呵呵,我的电脑也很古董,但用了Widgets之后没啥感觉。

    [Reply]

Leave a Reply

您的留言将被缓存和审阅,所以不会立即出现在这里,请别着急,着急的话可以给我发邮件 :-)
支持Markdown Extra语法,参见: [甲] [1] [2]