主题技巧: 让主题支持 Widget

难度:

昨天跟俩同学吹水了一天, 心情不错. 临睡前有行善的冲动, 帮网友小改了一下主题. 任务比较简单, 只是为一个三栏主题添加对 Widget 的支持而已.
事后有网友认为这样的做法欠妥, 要么鼓励收费, 要么授人以渔. 我想想也有道理, 打算以后少干这些活, 但多聊聊这些事. 就先从这次简单的案例开始说吧.

单侧边栏

functions.php

1
2
3
4
5
6
7
8
9
10
<?php
if( function_exists('register_sidebar') ) {
	register_sidebar(array(
		'before_widget' => '<li class="widget">', // widget 的开始标签
		'after_widget' => '</li>', // widget 的结束标签
		'before_title' => '<h3>', // 标题的开始标签
		'after_title' => '</h3>' // 标题的结束标签
	));
}
?>

sidebar.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div id="sidebar">
	<ul class="widgets">
<?php // 如果没有使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) :
?>
	<!-- widget 1 -->
	<li class="widget">
		<h3>标题 1</h3>
		<ul>
			<li>条目 1.1</li>
			<li>条目 1.2</li>
			<li>条目 1.3</li>
		</ul>
	</li>
	<!-- widget 2 -->
	<li class="widget">
		<h3>标题 2</h3>
		<ul>
			<li>条目 2.1</li>
			<li>条目 2.2</li>
			<li>条目 2.3</li>
		</ul>
	</li>
<?php endif; ?>
	</ul>
</div>

双侧边栏

functions.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if( function_exists('register_sidebar') ) {
	register_sidebar(array(
		'name' => 'Sidebar_1', // 侧边栏 1 的名称
		'before_widget' => '<li class="widget">', // widget 的开始标签
		'after_widget' => '</li>', // widget 的结束标签
		'before_title' => '<h3>', // 标题的开始标签
		'after_title' => '</h3>' // 标题的结束标签
 
	));
 
	register_sidebar(array(
		'name' => 'Sidebar_2', // 侧边栏 2 的名称
		'before_widget' => '<li class="widget">', // widget 的开始标签
		'after_widget' => '</li>', // widget 的结束标签
		'before_title' => '<h3>', // 标题的开始标签
		'after_title' => '</h3>' // 标题的结束标签
 
	));
}
?>

sidebar.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div id="sidebar_1">
	<ul class="widgets">
<?php // 如果没有在侧边栏 1 中使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_1') ) :
?>
	<!-- widget 1 -->
	<li class="widget">
		<h3>标题 1</h3>
		<ul>
			<li>条目 1.1</li>
			<li>条目 1.2</li>
			<li>条目 1.3</li>
		</ul>
	</li>
<?php endif; ?>
	</ul>
</div>
 
<div id="sidebar_2">
	<ul class="widgets">
<?php // 如果没有在侧边栏 2 中使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_2') ) :
?>
	<!-- widget 2 -->
	<li class="widget">
		<h3>标题 2</h3>
		<ul>
			<li>条目 2.1</li>
			<li>条目 2.2</li>
			<li>条目 2.3</li>
		</ul>
	</li>
<?php endif; ?>
	</ul>
</div>

N 侧边栏

请使用数学归纳法进行推理.
参考教材: 人民教育出版社全日制普通高级中学教科书数学第三册

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 主题技巧: 让主题支持 Widget
  1. CHENSHIAN | #1
    2008-07-27 15:30

    乐于助人的人!

  2. atmo | #2
    2008-07-27 22:29

    以后这样的事情我还是找你做比较好 :grin:

  3. Delacro | #3
    2008-07-27 23:42

    学习!

  4. zwws | #4
    2008-07-28 01:07

    数学我最差,高中三年的数学课是睡过来的。 :cry:

  5. Alan | #5
    2008-07-28 10:10

    学习!

  6. calcifer | #6
    2008-08-01 11:36

    的确不错~

  7. 众生阁 | #7
    2008-08-23 20:09

    Daily Sentence的特效是如何实现的 :roll: :eek: 啊????

  8. mg12 | #8
    2008-08-24 11:00

    @众生圈
    我用 SimpleXML 读取爱词霸的 RSS 而已.

  9. 锐风 | #9
    2008-08-24 19:35

    那个参考教材不对.. 人民教育出版社全日制普通高级中学教科书算数第八十册

  10. bolo | #10
    2009-06-14 10:00

    怎么你不把相关的教程集中,出一个电子书呢?

  11. 陶晓爱 | #11
    2009-08-18 13:35

    是不是把侧边栏做成空白,然后从后台用小工具添加功能就可以呢??

  12. AnQ | #12
    2010-03-09 14:05

    多个侧边栏是这样实现的啊,收益匪浅啊。

  13. 无锋博客 | #13
    2010-05-01 21:41

    双侧边栏是指inove经典的左右侧边栏,还是2个侧边栏啊

  1. mg12's Blog » 主题技巧: 为主题添加管理选项
    2008-08-02 15:38
  2. mg12's Blog » 主题技巧: 让主题支持单/多侧边栏切换
    2008-08-23 16:24
  3. Post on 2009-03-07 20:43:04 « 逍遥老鬼的只言片语 - 逍遥老鬼的微博客
    2009-06-12 22:16

Twitter Email feed
RSS feed