[转贴]关于学习的一些网站

来源:知乎

知乎用户,humbledu.com

综合类:

编程及软件类:

给(互联网)创业者的提供教育视频网站:

英文学习类

SAT 考试类:

IOS 开发:

数学:

法律

“帆樯”:

  • http://igfw.net/archives/1079
  • 工具推荐?弄技术好钻研又不富裕的用 goa*ge*nt(去掉星号);鲨鱼加 * 速器速度(去掉星号)快但不稳定;Green 速度稍慢但很稳定;Openv*pn(去掉星号)太慢了,至少在我的网络环境里是这样的。(对于这些,不提供连接,请自行搜索)

视频资源的王者:

  1. 10 Recommended YouTube Edu-tainment Channels
  2. http://www.youtube.com/user/harvardbschool (HBS)
  3. http://www.makeuseof.com/tag/educational-youtube-channels/
  4. http://www.youtube.com/results?search_query=Eric+Schmidt&oq=Eric+Schmidt&gs_l=youtube.12…0.0.0.1229510.0.0.0.0.0.0.0.0..0.0…0.0…1ac.(这个虽不是 Channel,但是我喜欢这个关键词)

这家伙仅次于 youtube:

图片资源的王者:

  • 谷歌图片(你要学帆樯哦!)
  • Yahoo!中的雅虎图片(不需要帆樯,质量还可以接受)

最后:

超越期待的东西( just amazing ):

曾旻,提供严肃,中立,讲求证据的回答

推荐几个名牌大学的在线公开课程网站吧,英文还可以的朋友可以直接去看原版,可以系统地学习知识.老师讲得还是比较通俗易懂的,也是学习英语的好办法,我经常在上学的路上听,觉得还挺不错的.

其中最全的名单在这里,500 Free Online Courses from Top UniversitiesOpen Culture

http://www.openculture.com/freeonlinecourses

其中几个质量比较高的

Courserahttps://www.coursera.org

高度推荐,是斯坦福大学老师创办的,里面主要是斯坦福,普林斯顿,密歇根和宾大四所学校的课程,除了视频之外还有讨论课,阅读材料和测.我最近就在追其中社会学导论课程,觉得学到了很多东西.

Open Yale Courseshttp://oyc.yale.edu

高度推荐,大名鼎鼎的耶鲁公开课就不用多说了吧.里面聆听音乐,心理学导论都特别赞,缺点是没有阅读材料,可能要自己去找一下.

MIT OpenCourseWarehttp://ocw.mit.edu/

推荐,MIT 是最早推出公开课的大学,公开的范围也比较广,但有些课程只有讲义,自学起来稍微费劲一些

网易公开课:http://open.163.com/

推荐,毕竟这是有字幕的,看起来方便一些.其中强烈推荐哈佛的两门课,幸福课(其实应该是积极心理学)和正义(Justice).后者在 Youtube 上可以看到 360p 高清的.

Apple – iTunes U :http://www.apple.com/education/itunes-u/

推荐,上面某些课程在 iTune 里面有,比如 Yale 的公开课,其中 Oxford 的一些公开课也挺不错的.iTune U 的最大好处可以通过 iTune 方便地下载到 iPhone 或者 iPod 里随身听,平时通勤的时候可以听一下.

课程大纲 + 搜索引擎学习法

最后一种是我自己发明的,你可以对你感兴趣的各种内容搜索对应的课程大纲(用 google 搜”syllabus+ 学科名 +filetype:pdf OR filetype:doc),或者在各个大学的网站上搜索教学大纲.你可以根据老师的课程大纲来了解老师的思路,然后自己结合豆瓣等搜索一下相应的参考书籍,自己对照加以学习.

查看知乎原文

帮忙宣传一下[转]CNNIC CA:最最最严重安全警告!

各位,虽然此事与 AutoProxy 无关,但它对所有(也包括 AutoProxy)用户都是一个非常严重的安全威胁。我,WCM,AutoProxy 作者,以个人名誉强烈建议您认真阅读并采取措施。

背景知识

网上传输的任何信息都有可能被恶意截获。尽管如此,我们仍然在网上保存着很多重要的资料,比如私人邮件、银行交易。这是因为,有一个叫着 SSL/TLS/HTTPS 的东西在保障我们的信息安全,它将我们和网站服务器的通信加密起来。

如果网站觉得它的用户资料很敏感,打算使用 SSL/TLS/HTTPS 加密,必须先向有 CA (Certificate Authority) 权限的公司/组织申请一个证书。有 CA 权限的公司/组织都是经过全球审核,值得信赖的。

发生了什么事

最近,CNNIC——对,就是那个臭名昭著的利用系统漏洞发布流氓软件的、就是那个使劲忽悠 CN 域名又突然停止域名解析的 CNNIC (中国互联网络信息中心),它——偷偷地获得了 CA 权限!在所有中文用户被隐瞒的情况下!

意味着什么

意味着 CNNIC 可以随意造一个假的证书给任何网站,替换网站真正的证书,从而盗取我们的任何资料!

这就是传说中的 SSL MITM 攻击。以前这个攻击不重要是因为攻击的证书是假的,浏览器会告诉我们真相;现在,因为 CNNIC 有了 CA 权限,浏览器对它的证书完全信任,不会给我们任何警告,即使是造假的证书!

你信任 CNNIC (中国互联网络信息中心) 吗?你相信它有了权限,会安守本分,不会偷偷地干坏事吗?
我对此有3个疑问:

  1. 某 party 对 GMail 兴趣浓厚,GFW 苦练 SSL 内功多年,无大进展。如今有了 CA,若 GFW 令下,CNNIC 敢不从否?
  2. CNNIC 当年利用所谓官方头衔,制流氓软件祸害网民。如今有了 CA,如何相信它不会故伎重演?
  3. 为了得到指定网站的合法证书,其它流氓公司抛出钱权交易,面对诱惑,CNNIC 是否有足够的职业操守?

影响范围

基本上所有浏览器的所有用户均受影响!

行动第一步:立即安全防御

在此只介绍 Firefox 浏览器的防御方法,其它浏览器的用户请自行 Google,原理类似。

  • 菜单栏:工具/编辑->首选项->高级->加密->查看证书->证书机构(Authorites)
  • 这是一个很长的列表,按照字母顺序,你应该能找到一个叫着 “CNNIC ROOT” 的记录,就是这个东西,告诉 Firefox,我们不信任它!
  • 选中 CNNIC ROOT,点击下面的“编辑”按钮,弹出一个框,应该有3个选项,把所有选项的勾都去掉!保存。
  • 还没有完,狡兔有三窟。
  • 接着往下找,有一个叫着 Entrust.net 的组,这个组里应该有一个 “CNNIC SSL” (如果没有,访问一下 这个网站 就有了)
  • 别急着下手,这回情况不一样,这个证书是 Entrust 签名的。我们信任 Entrust,Entrust 说它信任 CNNIC,所以我们就被迫信任 CNNIC SSL 了。找到 “Entrust.net Secure Server Certification Authority” 这一条,同上面一样,把3个选项的勾都去掉,保存(提示:取消了对 Entrust 的信任以后,可能会没法打开它签名的某些正常网站。至于哪个网站用了它的签名,随便试了一下,没找到例子)。
  • 最后,让我们验证一下。重启 Firefox,打开 这个这个 网站,如果Firefox 对这两个网站都给出了安全警告,而非正常浏览,恭喜,您已经摆脱了 CNNIC CA 的安全威胁!

行动第二步:治标还需治本

几天前听到这个消息的时候,我简单地、轻蔑地将 CNNIC 删除了事。可是这个周末,我忽然觉得这样很不好。因为只要它存在,始终会有大部分的用户受到威胁。和写 AutoProxy 时同样的想法:如果大部分人都处于安全威胁当中,一个人苟且偷安又有什么意义?如果不能将自由与安全的门槛降低一点点,所谓的技术又有什么好侥幸的?

所以我呼吁大家,贡献一点时间和知识,团结起来说服各浏览器取消 CNNIC 的 CA 权限。这种事不可能有公司来推动,只有我们社区。

首先推荐的是 Firefox,作为一个公益组织 Mozilla 的决策过程更为开放、更愿意听取社区的声音。Bug 476766 记录了事件的全过程。Bug 542689Mozilla.dev.security.policy 进行着现在的讨论(注意,你可以把自己添加到 Bugzilla 的 CC List 以表达你对此事的关切。但是不要随便说一些不靠谱的话,免遭讨厌。强调政治、GFW 的之类的不管用,必须就事论事。比如它在申请过程中采取欺骗、隐瞒的手段,或者申请成功后的某些行为违反了 Mozilla 的 CA 政策;比如它的属性和过往行为表明它不会忠于自己的职责,而(帮助)做出 MITM 这种 CA 共愤的事情)。

其次是 Entrust,它说它信任,导致了我们也被迫信任 CNNIC SSL。不妨 告诉 Entrust 此事很严重,因为它错误地信任了 CNNIC,大量用户不得不删除它的 CA。如果能找到使用 Entrust 证书的网站更好。给这些网站写信,因为此次事件我们不得不删除了 Entrust 的 CA,请求他们另选别家认证。如果反响强烈,势必给 Entrust 造成很大压力。

除此之外,来投个票吧结果统计)!

最后,强烈建议大家,发现证书警告的时候最好直接关掉,不要轻易添加例外。证书的信任体系是一级依赖一级的,一不小心你可能就会连带信任一个不想信任的 CA。上面用于验证的两个网站,不妨定期(每周/每月)测一测,如果哪天你发现其中的任何一个网站没有证书警告,就要注意了!

各位:
DNS 劫持已然成为常态,不要让 SSL 劫持再次普及!此事刚刚发布,尚有评议空间。待时间流逝,你我皆成温水中之青蛙!

CNNIC

收到了一封邮件,大家请节哀!

以前在一家成都的公司买过域名与空间,所以会不定期收到一些他们的邮件。今天又收到了一封,让人倍感心寒mail
以下文字为邮件内容:

政府正在全国范围严打未备案及非法信息接入,在此严打中已经并且还会有更大量的机房和服务器受影响,请广告大客户多做备份,此次为政府行为不可抗拒因素,请大家理解,国内任何一家IDC公司和合作的电信,联通,移动的IDC相关负责人都不愿意大量关停服务器和网站,但在政府强力严打的情况下,情况有时并非某一家公司或者是某一级电信单位所能左右的,耀网对因此次严打受影响的用户深表歉意,我们已经尽力完善监控和扫描系统并取得了相当好的效果,但是现在的情况并不是未备案及非法信息的工作做的好就能确保所有正常用户不受影响的,祝大家好运.(IDC数据中心及域名虚拟主机VPS等业务属于互联网基础,互联网基础行业的重创将传递到实体经济.其中的中小企业,对互联网经济依赖很大的正是解决了大量就业岗位的中小企业.,相信我们的党和政府会把握好整治互联网的力度,请大家耐心等待,不要冲动) 近期机房关闭消息: 上海怒江移动 (1号楼的基本没多少恢复的) 上海漕河泾网通 上海漕宝路电信(开始封杀小段,现在封杀大段) 上海外高桥机房(部分被封) 上海老联通IDC机房 (部分被封,因为beian) 浙江金华电信 浙江金华网通 浙江嘉兴电信(封80) 浙江绍兴电信(这个知道两家大的代理被封,保守估计超过4000台) 浙江温州电信(封的80) 浙江湖州新联通双线机房 安徽合肥电信机房 江西景德镇电信(景德镇开始驱逐IDC,单方面撕毁合同) 江西萍乡电信机房 江苏省无锡电信机房(好像还有别的电信机房,具体不清楚.包括Discuz官方服务器等众多机器在内…) 江苏常州电信机房 江苏扬州电信机房 , 江苏镇江电信机房 北京亦庄网通机房 河南洛阳网通双线 河南开封机房(部分机器) 河南郑州网通机房(部分机器) 河南景安机房(部分机器) 河南许昌网通机房(部分机器) 河北网通(什么机房不知道) 河北廊坊电信机房 陕西西安电信 陕西汉中电信 陕西渭南电信 湖南长沙电信 广东湛江电信机房 (部分被封) 四川绵阳电信机房 (部分被封) 四川眉山电信机房 (部分被封) 济南联通担山屯机房 福建莆田电信 (被封了30台左右)

政府正在全国范围严打未备案及非法信息接入,

在此严打中已经并且还会有更大量的机房和服务器受影响,请广告大客户多做备份,此次为政府行为不可抗拒因素,请大家理解,国内任何一家IDC公司和合作的电信,联通,移动的IDC相关负责人都不愿意大量关停服务器和网站,但在政府强力严打的情况下,情况有时并非某一家公司或者是某一级电信单位所能左右的,耀网对因此次严打受影响的用户深表歉意,我们已经尽力完善监控和扫描系统并取得了相当好的效果,但是现在的情况并不是未备案及非法信息的工作做的好就能确保所有正常用户不受影响的,祝大家好运.(IDC数据中心及域名虚拟主机VPS等业务属于互联网基础,互联网基础行业的重创将传递到实体经济.其中的中小企业,对互联网经济依赖很大的正是解决了大量就业岗位的中小企业.,相信我们的党和政府会把握好整治互联网的力度,请大家耐心等待,不要冲动) 近期机房关闭消息: 上海怒江移动 (1号楼的基本没多少恢复的) 上海漕河泾网通 上海漕宝路电信(开始封杀小段,现在封杀大段) 上海外高桥机房(部分被封) 上海老联通IDC机房 (部分被封,因为beian) 浙江金华电信 浙江金华网通 浙江嘉兴电信(封80) 浙江绍兴电信(这个知道两家大的代理被封,保守估计超过4000台) 浙江温州电信(封的80) 浙江湖州新联通双线机房 安徽合肥电信机房 江西景德镇电信(景德镇开始驱逐IDC,单方面撕毁合同) 江西萍乡电信机房 江苏省无锡电信机房(好像还有别的电信机房,具体不清楚.包括Discuz官方服务器等众多机器在内…) 江苏常州电信机房 江苏扬州电信机房 , 江苏镇江电信机房 北京亦庄网通机房 河南洛阳网通双线 河南开封机房(部分机器) 河南郑州网通机房(部分机器) 河南景安机房(部分机器) 河南许昌网通机房(部分机器) 河北网通(什么机房不知道) 河北廊坊电信机房 陕西西安电信 陕西汉中电信 陕西渭南电信 湖南长沙电信 广东湛江电信机房 (部分被封) 四川绵阳电信机房 (部分被封) 四川眉山电信机房 (部分被封) 济南联通担山屯机房 福建莆田电信 (被封了30台左右)

用CSS来制作一个立方体

This is the topface.
This is the leftface.
This is the rightface.

如果你用的是Firefox 3.5或者Safari 3.2+或者Google Chorme浏览器的话,你会看到右边有个立方体。它是用DIV+CSS写出来的。由于是在这篇文章当中,所以把CSS样式加到标签里进去了,如果制作网页的话再单独分出来就行。下面是其代码:

<div style=”position: relative; top: 200px;”>

<div style=”-webkit-transform: rotate(60deg); -moz-transform: rotate(60deg); top: -86px; left: 405px; position: absolute;”>
<div style=”-webkit-transform: skewY(-30deg) scaleY(1.16); -moz-transform: skewY(-30deg) scaleY(1.16); background-color: #eee; font-size: 0.862em; padding: 10px; width: 90px; height: 90px;”>This is the topface.
</div>
</div>

<div style=”-webkit-transform: skewY(30deg); -moz-transform: skewY(30deg); background-color: #ccc; left: 350px; position: absolute;”>
<div style=”padding: 10px; width: 90px; height: 90px;”>This is the leftface.
</div>
</div>

<div style=”-webkit-transform: skewY(-30deg); -moz-transform: skewY(-30deg); background-color: #ddd; left: 460px; position: absolute;”>
<div style=”padding: 10px; width: 90px; height: 90px;”>This is the rightface.
</div>
</div>
</div>

[收藏]wordpress主题设计基础

想了解一下怎么样设计wordpress的主题,Google出这篇文章,收藏下来学习学习。

来源:http://www.freerainbow.cn

一、开发工具及相关资源
本地WordPress架设:Xampp(WordPress官方也推荐了这一软件组合,方便实用)。
代码:Dreamweaver(我选择它仅仅是出于习惯,你完全可以选择一个更称手的)。
图像:Photoshop、Illustrator、Fireworks之类之类。
版本控制:Google Code,在教育网利用svn往google code上传东西实在是太慢了,不过还是推荐。
浏览器测试:Firefox(当然,少不了Web Developer Toolbar)、Internet Explorer 7、Mutiple IEs(包含可独立运行的IE3——IE6)、Opera、Swift(基于WebKit引擎的浏览器,用于Safari兼容性测试)。
相关站点:
WordPress Codex
WordPress Hooks
WordPress Theme Viewer

二、WordPress主题结构——模板文件及其调用
传统的网页通常使用HTML来控制页面结构,并通过样式表(CSS)来控制页面的表现。WordPress也使用样式表来控制网页的表现,但其页面内容则 是由几个模板文件(Template Files)共同构建而成的。其中一些模板文件是全局性的,比如头信息和页脚模块,而有一些则只用于特殊场合。    这些模板文件通常由XHTML和简单的PHP代码构成,只要你有一些基本的网页知识,并且知道什么是“if…else…”,就不用太担心代码问题——当 然,掌握一些基本的XHTML、CSS、PHP和Javascript知识,还是大有好处的。在文章中,我会尽量少涉及模板之外的代码,很多东西,不是拿 来谈论的,比如网页标准,我们遵循它,使用它,就可以了。我们习惯性的将网页分解为 “头信息(Header)”、“内容(Content)”、“侧边栏(Sidebar)”、“页脚(Footer)”这几个主要部分,而这也是主要 WordPress模板文件划分的依据。通常一个普通的WordPress主题会包含一下几个模板文件:样式表:style.css
头信息模块:header.php
内容模块:index.php、page.php、single.php、archive.php、search.php、404.php
侧边栏模块:sidebar.php
页脚模块:footer.php
评论模块:comments.php
搜索表单模块:searchform.php
其中,style.css用于定义主题的外观;头信息模块定义了网站的基本信息,比如标题、关键词等等;站点的主要内容使用index.php输 出,page.php用于输出分页内容,而single.php则被用于单篇汇整,404模块用于返回站点404错误信息;sidebar.php包含了 网站的一些次要内容,比如订阅、分类、链接等等;页脚信息通常会包含站点的版权等相关信息;而其他模块所含内容视情况而定,比如comments.php 用于控制评论输出,而searchform.php则包含了搜索表单。当然,WordPress也允许用户调用自己定义的模块。注意:当 archive.php和search.php不存在时,WordPress会自动调用index.php中的内容,因此这两个模板文件已经不是必需的 了,在此不作介绍。

在WordPress中,主要的模板文件都有自己专用的调用代码:
style.css:<?php bloginfo(’stylesheet_url’); ?>
header.php:<?php get_header(); ? >
sidebar.php:<?php get_sidebar(); ? >
footer.php:<?php get_footer(); ? >
comments.php:<?php comments_template();? >
而其他辅助模块则可以使用相关语句来调用,比如你要在侧边栏里调用搜索模块,就可以在sidebar.php的相关位置输入:<?php include (TEMPLATEPATH . ‘/searchform.php’); ?>该语句也可用于调用你自己创建的模板文件。举个例子,比如在index.php中,我们需要头信息、正文、侧边栏和页脚信息,那么该模板的结构 就是:
<?php get_header(); ?>
…主体内容…
<?php get_sidebar(); ?>
<?php get_footer(); ?>先写这么多吧,

参考文献:
Stepping Into Templates
海豚的WordPress Theme教程 part1

三、模板文件解析
首先提一下WordPress的模板标签(Template Tags)。WordPress提供的模板标签十分丰富,你几乎可以利用它们把主题做成任何你想要的样子。了解并掌握重要标签的形式和用法是进行 WordPress主题开发的重要环节。WordPress Codex给出了大部分Template Tags的说明,我就不做重复劳动了。

进入正题,我们以WordPress Default 1.6为例,尽可能详细的分析模板文件中所用到的相关代码及技巧。

3.1    Header.php
我们从头开始好了。打开Header.php,在这里我们可以看到不少常用的模板标签,其中<?php language_attributes(); ?>是WordPress 2.1新增加的标签,用于在头部输出“lang=’zh-CN’”这样的语言标记,站点语言可以在后台定义。    在这里,你可以看到<?php bloginfo() ?>是一个被使用多次的模板标签,用于显示一些站点的相关信息,比如标题、网页类型、字符集、样式表链接、Rss链接等等。其用法 是:<?php bloginfo(’show’); ?>Show是你想要显示的内容,可以是:name、description、url、charset、stylesheet_url等等,另 外,<title> </title>之间的代码用于输出网页的标题,先看WP默认模板的标题输出:除了用<?php bloginfo(’name’); ?>输出Blog的名字之外,该模板还使用了”is_single()”函数来判断当前页面是否是单篇汇整页面,如果是,则输出<?php if ( is_single() ) { ?>…<?php } ?>之间的语句。    这是一个非常常用的技巧,它允许你使用一段代码控制不同页面的输出效果,简便且灵活。除了is_single()之外,常用的还有:is_home()、 is_page()、is_paged()、is_archive()、is_search()、is_404()、is_tag()。意思都很好理 解,is_paged()就是某个存档的除第一页外的后n页(这个解释很别扭,俗称“上一页”…) 如果非再要举个例子,那就来一个豪华的,K2的 theloop.php。有别于普通WP模板按网页结构和存档性质划分模板文件的方法,K2使用theloop.php来定义全部页面的正文内容输出,主 要手段就是通过上面提到的那些函数来判断当前页面的性质以输出相应的内容。尽管原理很简单,但这种处理模板文件的形式大大简化了代码编辑工作,因为你只需 要通过一个模板文件中的几行代码就可以改变几乎任何一个页面上的内容。如果你想要某页面不显示某些内容,只要在is前加上感叹号表示否定即可,

例如:
<?php if ( !is_home() ) { ?>…<?php } ?>

最后,在</head>之前,一定会有一个<?php wp_head(); ?>,wp_head()用于获取一些插件或者主题所需的功能,这些功能通常是在后台就定义好的,比如在一些主题和插件里你可以看到 add_action(’wp_head’, ‘函数名’);这样的语句。大部分主题将导航栏也放在header.php中,就简单提一点:WordPress对当前页定义的CSS Class是current_page_item,而其他页面则是page_item,也就是说,你可以在CSS中定义 current_page_item和page_item以区分当前页和其他页面的样式。

比如:li.current_page_item {

}
li.page_item {

}wp_list_pages()也是一个很有讲究的模板标签,具体用法参见Codex。

参考文献:
Template Tags: bloginfo
Hooks: wp_head
The Loop

3.2    Index.php
以WordPress默认模板的index.php为例。我们先来看看它的结构:首先,通过<?php get_header(); ?>获得头信息;然后是一个循环体(The Loop,不知这样叫对不对);最后通过<?php get_sidebar(); ?>和<?php get_footer(); ?>加载侧边栏和页脚。熟悉The Loop的用法能够让你随心所欲的控制文章的输出,因此我们来着重了解一下The Loop:       WordPress使用一个循环体来控制正文内容的显示,文章将按循环体内代码所定义的格式输出到当前页面上。部分模板标签必须在循环体内使用,如每篇文 章的标题(the_title()),时间(the_time())和分类(the_category()) 。

简单表示如下:<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
…找到相关内容则按格式输出正文…
<?php endwhile; else: ?>
…否则输出错误信息…
<?php endif; ?>      The Loop的用法非常灵活,比如你可以将其和分类标签结合起来以限定某个页面或某一部分只显示某个或几个分类的内容,这就是一个最简单的Asides。有兴 趣的自己不妨找找相关插件或模板来看看。我在这里仅举两个简单的例子。
比如,如果你想要某一页面只显示分类x(x代表该分类的ID)的内容,

你可以这样写:<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if ( in_category(’x’) ) { ?>
…正文内容…
<?php } else { ?>
…其他内容…
<?php } ? >
<?php endwhile; else: ?>
…出错信息…
<?php endif; ?>

进一步,来看一个Asides的例子。假设你需要在某个页面的某一位置(比如侧边栏)输出某个分类的前x篇文章,你可以这样做:

<?php $temp_query = $wp_query; ?>
<?php query_posts(’category_name=分类名字&showposts=x’); ?>
<?php while (have_posts()) : the_post(); ?>
…Asides内容…
<?php endwhile; ?>
<?php $wp_query = $temp_query; ?>

在这里,我们在Asides的循环体重使用变量temp_query来代替wp_query,以避免同正文部分的循环体发生冲突。更多的例子你可一在文后的参考文献中找到,代码大同小异。另外Durable的index.php也是一个不错的样板。

3.3    Sidebar.php
侧边栏的内容没有太多好说的,记住如果你想自己的侧边栏在不同页面显示不同内容,可以用3.1中提到的方法。我倾向于让用户使用Sidebar widgets或SBM(Sidebar Modules)来自行定义侧边栏的内容,这就是为什么Unnamed默认侧边栏内容偏少的原因。在这里简单解释一下如何让主题支持Sidebar Widgets或SBM:
首先你需要建立一个functions.php,这个文件通常用于控制主题的后台内容,包括一些后台功能和管理页面。然后在functions.php中加入下述代码:
if (function_exists(’register_sidebar’)) { register_sidebars(x,array(’name’=>’Sidebar %d’)); }x代表sidebar的数量。

最后,修改Sidebar.php,以双侧边栏为例:
<div id=”sidebar”>
<div class=”left-sidecolumn”>
<ul>
<?php if ( function_exists(’dynamic_sidebar’) && dynamic_sidebar(1) ) : else : ?>
<li> … </li>
<?php endif; ?>
</ul>
</div>
<div class=”right-sidecolumn”>
<ul>
<?php if ( function_exists(’dynamic_sidebar’) && dynamic_sidebar(2) ) : else : ?>
<li> … </li>
<?php endif; ?>
</ul>
</div>
</div>

参考文献:
The Loop
Widgetizing Themes

四、杂项

4.1    Custom Image Header

Custom Image Header 是WordPress 2.1增加的一个新功能,支持该功能的主题允许用户自定义Header图片。所以今天贫僧来介绍如何让施主们的WordPress主题支持该牛逼闪闪的功 能。本文中涉及的相关代码可以在Unnamed Special Edition 的functions.php中找到。首先,各位施主请看如下几行代码,它们分别定义了header部分的字体颜色、默认背景图片以及图片尺寸:
define(’HEADER_TEXTCOLOR’,’FFFFFF’);
define(’HEADER_IMAGE’,’%s/images/bg_header.jpg’);
define(’HEADER_IMAGE_HEIGHT’,150);
define(’HEADER_IMAGE_WIDTH’,960);

这段代码告诉我们一个道理:Unnamed SE的header部分字体颜色为白色(FFFFFF),默认背景图片为bg_header.jpg,背景图片尺寸为960*150。再来看下面这段代 码,在这里,函数custom_css()包含了定义主题header样式所需的CSS,它会被输出到模板的头部(如果施主不想在页面头部生成过多代码, 可以考虑和Unnamed一样将CSS写入php文件,不过贫僧不推荐这样做,尽管好处大大地,但弊端也很是不少)。

<?php
function custom_css() {
?>
<style type=”text/css”>
#header {
height:<?php echo HEADER_IMAGE_HEIGHT; ?>px;
background:url(<?php header_image() ?>) transparent repeat top center;
}
<?php if (get_header_textcolor()==’blank’ ) { ?>
#header h1, .description {
display:none;
}
<?php } else { ?>
#header h1 a,.description {
color:#<?php header_textcolor() ?>;
}
<?php } ?>
</style>
<?php } ?>

其中,#header部分定义了header图片的高度(HEADER_IMAGE_HEIGHT)和url(header_image());而后一部 分则判断header的文字部分是否需要隐藏;header_textcolor()则用于定义字体颜色。用户们都喜欢所见即所得,所以,为用户着想的施 主们需要在管理页面中设置当前header样式的预览。为了与模板中的样式保持一致,我们用admin_header_style()定义预览部分的样式 (代码意义与前一段基本相同):<?php function
admin_header_style() {
?>
<style type=”text/css”>
#headimg {
background-image:url(<?php header_image() ?>);
background-repeat:repeat !important;
height:<?php echo HEADER_IMAGE_HEIGHT; ?>px;
width:<?php echo HEADER_IMAGE_WIDTH; ?>px;
margin:0 0 10px;
}
#headimg h1 {
font-size:2.2em;
text-align:left;
margin:0;
padding:45px 0 0 20px;
}
#headimg h1 a {
color:#<?php header_textcolor() ?>;
text-decoration: none;
border-bottom: none;
}
#headimg #desc {
color:#<?php header_textcolor() ?>;
font-size:1em;
text-align:left;
padding:0 0 5px 20px;
}
<?php if (’blank’ == get_header_textcolor()) { ?>
#headimg h1,#headimg #desc {
display:none;
}
#headimg h1 a,#headimg #desc {
color:#<?php echo HEADER_TEXTCOLOR ?>;
}
<?php } ?>
</style>
<?php } ?>

最后,我们通过add_custom_image_header()来输出CSS到主题和管理页面的头部。<?php add_custom_image_header(’custom_css’, ‘admin_header_style’); ?>这样,当该WordPress主题被激活时,系统会自动加载Custom Image Header管理页面,用户可以通过该页面上传和处理header背景图片。更多内容可以参考/wp-admin/custom-header.php。 4.2    后台管理页面    先来介绍一下今天的主角——Wordpress Theme Toolkit 和 Unnamed 0.4.1:Wordpress Theme Toolkit 是著名 WordPress 达人 Ozh 开发的专用于编写 WordPress 模板后台管理页面的工具(Ozh 开发了很多经典且实用的WordPress插件和工具,施主可以在这里找到更多好玩的东西)。尽管已经有很久没有更新,但经过测试,发布于九个月前的、将 该工具性能压榨殆尽的 Unnamed 0.4 至今仍能非常稳定的工作在 WordPress 2.3-Alpha 平台下,足见 Theme Toolkit 的经典程度。Download Unnamed 1.22
对比 Unnamed 1.2 的后台管理页面,施主们可以发现,这九个月来,Unnamed 虽然一直在进步,但其基本框架是在 0.4 时代就定型了的。从Unnamed 0.5 起,贫僧开始自己编写后台页面,代码最多时达到700余行,而 0.4 的后台管理页面只有区区200行代码,简练易读。贫僧认为,对于初学者,Theme Toolkit 提供的方便而强大的开发环境可以让施主事倍功半。OK,现在我们来介绍 Theme Toolkit 的使用方法。1. 调用themetoolkit.php
首先,我们利用下面这条语句将所需的themetoolkit.php加入functions.php中:
<?php include(dirname(__FILE__).’/themetoolkit.php’); ?>然后,我们来看如何在 functions.php 定义模板所需要的功能:
<?php
themetoolkit(
‘mytheme’, array(
‘option1′ => ‘Text for Option One’,
‘option2′ => ‘Text for Option Two’,
‘option3′ => ‘Text for Option Two’,
),
__FILE__
);
?>

其中,mytheme 为主题的别名,这无关紧要,数组 array() 中的内容才是关键,

第一部分 “option1”为模板某个选项的名称,而 “=>” 之后的部分定义了 option1 的说明文字、样式(比如单选框、复选框、输入框和文本框,不支持下拉选框)和选项状态(比如enable或者disable)。

2. 单选框 (radio)   来看Unnamed 0.4中控制Live Search选项的代码:
‘live_search’ => __(’Live Search’,’unnamed’).’ {radio|enable|’.__(’Enable Live Search(Default)’,’unnamed’).’|disable|’.__(’Disable Live Search’,’unnamed’).’} ## ‘   这是一个典型的单选框应用,__(’…’,’unnamed’) 为本地化代码请直接忽略,我们将代码化简一下得到:
‘live_search’ => ‘Live Search {radio|enable|Enable Live Search(Default) |disable| Disable Live Search} ‘   这便是调用单选框的基本格式,即:
‘选项名称’ => ‘选项标题 { radio | 选项1 | 说明文字1 | 选项2 | 说明文字2 }’

3. 复选框 (checkbox)复选框的调用方法基本类似:
‘选项名称’ => ‘选项标题 { checkbox | 选项1 | 说明文字1 | 选项2 | 说明文字2 | 选项3 | 说明文字3… }’

4. 输入框 (input field)施主可以在Unnamed 0.4中找到如下代码,它通过输入框来定义Unnamed文字字体的大小:
‘font_size’ => __(’Text Size’,’unnamed’).’ ## ‘.__(’Type in pixel size of the text. ‘,’unnamed’)我们很容易看出输入框的调用格式为:
‘选项名称’ => ‘ 选项标题 ## 说明文字 ‘

5. 文本框 (textarea)文本框的调用格式为:
‘选项名称’ => ‘选项标题 {textarea|行数|列数} ## 说明文字’

6. 设置默认值
我们需要为各个功能设定它们的默认值,开看看Unnamed是怎么做的:if (!$unnamed->is_installed()) {
$set_defaults[‘live_search’] = ‘enable’;
$set_defaults[‘ajax_commenting’] = ‘enable’;
$set_defaults[‘sliding_menu’] = ‘enable’;
$set_defaults[‘header’] = ‘header’;
$set_defaults[‘sidebar_align’] = ‘right’;
$set_defaults[‘width_type’] = ‘3′;
$result = $unnamed->store_options($set_defaults);
} 注意$unnamed为模板的别名,即前面的”mytheme”,代码很好理解,就不多解释了。

7. 利用函数控制和输出功能
在了解如何调用各种样式来控制模板功能之后,我们需要将这些功能添加到模板中去,我们需要自己编写一些简单的函数来控制和输出这些功能。比如,当 Live Search 选项为 enable 时,模板的 Live Search 可用,否则禁用。在模板中,这就相当于是否加载 livesearch.js。九个月前的贫僧是这样做的:在 functions.php 中,定义 unnamed_livesearch() 函数,判断 live_search 选项是否为 enable,若是,则返回真值。function unnamed_livesearch() {
global $unnamed;
if ($unnamed->option[‘live_search’] == “enable”) {
return true;
} else {
return false;
}
}

在 header.php 中施主可以看到如下代码,当 live_search 为 enable 时,即 unnamed_livesearch() 的值为真时,调用livesearch.js.php,Live Search 功能被加载,否则该功能被禁用。
<?php if(function_exists(’unnamed_livesearch’) and unnamed_livesearch()) { ?>
<script type=”text/javascript” src=”<?php bloginfo(’template_directory’); ?>/js/livesearch.js.php”></script><?php } >    实际上施主还可以写的更简单一些。    还可以利用 Theme Toolkit 来改变模板的样式,比如 header 图片,字体,色彩,宽度等等,具体施主可以看unnamed_options_css () 这个函数是怎么写的,由于和上一节 Custom Image Header 类似,在此就不赘述了。8. 其他
Theme Toolkit 会自动生成删除选项,令施主们没有后顾之忧。施主还可以对themetoolkit.php做一些改动,让它符合自己的特定需求。如果有兴趣自己编写后台 管理页面,贫僧强烈建议施主去读 Codex 上的 Plugin API 及其他相关文章。参考文献:
Wordpress Theme Toolkit