<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fwolf's Blog &#187; sidebar - Fwolf's Blog</title>
	<atom:link href="http://www.fwolf.com/blog/post/tag/sidebar/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fwolf.com/blog</link>
	<description>随心·随意·随缘·努力～</description>
	<lastBuildDate>Wed, 07 Jul 2010 07:07:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>升级WP旧模板，让它支持Widgets</title>
		<link>http://www.fwolf.com/blog/post/402</link>
		<comments>http://www.fwolf.com/blog/post/402#comments</comments>
		<pubDate>Sat, 10 May 2008 21:09:11 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[relate]]></category>
		<category><![CDATA[sidebar]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=402</guid>
		<description><![CDATA[正如大家所见，我使用的WordPress模板已经是很旧很旧的了，是以前在WordPress 1.5还是1.0系列的默认模板之上，简单修改而来的。没有选用三栏布局，因为我喜欢用稍微大一点的字体，三栏布局对我来说侧边栏东西太多，加上文章长了以后侧边栏的下面空白很大。不过旧模板自然也就没有Widgets： No Sidebars Defined You are seeing this message because the theme 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 theme widget-aware, please follow these instructions. 刚开始我还能忍受，Sidebar上没有的东西俺自己手工加上，不过用上Simple Tags插件之后，感叹到了插件和Tags的强大，Relate Post很方便，可Relate Tags就是出不来，探查一番，原因应该就是我的模板不支持Widgets。所以忍不住了，模板可以不变样，但不能不升级，我就动手把它改成支持Widgets的吧。 刚才的提示中已经给出了修改指引的链接，首先把模板中的Sidebar改成ul形式的，Theme Editor -&#62; Sidebar (sidebar.php)，第一行的ul换成div即可： &#60;ul id="sidebar"&#62; ......中间的很多内容 &#60;/ul&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>正如大家所见，我使用的WordPress模板已经是很旧很旧的了，是以前在WordPress 1.5还是1.0系列的默认模板之上，简单修改而来的。没有选用三栏布局，因为我喜欢用稍微大一点的字体，三栏布局对我来说侧边栏东西太多，加上文章长了以后侧边栏的下面空白很大。不过旧模板自然也就没有Widgets：</p>

<pre><code>No Sidebars Defined

You are seeing this message because the theme 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 theme widget-aware, please follow these instructions.
</code></pre>

<p>刚开始我还能忍受，Sidebar上没有的东西俺自己<a href="366">手工加上</a>，不过用上<a href="http://wordpress.org/extend/plugins/simple-tags/">Simple Tags</a>插件之后，感叹到了插件和Tags的强大，Relate Post很方便，可Relate Tags就是出不来，探查一番，原因应该就是我的模板不支持Widgets。所以忍不住了，模板可以不变样，但不能不升级，我就动手把它改成支持Widgets的吧。</p>

<p>刚才的提示中已经给出了<a href="http://automattic.com/code/widgets/themes/">修改指引的链接</a>，首先把模板中的Sidebar改成<code>ul</code>形式的，<code>Theme Editor -&gt; Sidebar (sidebar.php)</code>，第一行的<code>ul</code>换成<code>div</code>即可：</p>

<pre><code>&lt;ul id="sidebar"&gt;
......中间的很多内容
&lt;/ul&gt;
</code></pre>

<p>看了一下，对外观没有太大影响，css应该是用id来引用的，不过还是需要调整一点css：</p>

<pre><code>/* 启用Widgets后Sidebar样式有些变化，在这里修正 */
#sidebar {list-style: none;}
#sidebar li ul li:before {
    content: "\00BB \0020";
}
#sidebar li ul li {
    margin-bottom: 5px;
}
</code></pre>

<p>然后还是修改Sidebar模板文件，加入是否有动态Sidebar的检查、如果有就调入的PHP代码：</p>

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

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

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

<pre><code>&lt;?php
if ( function_exists('register_sidebar') )
    register_sidebar();
?&gt;
</code></pre>

<p>好了，现在再刷新<code>Design -&gt; Widgets</code>页面，就有内容了，我的旧模板现在也支持Widgets了。</p>

<p>同样的，<code>Design -&gt; Theme Editor</code>页面中也会多一项可编辑内容：</p>

<pre><code>Theme Functions (functions.php)
</code></pre>

<p>PS1: 如果要添加多个Sidebar，需要模板的支持，也就是模板中制定需要几个Sidebar，在Design中就能管理几个（<code>register_sidebars(n)</code>，n就是Sidebar数量）。</p>

<p>PS2: 如果想在Widgets的Text里面内嵌php代码，比如设定只有首页才显示BlogRoll，那么需要安装<a href="http://wordpress.org/extend/plugins/php-code-widget/">PHP Code Widget</a>插件，并使用<code>PHP Code</code>代码块。直接在原来的Text中写php代码的话，会原封不动的被当成php代码输出，昏死。</p>

<p>PS3: 一切都折腾好了，Relate Tags功能还是得手工添加php代码块到Widgets中：</p>

<pre><code>&lt;?php
if (is_tag()) {
    st_related_tags();
    st_remove_related_tags();
}
?&gt;
</code></pre>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/hack" title="hack" rel="tag">hack</a>, <a href="http://www.fwolf.com/blog/post/tag/plugin" title="plugin" rel="tag">plugin</a>, <a href="http://www.fwolf.com/blog/post/tag/relate" title="relate" rel="tag">relate</a>, <a href="http://www.fwolf.com/blog/post/tag/sidebar" title="sidebar" rel="tag">sidebar</a>, <a href="http://www.fwolf.com/blog/post/tag/tag" title="tag" rel="tag">tag</a>, <a href="http://www.fwolf.com/blog/post/tag/theme" title="theme" rel="tag">theme</a>, <a href="http://www.fwolf.com/blog/post/tag/widgets" title="widgets" rel="tag">widgets</a>, <a href="http://www.fwolf.com/blog/post/tag/wordpress" title="WordPress" rel="tag">WordPress</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/366" title="WordPress升级到2.3.1 (2007-11-02)">WordPress升级到2.3.1</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/102" title="更改 WordPress 自动生成摘要的方式 (2005-12-19)">更改 WordPress 自动生成摘要的方式</a> (18)</li>
	<li><a href="http://www.fwolf.com/blog/post/241" title="如何为网站添加sitemap文件 (2006-10-17)">如何为网站添加sitemap文件</a> (3)</li>
	<li><a href="http://www.fwolf.com/blog/post/296" title="WordPress 插件编写简例 (2007-02-26)">WordPress 插件编写简例</a> (17)</li>
	<li><a href="http://www.fwolf.com/blog/post/87" title="搞定WordPress的Permalinks (2005-11-07)">搞定WordPress的Permalinks</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/402/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress升级到2.3.1</title>
		<link>http://www.fwolf.com/blog/post/366</link>
		<comments>http://www.fwolf.com/blog/post/366#comments</comments>
		<pubDate>Thu, 01 Nov 2007 18:02:33 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sidebar]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/366</guid>
		<description><![CDATA[以前用的是2.2版本，现在最新版是2.3.1，我看重的主要改进是添加了tag的支持，就升过来了。 升级过程非常简单，下载包，解压，覆盖，然后执行一下wp-admin/upgrade.php就可以了。 忘记了WordPress从哪个版本开始支持Widgets功能的，可我用的这个模板是从1.5版本的默认主题，一路改过来的，虽然没有动大手术，琐碎的修改还是有一些的。对于我这个懒人来说，重新套模板然后更改显然是不划算的，虽然后来学聪明了，有些修改作成了插件，剩下的好像也不少，所以尽可能的在旧模板的基础上更改。 Widgets好像就是个可高度自定义的sidebar，在我现在的模板中，打开Widgets页面总是提示“No Sidebars Defined”，不支持，好在我的要求也不高，咱自己动手，丰衣足食。 WordPress的wp-includes/widgets.php这个文件，是Widgets的主要实现代码，所以修改主要是参照了这个文件的内容。好了，开始编辑现在这个旧模板的sidebar文件。 首先，要把存档archive改成下拉列表框，月份多了实在看着不舒服，widgets.php中有这么一段： function wp_widget_archives($args) { extract($args); $options = get_option('widget_archives'); $c = $options['count'] ? '1' : '0'; $d = $options['dropdown'] ? '1' : '0'; $title = empty($options['title']) ? __('Archives') : $options['title']; echo $before_widget; echo $before_title . $title . $after_title; if($d) { ?&#62; &#60;select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'&#62; &#60;option value=""&#62;&#60;?php echo attribute_escape(__('Select Month')); [...]]]></description>
			<content:encoded><![CDATA[<p>以前用的是2.2版本，现在最新版是2.3.1，我看重的主要改进是添加了tag的支持，就升过来了。</p>

<p>升级过程非常简单，下载包，解压，覆盖，然后执行一下<code>wp-admin/upgrade.php</code>就可以了。</p>

<p>忘记了WordPress从哪个版本开始支持Widgets功能的，可我用的这个模板是从1.5版本的默认主题，一路改过来的，虽然没有动大手术，琐碎的修改还是有一些的。对于我这个懒人来说，重新套模板然后更改显然是不划算的，虽然后来学聪明了，有些修改作成了插件，剩下的好像也不少，所以尽可能的在旧模板的基础上更改。</p>

<p>Widgets好像就是个可高度自定义的sidebar，在我现在的模板中，打开Widgets页面总是提示“No Sidebars Defined”，不支持，好在我的要求也不高，咱自己动手，丰衣足食。</p>

<p>WordPress的<code>wp-includes/widgets.php</code>这个文件，是Widgets的主要实现代码，所以修改主要是参照了这个文件的内容。好了，开始编辑现在这个旧模板的sidebar文件。</p>

<p>首先，要把存档archive改成下拉列表框，月份多了实在看着不舒服，widgets.php中有这么一段：</p>

<pre><code>function wp_widget_archives($args) {
    extract($args);
    $options = get_option('widget_archives');
    $c = $options['count'] ? '1' : '0';
    $d = $options['dropdown'] ? '1' : '0';
    $title = empty($options['title']) ? __('Archives') : $options['title'];

    echo $before_widget;
    echo $before_title . $title . $after_title;

    if($d) {
?&gt;
        &lt;select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'&gt; &lt;option value=""&gt;&lt;?php echo attribute_escape(__('Select Month')); ?&gt;&lt;/option&gt; &lt;?php wp_get_archives("type=monthly&amp;format=option&amp;show_post_count=$c"); ?&gt; &lt;/select&gt;
</code></pre>

<p>可以看出，内置的<code>wp_get_archives</code>函数的参数，原来只有<code>type=monthly</code>，现在多了<code>format=option</code>和<code>show_post_count=$c</code>，前者应该代表是否下拉列表框形式显示，值的定义为<code>$options['dropdown']</code>；后者是是否显示本月文章计数，值的定义为<code>$options['count']</code>，并且都是用1代表真，0代表假，所以修改就简单了，把原来的：</p>

<pre><code>&lt;?php wp_get_archives('type=monthly'); ?&gt;
</code></pre>

<p>更改为：</p>

<pre><code>        &lt;select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'&gt; &lt;option value=""&gt;&lt;?php echo attribute_escape(__('Select Month')); ?&gt;&lt;/option&gt; &lt;?php wp_get_archives("type=monthly&amp;format=option&amp;show_post_count=1"); ?&gt; &lt;/select&gt;
</code></pre>

<p>就行了。</p>

<p>然后，把archive月份存档和category分类列表的位置互换，分类列表放在上面，直接调整代码顺序即可，同时给分类列表也加上分类计数的显示：</p>

<pre><code>            &lt;li&gt;&lt;h2&gt;Categories&lt;/h2&gt;
                &lt;ul&gt;
                &lt;?php wp_list_cats('sort_column=name&amp;show_count=1'); ?&gt;
                &lt;/ul&gt;
            &lt;/li&gt;
</code></pre>

<p>最后，添加Tag Cloud，没有这个升级就白作了，参照widgets.php中的：</p>

<pre><code>function wp_widget_tag_cloud($args) {
    extract($args);
    $options = get_option('widget_tag_cloud');
    $title = empty($options['title']) ? __('Tags') : $options['title'];

    echo $before_widget;
    echo $before_title . $title . $after_title;
    wp_tag_cloud();
    echo $after_widget;
}
</code></pre>

<p>没什么太复杂的，直接调用<code>wp_tag_cloud()</code>函数，连参数都没有，最终代码为：</p>

<pre><code>            &lt;li&gt;&lt;h2&gt;Tags Cloud&lt;/h2&gt;
                &lt;ul&gt;
                &lt;?php wp_tag_cloud(); ?&gt;
                &lt;/ul&gt;
            &lt;/li&gt;
</code></pre>

<p>这样就大功告成了，虽然模板不支持Widgets，侧边栏倒也符合我的基本使用需要了。</p>

<h4>参考</h4>

<ul>
<li><a href="http://codex.wordpress.org/Template_Tags/wp_tag_cloud">wp_tag_cloud函数的详细说明文档</a></li>
</ul>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/hack" title="hack" rel="tag">hack</a>, <a href="http://www.fwolf.com/blog/post/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.fwolf.com/blog/post/tag/sidebar" title="sidebar" rel="tag">sidebar</a>, <a href="http://www.fwolf.com/blog/post/tag/tag" title="tag" rel="tag">tag</a>, <a href="http://www.fwolf.com/blog/post/tag/widgets" title="widgets" rel="tag">widgets</a>, <a href="http://www.fwolf.com/blog/post/tag/wordpress" title="WordPress" rel="tag">WordPress</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/402" title="升级WP旧模板，让它支持Widgets (2008-05-11)">升级WP旧模板，让它支持Widgets</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/102" title="更改 WordPress 自动生成摘要的方式 (2005-12-19)">更改 WordPress 自动生成摘要的方式</a> (18)</li>
	<li><a href="http://www.fwolf.com/blog/post/87" title="搞定WordPress的Permalinks (2005-11-07)">搞定WordPress的Permalinks</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/296" title="WordPress 插件编写简例 (2007-02-26)">WordPress 插件编写简例</a> (17)</li>
	<li><a href="http://www.fwolf.com/blog/post/399" title="Gregarius编辑feed时中文乱码的解决 (2008-05-02)">Gregarius编辑feed时中文乱码的解决</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/366/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress在IE下Sidebar显示定位错误的问题已解决</title>
		<link>http://www.fwolf.com/blog/post/93</link>
		<comments>http://www.fwolf.com/blog/post/93#comments</comments>
		<pubDate>Sun, 04 Dec 2005 15:48:27 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[sidebar]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/93</guid>
		<description><![CDATA[一直使用Firefox，偶尔用IE上一下这个Blog，却发现Sidebar显示在了首页所有文章的下面，究其原因，原来是在最近的几篇文章中，有几个pre或code元素的宽度超出了左边这部分的宽度，从而占用了右边的Sidebar的空间，而IE又没有很好的解决Overflow的问题（参见Migrate apps from Internet Explorer to Mozilla中的CSS overflow differences部分），于是在css中添加如下代码： #sidebar &#123;position: absolute; left: 120px;&#125; 将Sidebar改为绝对值定位，问题解决，同时将pre和code加上了 overflow: auto; 这样贴代码的时候如果宽度太宽，会自动出现水平滚动条的，当然，由于IE没有很好的支持这项属性，因此在IE下是看不到这个效果的。 Tags: css, IE, overflow, sidebar Related posts 升级WP旧模板，让它支持Widgets (4) WordPress升级后分类乱码的原因及解决 (2) WordPress升级到2.3.1 (0) Message rejected for Sector 5 policy reasons (0) IE 6.0仍然无法显示PNG图片文件的原貌？ (0)]]></description>
			<content:encoded><![CDATA[<p>一直使用Firefox，偶尔用IE上一下这个Blog，却发现Sidebar显示在了首页所有文章的下面，究其原因，原来是在最近的几篇文章中，有几个pre或code元素的宽度超出了左边这部分的宽度，从而占用了右边的Sidebar的空间，而IE又没有很好的解决Overflow的问题（参见<a href="http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/">Migrate apps from Internet Explorer to Mozilla</a>中的CSS overflow differences部分），于是在css中添加如下代码：</p>


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#sidebar</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">120px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>


<p>将Sidebar改为绝对值定位，问题解决，同时将pre和code加上了</p>


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span></pre></div></div>


<p>这样贴代码的时候如果宽度太宽，会自动出现水平滚动条的，当然，由于IE没有很好的支持这项属性，因此在IE下是看不到这个效果的。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/css" title="css" rel="tag">css</a>, <a href="http://www.fwolf.com/blog/post/tag/ie" title="IE" rel="tag">IE</a>, <a href="http://www.fwolf.com/blog/post/tag/overflow" title="overflow" rel="tag">overflow</a>, <a href="http://www.fwolf.com/blog/post/tag/sidebar" title="sidebar" rel="tag">sidebar</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/402" title="升级WP旧模板，让它支持Widgets (2008-05-11)">升级WP旧模板，让它支持Widgets</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/394" title="WordPress升级后分类乱码的原因及解决 (2008-04-05)">WordPress升级后分类乱码的原因及解决</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/366" title="WordPress升级到2.3.1 (2007-11-02)">WordPress升级到2.3.1</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/284" title="Message rejected for Sector 5 policy reasons (2007-02-03)">Message rejected for Sector 5 policy reasons</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/89" title="IE 6.0仍然无法显示PNG图片文件的原貌？ (2005-11-14)">IE 6.0仍然无法显示PNG图片文件的原貌？</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/93/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
