Archive for the 'Blog' Category

一直对软件的组件、插件架构非常感兴趣,我认为现在开发任何应用程序,一定要有一个架构良好的插件机制,这样可以吸引其他人来开发插件,极大的扩充系统的功能。Eclipse就是一个非常棒的例子,几乎你想什么功能,都可以从社区中找到相应的第三方插件。Firefox也同样如此,它的插件机制非常灵活(尤其是相对IE而言),因此Firefox社区中可以找到各种各样的插件。


就像Nat在Open Source Summit中的一句话



You have to give people work to do.

Create an “architecture of participation” as Tim O'Reilly says.



自从开始使用WordPress,就想学习学习WordPress强大的插件机制。以前曾经研究过的COM、XPCOM、Firefox Extensions、Eclipse Plugin都是桌面应用级别的组件结构,而对Web应用中的插件确实知之甚少,于是,Dissect了一下WordPress(1.5.1.3)。虽然对PHP不是很熟悉,不过看看源码还是问题不大。


1)WordPress读取所有可用的插件


在文件“admin-functions.php”中,函数


[code lang="php"] ?>[/code]

用来从文件系统得到所有的插件。原理很简单,就是读取'wp-content/plugins'目录下的所有PHP文件。这个函数允许一级的子文件夹,也就是说在'wp-content/plugins'下面的PHP文件,以及所以在此目录下的一级子文件夹内部的PHP文件被列作插件的候选,用下面的函数去进一步提取插件信息。这样的好处是方便用户利用文件夹来对插件进行管理和组织。


而函数


[code lang="php"][/code]

用来得到插件的描述(Plugin Descriptor),主要包括插件的版本、名称、作者,等信息,而这些其实是以注释的方式存在的。用WordPress中自带的Hello插件来举例:

Buy Allopurinol Without Prescription, [code lang="php"] Plugin Name: Hello Dolly
Plugin URI: http://wordpress.org/#
Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire ... Order Allopurinol from mexican pharmacy, Author: Matt Mullenweg
Version: 1.0
Author URI: http://photomatt.net/
?>[/code]

这样,在get_plugin_data函数中,就可以来得到插件的详细信息。


[code lang="php"] function get_plugin_data($plugin_file) {
$plugin_data = implode('', file($plugin_file));
preg_match("|Plugin Name:(.*)|i", buy cheap Allopurinol, Allopurinol wiki, $plugin_data, $plugin_name);
preg_match("|Plugin URI:(.*)|i", Allopurinol from canadian pharmacy, Allopurinol treatment, $plugin_data, $plugin_uri);
preg_match("|Description:(.*)|i", low dose Allopurinol, Cheap Allopurinol, $plugin_data, $description);
preg_match("|Author:(.*)|i", no prescription Allopurinol online, Purchase Allopurinol online no prescription, $plugin_data, $author_name);
preg_match("|Author URI:(.*)|i", kjøpe Allopurinol på nett, köpa Allopurinol online, Allopurinol description, $plugin_data, $author_uri);
?>[/code]

2)Active & Deactive Plugin


Active(Deactive)插件的操作都在Plugins.php中,比如我要Deactive “Hello”这个插件,最后的URL其实是这个样子:


[code lang="php"][/code]

其中,“Action”表示动作,值为“active”或者“deactivate”,而“Plugin”表示动作的对象插件,此处为“hello.php”。得到动作指令后,首先从数据库中取出当前已经激活的插件。


[code lang="php"][/code]

然后根据动作,重新生成已激活插件数组,存入数据库,并重新加载此页。加载的时候就需要考虑这些已经激活的插件是怎么工作的了。


BTW:附上数据库的Options表中0插件和只有1个插件的值:


没有插件:'a:1:{i:0;s:0:"";}'


只有Hello插件:'a:2:{i:0;s:0:"";i:1;s:9:"hello.php";}'


3)插件(Active)如何加载到系统中


WordPress中的每页都会包含“wp-config.php”文件,而在“wp-config.php”的最后有这样一句:


[code lang="php"][/code]

在“wp-settings.php”文件中,可以找到以下与插件相关的代码片断:


[code lang="php"] if ( get_settings('active_plugins') ) {
$current_plugins = get_settings('active_plugins');
if ( is_array($current_plugins) ) {
foreach ($current_plugins as $plugin) {
if ('' != $plugin && file_exists(ABSPATH, buy no prescription Allopurinol online. Allopurinol use, 'wp-content/plugins/' . $plugin))
include_once(ABSPATH, is Allopurinol addictive. Where to buy Allopurinol, 'wp-content/plugins/' . $plugin);
}
}
}
?>[/code]

可见,这段代码会取出系统中所有Active的插件,并Include进来。所以在每页加载的时候,都会首先Include这些插件代码。那么,这些插件自己在加载的时候都做了什么呢?


4)插件的加载


插件的加载其实最重要的一个部分就是插件的事件注册机制,WordPress插件中的事件注册其实和Eclipse中的扩展点(Extension-Point)机制非常相像,而这种类似“插销”、“插销座”的软件插拔方式也成为了最近软件组件架构方面应用最多的实践。


事件注册过程中比较重要的几个函数分别是:do_action、add_action、add_filter。


WordPress中默认定义了很多扩展点(也可以叫做“钩子”),或者说注册了很多系统事件(WP中的正规叫法应该是“Action Tag”),比如“admin_head”表示Admin页面的Head输出事件,“publish_post”表示发布一篇帖子的事件等等。而插件要做的就是扩展这些扩展点,或者说挂接这些钩子,从而实现系统的扩展功能。add_action就是通常插件扩展某个扩展点用到的函数,而do_action是扩展点本身开始执行的函数。


刚才说过WordPress中的每一页执行前都会Include所有Active的插件代码,而这些代码通常都会用“add_action”来将自己的函数注册到系统的扩展点中。这样,在扩展点执行的时候,就会找到系统中所有已经挂接到这个扩展点上的插件的函数来执行之,从而扩充系统的功能。


WordPress中的很多功能也都是通过这种插件结构来实现的,默认注册了很多系统事件,都在'default-filter.php'中。比如:


[code lang="php"][/code]

这个是用来在发布每篇帖子的时候发送XML-RPC Ping的。再比如:


[code lang="php"][/code]

用来将正文(content)中的笑脸符号转换为图像。


还是举“Hello”插件来说。Hello插件会随机的在Admin Page的右上角显示一段话,它的工作原理是这样的:


在每一个Admin page的前面都有


[code lang="php"][/code]

而在“admin-head.php”中将会执行扩展点“admin_head”的所有扩展:


[code lang="php"] do_action('admin_head', '');
?>[/code]

这样,就会执行所有挂接到admin_head的函数


Admin Page的Footer部分同样如此,


[code lang="php"] do_action('admin_footer', '');
?>[/code]

这样,就会执行所有挂接到admin_footer的函数


再来看看Hello插件的初始化过程中:


[code lang="php"]

// This just echoes the chosen line, we'll position it later
function hello_dolly() {
global $chosen;
echo "

$chosen

";
}

// Now we set that function up to execute when the admin_footer action is called
add_action('admin_footer', 'hello_dolly');

// We need some CSS to position the paragraph
function dolly_css() {
echo "

";
}

add_action('admin_head', 'dolly_css');

?>[/code]

可见,将dolly的CSS部分插到Header部分,而在footer部分插入显示代码,这样,在AdminPage的右上角就会随机显示一段话。


再来看看曾经说过Google Sitemap插件,插件中有一项功能是在发布、修改或者删除文章的时候重新Build Sitemap文件,这个功能就是通过注册系统的三个事件(“publish_post”,“edit_post”,“delete_post”)来完成的。


[code lang="php"] //Register to various events.., Buy Allopurinol Without Prescription. @WordPress Dev Team: I wish me a 'public_content_changed' action :)
if(defined("SM_ACTIVE") && SM_ACTIVE===true) {
//If a new post gets published
add_action('publish_post', Allopurinol results, Order Allopurinol no prescription, 'sm_buildSitemap');

//Existing post gets edited (published or not)
add_action('edit_post', 'sm_buildSitemap');

//Existing posts gets deleted (published or not)
add_action('delete_post', Allopurinol class, Allopurinol reviews, 'sm_buildSitemap');
}
#endregion
?>[/code]

BTW:其中的注释也很有意思,我也觉得确实需要有“public_content_changed”这样一个事件,就不必分别订阅三个单独的事件了。


对了,就在我们刚才说的wp-settings.php中的插件启动后,有


[code lang="php"][/code]

这样一个系统事件,可以注册这个事件来做一些希望在所有插件Load完毕而做的事儿。


5)如果插件中涉及UI


其实是一样的。以WordPress FeedBurner Plugin中添加菜单为例:


如果想添加一个菜单,就需要注册“admin_menu”这个Action Tag(系统事件):


[code lang="php"][/code]

即可,插件中的这个函数为:


[code lang="php"] if (function_exists('add_options_page')) {
add_options_page('FeedBurner', Allopurinol cost, Allopurinol natural, 'FeedBurner', 8, online Allopurinol without a prescription, Buy Allopurinol online cod, basename(__FILE__), 'ol_feedburner_options_subpanel');
}
}
?>[/code]

“add_options_page”这个函数就会在系统的“Options”菜单中添加“FeedBurner”这样一个子菜单。


而这个函数其实就是增加 Menu 或者 SubMenu,


[code lang="php"] function add_submenu_page($parent, herbal Allopurinol, Order Allopurinol online c.o.d, $page_title, $menu_title, Allopurinol price, Fast shipping Allopurinol, $access_level, $file, Allopurinol forum, Allopurinol alternatives, $function = '') {
global $submenu;
global $menu;

$parent = plugin_basename($parent);
$file = plugin_basename($file);

// If the parent doesn't already have a submenu, add a link to the parent
// as the first item in the submenu, doses Allopurinol work. Purchase Allopurinol for sale, If the submenu file is the same as the
// parent file someone is trying to link back to the parent manually. In
// this case, buy Allopurinol from mexico, Buy generic Allopurinol, don't automatically add a link back to avoid duplication.
if (, buy Allopurinol no prescription. Allopurinol used for, isset($submenu[$parent]) && $file != $parent) {
foreach ($menu as $parent_menu) {
if ($parent_menu[2] == $parent) {
$submenu[$parent][] = $parent_menu;
}
}
}

$submenu[$parent][] = array($menu_title, $access_level, $file, $page_title);

$hookname = get_plugin_page_hookname($file, $parent);
if ( !empty($function) && !empty($hookname) )
add_action($hookname, $function);

return $hookname;
}

function add_options_page($page_title, $menu_title, $access_level, $file, $function = '') {
return add_submenu_page('options-general.php', $page_title, $menu_title, $access_level, $file, $function);
}
?>[/code]

6)其它


还有一些简单的插件就是只提供一些API函数。比如Most_Commented Plugin,它提供一个API “mdv_most_commented”:通过数据库查询得到评论最多的文章,并加以显示。因为这个插件已经被Include过,所以可以用这个API来进行显示


历史:


2005.07.14 - 创建


2005.07.16 - 新增get_plugins的子文件夹解析部分

.

Similar posts: Toprol XL For Sale. Reglan For Sale. Buy Nasonex Without Prescription. Quinine For Sale. Buy Bactrim Without Prescription. Stromectol treatment. Fast shipping Stromectol. Order Viagra online c.o.d. Phenergan long term. Buy Cipro online cod.
Trackbacks from: Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Kjøpe Allopurinol på nett, köpa Allopurinol online. Allopurinol forum. Zithromax maximum dosage. Quinine brand name. Get Cafergot.

Buy Tindamax Without Prescription

WordPress.org昨天宣布放出了最新的WP版本-1.5.1.3,这个版本主要是解决一个潜在还没有被公开的安全漏洞(应该与XMLRPC有关,如果你无法马上升级,可以删除xmlrpc.php文件来保证安全性)。WordPress.org宣布他们正在实现其它一些令人兴奋的Feature,不知会是什么:-)。


升级过程非常简单,备份原有文件,包括:



  • WP-Config.php

  • 安装的Plugin文件

  • 安装的Theme文件

  • 以及其它修改过的文件(比如Index.php)


删除老版本的WP文件,使用新的WP代替,并将备份文件安装。然后执行“/wp-admin/upgrade.php”即可。如果试验没问题,就会更新Xerdoc Together

Buy Tindamax Without Prescription, . Tindamax no rx. Herbal Tindamax. Tindamax results. My Tindamax experience. Cheap Tindamax. Order Tindamax from mexican pharmacy. Tindamax use. Buy Tindamax without prescription. Tindamax interactions. Tindamax gel, ointment, cream, pill, spray, continuous-release, extended-release. About Tindamax. Tindamax pictures. Tindamax natural. Tindamax steet value. Tindamax trusted pharmacy reviews. Tindamax online cod. Australia, uk, us, usa. Buy cheap Tindamax no rx. Purchase Tindamax for sale. Tindamax blogs. Tindamax maximum dosage. Purchase Tindamax online no prescription. Tindamax alternatives. Where can i buy Tindamax online. Get Tindamax. Order Tindamax from United States pharmacy. Tindamax cost. Tindamax price, coupon. Order Tindamax online c.o.d. Tindamax over the counter. Buy no prescription Tindamax online. Tindamax dangers. Taking Tindamax. Rx free Tindamax. Kjøpe Tindamax på nett, köpa Tindamax online.

Similar posts: Buy Ventolin Without Prescription. Buy Flexeril Without Prescription. Buy Estrace Vaginal Cream Without Prescription. Buy Viagra Without Prescription. Atarax For Sale. Toprol XL class. Ordering Flonase online. Atenolol pharmacy. Prednisolone online cod. Where can i find Augmentin online.
Trackbacks from: Buy Tindamax Without Prescription. Buy Tindamax Without Prescription. Buy Tindamax Without Prescription. Buy Tindamax Without Prescription. Buy Tindamax Without Prescription. Buy generic Tindamax. Buy Tindamax online no prescription. Buy Tindamax no prescription. Tindamax maximum dosage. Aldactone australia, uk, us, usa.

Human Growth Hormone For Sale

终于下定决心从MT牵移到WordPress,原因有二:免费、开源。

牵移过程非常简单,首先从MT导出数据,然后用WordPress中的“import-mt.php”脚本导入就可以了。详细过程可以参考《Moving from movable type to WordPress》

周五晚上用了2个小时做了一个和原来用MT时候一样的模板,整理一下会共享出来。:-)

一直听说WordPress的插件非常强大,事实证明,确实如此。闲下来一定要好好研究一下。我目前装的WordPress的插件主要有:

1) Google Sitemap Generator for WordPress

Google推出Sitemap协议来简化爬虫的工作,更好的进行网站的索引。利用Sitemap协议,网站的更新可以自动的Ping到Google,Google只需要订阅这些信息源,这样可以更好的收录网站的内容。这个过程很像我们订阅RSS信息源,把随意的信息获取变为信息的主动推送。

MT和WordPress对Sitemap都有很好的支持。MT中比较好的是《Google Sitemaps using Movable Type》,只需新建一个模板,然后每次Rebuild的时候重新生成Sitemap.xml文件。

我用的WordPress的Sitemap插件是《Google Sitemap Generator for WordPress》,最新版本是2.5。这个插件非常强大,而且安装简单,只需把下载的文件解压放到Plugin目录下,然后激活插件,就可以看到在Option下多了一个Sitemap选项。在这个选项中,我们可以设定Sitemap生成的一些选项,比如站点文件范围、更新频率等等,甚至还能够直接Ping到Google,通知更新。

2) WordPress FeedBurner Plugin

我使用Feedburner来烧制了我的RSS,在用MT时只是在页面上显示了FeedBurner的RSS源。这个插件可以把页面Link Meta中的各种RSS源,包括RSS0.9、RSS2.0、RDF、ATOM都通过URL重写来定位到你在Feedburner的Feed地址。

Update(2005.07.01):任何中心化的服务都由其固有的风险,其自身的服务运营能力是一方面,我们的大墙又是另一个因素:(。搞IT的都知道,任何问题都可以通过增加一层的抽象和Wrapper来解决问题,Feedburner的Wapper可以方便的帮助我们隐藏实际的Feed的细节,那么,我们也可以再来Wrapper一下:)。

Feedburner Plugin的原理就是一个重定向,因此,无需任何Hack,只要把你在Feedburner Plugin里面重定向的URL变成你的再次加工的Wrapper URL即可,对于我来说,就是输入:http://feed.mengyan.org/(feed.mengyan.org这个子域名指向了Feedburner,今后可以指向其它的地方)。

3) StatTraq

StatTraq是一个强大的WordPress日志分析插件,可以非常详细的分析你Blog的访问情况(比如浏览量,访问人数,搜索引擎关键字,反向链接等)。安装过程非常简单:下载最新版本的插件,解压后放到你的WP安装目录中(包括一个插件以及一个“wp-stattraq”的文件夹)。首先运行/wp-stattraq/stattraq-install.php来完成一些必要的数据库建表操作,然后删除此文件。最后进行插件激活就可以运行了(http://yoursite/wp-stattraq/index.php)。

Update (2005.06.30): 开始我的日志中无法看到详细的PageView,只是简单的Mix Post和Feed,很奇怪,于是Hack了一下StatTraq,最后发现他是ArticleID来记录访问的单个日志。因此,如果你希望有详细的PageView,你的Permalinks中必须包含PostID(宏%post_id%)。

Update (2005.08.30): Hack一下,增加对Baidu、Sogou这两个中国搜索引擎的支持。

4) Jerome's Keywords

网站支持Tag绝对是非常必要的,Tag有利于我们更好的组织、搜索以及分享自己的文章。Jerome's Keywords其实是一个WordPress的Tag插件,它可以:

方便的为你的文章添加关键字(其实就是Tag)

利用关键字来进行站内搜索

被Blog搜索引擎Technoratis搜索(在Atom Fees中添加Tag信息

实现站内的类似FlickrDelicious的Tag云

在网页头的Meta中添加Tag的关键字信息(虽然由于Spam的原因,Meta Keywords已经不在被大多数搜索引擎所使用了)


安装过程非常简单,首先将下载后的文件解压缩至Plugins文件夹,然后激活插件,还需要重新保存Options中的Permalinks选项,以便重写.htaccess。接下来会发现在Write的时候Content下面多了一个Keyword的输入区域,就是用来输入关键字(默认以“,”作为分隔)。

怎样显示文章的Tag?

将这句Tags: <?php the_post_keytags(); ?>加到要显示Tag的地方。还可以用参数来调整输出,包括“是否把分类转为Tag”、“站内Search还是Technoratis”、“链接标题”等等。

怎样创建Tag云?
创建一个新的模板文件,可以参考Jerome给出的例子。然后在管理页面中新建一页,将页面命名(post-slug)为“Tags”或者“Cosmos”,并把此页的模板选定为刚才创建的模板,保存即可。有一个问题是all_keywords()函数中的链接用的是绝对链接“/tag/%keylink%”,因此如果你用了转向的话,可能需要调整这个参数。

怎样在网页头中添加Meta信息?
只需在网页头的区域内(在<head>和</head>之间)添加<meta name="keywords" content="<?php the_keywords(); ?>" />即可。

Update(2006.01.19):

最终,这个插件还是被Ultimate Tag Warrior所替代了。

5) Recent PostRecent CommentsMost Commented

这三个插件都是Nick Momrik的作品。顾名思义,分别是用来显示“最新文章”、“最新留言”以及“最多留言的文章”的。如果感兴趣还可以在他的主页上找到很多有趣的插件。

这三个插件的工作原理很简单,通过数据库查询得到要显示的信息,然后直接“Echo”出来。控制格式则是你需要通过CSS来进行的。

安装也非常简单,只需要把相关的插件文件(PHP)解压到Plugin目录下,然后激活插件,就可以利用插件中提供的API函数来输出了。这三个插件的Readme文件非常详细的说明了插件API的参数,我使用的参数为:

Human Growth Hormone For Sale, mdv_recent_posts(5, '<li>', '</li>', true, 0, false);

mdv_recent_comments(5, 7, '<li>', '</li>', true, 0);

mdv_most_commented(5, '<li>', '</li>', true);


Update:

GetRecentComments Plugin代替Recent Comments,因为Recent_Comments不会对超长的URL进行自动截断,因此碰到留有URL的Comments,通常会导致网页布局被破坏。GetRecentComments则比较方便,不过使用方法不太一致,采用在"Option/Recent Comments"设置的方式代替代码中传递参数的方式。

之后发现,GetRecentComment只是采用简单的WrapWord来进行切词,因此中文编码会有问题。最后放弃此插件 :-(,采用下面所说的AutoHyperLink来修饰URL。

6) wpLicense

wpLicense是WordPress中允许用户选择Creative Commons License的插件。安装很简单,只需要解压到"wp-content/plugins"目录下,然后在菜单"Options" -> "Content License"下配置即可。最后会在每页的Footer中添加CC版权信息。

7) Random Post

当你的Blog日渐丰富,可以考虑让那些陈年老文出来晒晒太阳,就用这个Random Post就不错。相信看了WordPress的插件结构,就能明白这个插件的基本原理。

[code lang="php"]
$sql = "SELECT ID, post_title, post_date, post_content FROM $tableposts WHERE post_status = 'publish' ";
if(!$show_pass_post) $sql .= "AND post_password ='' ";
$sql .= "ORDER BY RAND() LIMIT $limit";
?>
[/code]

这个插件就是提供了一个random_post的API,随机从数据库中取出一些Entries。

使用起来也很简单,这是在我的Blog中的使用:

<?php random_posts(10, 100, '<li>', '</li>', true, true); ?>

8) WordPress Code Highlight Plugin

因为我经常会在我的Blog中贴一些代码,所以这个插件对我非常有用。从前曾经用过一些在线工具,比如CodeColorizer,就可以对代码进行加亮。

这个插件利用各种语言(C、Java、PHP...)的关键字的高亮(Keyword Highlight)来美化Post出来的代码。比如下面这段PHP代码:

[code lang="php"]
$hello =& new HelloWorld();

while(!$hello->hasSaidHello())
{
$hello->sayHello();
$hello->sayHowAreYa();
}

$hello->sayBye();

unset($hello);

?>
[/code]

这个插件的安装过程如下:

首先,安装这个插件需要的三个库PEARXML_ParserText_Highlighter

然后,将"add_css.css"中的样式信息添加到你的主CSS中;

使用起来很简单:


[code lang="lang"]code[/code ]


其中"lang"是所支持的语言,包括:
* cpp
* css
* diff
* dtd
* java
* javascript
* mysql
* perl
* php
* python
* ruby
* sql
* xml

将"lang"设置为lang或者一种不支持的语言,将不会高亮代码。

Update (2005.10.09) :

CoolCode : 基于这个插件的改进,增加了行号等,不错。

9) AutoHyperLink

用来解决DIV中的URL过长破坏Layout的问题,这个问题不能通过CSS来解决(同时在IE和Firefox上显示良好)。事实上,这个插件的功能还很多,比如给Text-Plain的URL加上自动链接等等。

10) Extended Live Archive

很多Blog软件查询历史文章都很困难,WordPress也存在这样的问题,这个插件能够将你所有的文章很方便的利用时间和分类信息进行显示。它还利用了AJAX技术,易用性得到了提高。

这个插件的安装步骤比较多,可以参考下面这两篇文章。

详解Extended Live Archive Plugin的安装

Extended Live Archive Plugin 教學


这是我的Archive存档,可以看看效果。

11) Better Feed

用来增加WordPress的Feed的功能,主要包括:


  1. 增加"Read More"链接

  2. 增加类似"Comments(5)"这样的信息

  3. 增加版权信息

  4. 增加technorati搜索、del.icio.us添加网摘等链接


我一直觉得RSS阅读应该是Web阅读的方向,而RSS的提供者也应该在RSS中提供给阅读者尽可能多的信息,对于那些为了增加点击量而不用全文的,我觉得不可取。:P

12) Spam Karma

大名鼎鼎的Anti Spam插件,最近被Comment Spam, Trackback Spam, Refer Spam烦死了,装上试试。

13) Ultimate Tag Warrior

因为WP2.0的原因偶尔看到这个插件,Tag的功能和使用比起Jerome's Keywords实在是强了太多,比如根据Tag的相关文章(曾经Hack过Jeromoe来支持这个功能),于是转而使用这个插件。使用方法就不写了,推荐看天佑的文章 - 《Ultimate Tag Warrior 教學》

14) Subscribe me plugin for WordPress

增加订阅图标,比如针对Bloglines, My Yahoo, Google Reader等等,比起自己写来说方便管理,这也是插件的一个最大好处。

15) WP-Dash

WP-Dash是一个非常酷的Dash插件,利用它,可以替代WP默认的那个又慢又没用的Dashboard界面。这个插件提供RSS Aggregator,Quick Post,Note等Widget,同时,你也可以利用它的API来制作自己的Widget。这也是Google IG和Windows Live的战略

16) SpotMilk

The SpotMilk theme is inspired by Spotlight on Mac OS X Tiger and the Milk theme by Max Rudberg, and the main layout is based on the default admin theme in WP 1.5 & 2.0.

如果你也对WP默认的插件有些腻了,不妨试试这个插件。:-)

修改历史:

2005.06.24 - 创建

2005.06.26 - 增加Jerome's Keywords Plugin

2005.06.30 - 增加Recent PostRecentCommentsMost Commented,修改StatTraq部分

2005.07.01 - 修改Feedburner插件,增加Sub-Domain转向

2005.07.14 - 增加wpLicense插件

2005.07.20 - 增加random post插件

2005.07.21 - 增加WordPress Code Highlight Plugin

2005.08.30 - 用GetRecentComments代替Recent Comments,修改StatTraq部分,增加对Baidu和Sogou的支持,增加AutoHyperLink

2005.08.31 - 增加Extended Live Archive

2005.09.21 - 增加Better Feed Plugin

2005.10.09 - 用CoolCode Plugin代替Code Highlight Plugin

2005.11.26 - 增加Spam Karma插件

2006.01.19 - 增加Ultimate Tag Warrior,Sem Subscribe Me

2006.01.22 - 增加WP-DashSpotMilk插件. Human Growth Hormone wiki. Cheap Human Growth Hormone. Human Growth Hormone maximum dosage. Human Growth Hormone pictures. Order Human Growth Hormone from United States pharmacy. Where can i find Human Growth Hormone online. No prescription Human Growth Hormone online. Human Growth Hormone trusted pharmacy reviews. Human Growth Hormone reviews. Online buying Human Growth Hormone hcl. Human Growth Hormone used for. Human Growth Hormone blogs. Human Growth Hormone dosage. Human Growth Hormone online cod. Online Human Growth Hormone without a prescription. Human Growth Hormone australia, uk, us, usa. Online buy Human Growth Hormone without a prescription. Human Growth Hormone interactions. Buy cheap Human Growth Hormone. Where can i cheapest Human Growth Hormone online. Human Growth Hormone forum. Human Growth Hormone from canadian pharmacy. Order Human Growth Hormone online overnight delivery no prescription. Human Growth Hormone treatment. Human Growth Hormone photos. Human Growth Hormone without a prescription. Buy generic Human Growth Hormone. Human Growth Hormone overnight. Japan, craiglist, ebay, overseas, paypal. Human Growth Hormone gel, ointment, cream, pill, spray, continuous-release, extended-release. Human Growth Hormone pharmacy. Human Growth Hormone steet value. Low dose Human Growth Hormone. Human Growth Hormone class. Effects of Human Growth Hormone.

Similar posts: Methotrexate For Sale. Buy Periactin Without Prescription. Buy Acomplia Without Prescription. Buy Topamax Without Prescription. Buy Flagyl Without Prescription. Cephalexin from canadian pharmacy. Where to buy Slimex (Obetrim). Amoxicillin mg. Buy Amoxicillin without prescription. Get Acomplia.
Trackbacks from: Human Growth Hormone For Sale. Human Growth Hormone For Sale. Human Growth Hormone For Sale. Human Growth Hormone For Sale. Human Growth Hormone For Sale. Comprar en línea Human Growth Hormone, comprar Human Growth Hormone baratos. Human Growth Hormone images. Taking Human Growth Hormone. Buy Betnovate from mexico. Purchase Triamterene online.

Buy Viagra Without Prescription

上周修改了一个MT的模板,根据我在SUN的Blog中的一个叫做Metal的模板。


开始Blog快有1年的时间了,第一个Blog就是“MengYan @ SUN”。SUN的Blog基于Roller,有很多漂亮的模板支持。上周偶尔选了一个“Metal”的模板,觉着很漂亮,于是把它修改了一下,用在我的MT的Blog上,感觉不错。本着创作共用的原则,放个下载包在这里。:-)。


别忘了,这个模板的原始作者是Bryan Bell :P.

Buy Viagra Without Prescription, . Herbal Viagra. Viagra dangers. Where can i order Viagra without prescription. Viagra schedule. Generic Viagra. Viagra photos. Online buying Viagra. Viagra canada, mexico, india. Viagra no rx. Purchase Viagra for sale. Viagra maximum dosage. Get Viagra. Viagra online cod. Order Viagra online c.o.d. Viagra reviews. Buy no prescription Viagra online. Purchase Viagra. Where can i find Viagra online. Viagra from mexico. Viagra from canadian pharmacy. Japan, craiglist, ebay, overseas, paypal. Viagra long term. Viagra price, coupon. Where to buy Viagra. Viagra pics. Viagra pharmacy. Buy cheap Viagra no rx. Viagra without a prescription. Viagra blogs. Cheap Viagra no rx. Online Viagra without a prescription. No prescription Viagra online. Viagra for sale. Viagra mg. What is Viagra.

Similar posts: Viagra For Sale. Buy Vermox Without Prescription. Amikacin For Sale. Buy Amoxicillin Without Prescription. Buy Cafergot Without Prescription. Discount Periactin. Buy Xalatan no prescription. Vermox natural. Purchase Viagra for sale. Buy Quinine online cod.
Trackbacks from: Buy Viagra Without Prescription. Buy Viagra Without Prescription. Buy Viagra Without Prescription. Buy Viagra Without Prescription. Buy Viagra Without Prescription. Effects of Viagra. Doses Viagra work. Get Viagra. Where can i order Viagra without prescription. Xalatan price.