<?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>我想网 &#187; Widget</title>
	<atom:link href="http://www.iwanna.cn/topics/develope/widget/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iwanna.cn</link>
	<description></description>
	<lastBuildDate>Sat, 31 Jul 2010 15:12:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>35 个你也许不知道的 Google 开源项目</title>
		<link>http://www.iwanna.cn/archives/2009/12/28/2437/</link>
		<comments>http://www.iwanna.cn/archives/2009/12/28/2437/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 02:05:49 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Tool]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2437</guid>
		<description><![CDATA[Google是支持开源运动的最大公司之一，它们现在总共发布有超过500个的开源项目（大部分都是利用它们的API来完成），本文将列举一些有趣的开源项目，其中很可能有不少你不知道的哦。
文本文件处理：
Google CRUSH  (Custom Reporting Utilities for SHell)

CRUSH是为命令行或shell scripts处理特定文字数据而制作的一系列工具，这里有指南。
C++库和源代码：
Google Breakpad
一个开源的多平台崩溃报告系统。
Google GFlags
Gflags是一个命令行标记的处理库，它可以替代“getopt()”，其内置对C++的支持比如string。指南在此。
Google  Glog
Glog库可执行应用级的登陆，提供基于C++式的登陆API，可用于Linux、BSD和Windows。指南见此。
Google  PerfTools
这个工具可让开发创建更强大的应用程序，特别是那些用C++模版开发的多线程应用程序，包括TCMalloc, heap-checker,  heap-profiler 和cpu-profiler。指南见此还有这里。
Google  Sparse Hash
非常节省内存的hash-map。指南见此。
Omaha – Google  Update
Omaha，也就是Google  Update，它可以保证你的软件随时升级到最新版本，目前很多Windows下的Google软件都是用Omaha升级的，包括Google  Chrome和Google Earth，当然你也可以用于自己的应用程序。指南看这里还有这里。
Protocol  Buffers
Protocol Buffers是一种可扩展编码序列数据的方式，Google在几乎所有内部RPC协议和文件格式都使用了Protocol  Buffers。指南见此。它可以用于很多语言而且被一些IDE所支持，比如NetBeans。
互联网：
Google  Code Pretiffy
这是一个Javascript模块和CSS文件，它可以让HTML页面里的部分源码高亮显示，支持C/C++, Java, Python, Ruby, PHP, VisualBasic, AWK, Bash, SQL, HTML, XML, CSS, JavaScript, Makefiles和部分Perl，不支持Smalltalk和所有的CAML。例子见此。
SpriteMe – easy  [...]]]></description>
			<content:encoded><![CDATA[<p>Google是支持开源运动的最大公司之一，它们现在总共<a href="http://code.google.com/hosting/projects.html" target="_blank">发布有超过500个的开源项目</a>（大部分都是利用它们的<a href="http://www.iwanna.cn/tags/api/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with API">API</a>来完成），<strong>本文将列举一些有趣的开源项目，其中很可能有不少你不知道的哦。</strong></p>
<h4>文本文件处理：</h4>
<p><a href="http://code.google.com/p/crush-tools/" target="_blank">Google CRUSH  (Custom Reporting Utilities for SHell)</a><br />
<span id="more-2437"></span><br />
CRUSH是为命令行或shell scripts处理特定文字数据而制作的一系列工具，<a href="http://code.google.com/p/crush-tools/wiki/CrushTutorial" target="_blank">这里有指南</a>。</p>
<h4>C++库和源代码：</h4>
<p><a href="http://code.google.com/p/google-breakpad/">Google Breakpad</a></p>
<p>一个开源的多平台崩溃报告系统。</p>
<p><a href="http://code.google.com/p/google-gflags/">Google GFlags</a></p>
<p>Gflags是一个命令行标记的处理库，它可以替代“getopt()”，其内置对C++的支持比如string。<a href="http://google-gflags.googlecode.com/svn/trunk/doc/gflags.html" target="_blank">指南在此</a>。</p>
<p><a href="http://code.google.com/p/google-glog/" target="_blank">Google  Glog</a></p>
<p>Glog库可执行应用级的登陆，提供基于C++式的登陆<a href="http://www.iwanna.cn/tags/api/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with API">API</a>，可用于Linux、BSD和Windows。<a href="http://google-glog.googlecode.com/svn/trunk/doc/glog.html" target="_blank">指南见此</a>。</p>
<p><a href="http://code.google.com/p/google-perftools/" target="_blank">Google  PerfTools</a></p>
<p>这个工具可让开发创建更强大的应用程序，特别是那些用C++模版开发的多线程应用程序，包括TCMalloc, heap-checker,  heap-profiler 和cpu-profiler。指南<a href="http://code.google.com/p/google-perftools/wiki/GooglePerformanceTools" target="_blank">见此</a>还有<a href="http://google-perftools.googlecode.com/svn/trunk/doc/index.html" target="_blank">这里</a>。</p>
<p><a href="http://code.google.com/p/google-sparsehash/" target="_blank">Google  Sparse Hash</a></p>
<p>非常节省内存的hash-map。<a href="http://google-sparsehash.googlecode.com/svn/trunk/doc/index.html" target="_blank">指南见此</a>。</p>
<p><a href="http://code.google.com/p/omaha/" target="_blank">Omaha – Google  Update</a></p>
<p>Omaha，也就是Google  Update，它可以保证你的软件随时升级到最新版本，目前很多Windows下的Google软件都是用Omaha升级的，包括Google  Chrome和Google Earth，当然你也可以用于自己的应用程序。指南<a href="http://omaha.googlecode.com/svn/wiki/OmahaOverview.html" target="_blank">看这里</a>还有<a href="http://code.google.com/p/omaha/wiki/DeveloperSetupGuide" target="_blank">这里</a>。</p>
<p><a href="http://code.google.com/p/protobuf/" target="_blank">Protocol  Buffers</a></p>
<p>Protocol Buffers是一种可扩展编码序列数据的方式，Google在几乎所有内部RPC协议和文件格式都使用了Protocol  Buffers。<a href="http://code.google.com/intl/pl/apis/protocolbuffers/docs/overview.html" target="_blank">指南见此</a>。<a href="http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns" target="_blank">它可以用于很多语言而且被一些IDE所支持，比如NetBeans</a>。</p>
<h4>互联网：</h4>
<p><a href="http://code.google.com/p/google-code-prettify/" target="_blank">Google  Code Pretiffy</a></p>
<p>这是一个Javascript模块和CSS文件，它可以让HTML页面里的部分源码高亮显示，支持C/C++, Java, Python, Ruby, PHP, VisualBasic, AWK, Bash, SQL, HTML, XML, CSS, JavaScript, Makefiles和部分Perl，不支持Smalltalk和所有的CAML。<a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html" target="_blank">例子见此</a>。</p>
<p><a href="http://code.google.com/p/spriteme/" target="_blank">SpriteMe – easy  “CSS spirtes”</a></p>
<p>SpriteMe使你可以更轻松的创造CSS Sprites（俗称雪碧……）就是把网站要用到的图片都堆在一张图片里，用CSS控制调用哪个区域。<a href="http://spriteme.org/" target="_blank">它有一个自己的官网在这里</a>。</p>
<p><a href="http://code.google.com/p/reducisaurus/" target="_blank">Redacisaurus</a></p>
<p>Reducisaurus是一个压缩CSS和JS文件的网络服务，基于YUI压缩算法，运行于App Engine。</p>
<p><a href="http://code.google.com/p/jaikuengine/" target="_blank">JaikuEngine</a></p>
<p>JaikuEngine是一个运行于App Engine的微博系统，由<a href="http://www.jaiku.com/" target="_blank">jaiku.com</a>运营。要查看移动客户端的源码可以<a href="http://code.google.com/p/jaikuengine-mobile-client/" target="_blank">看这里</a>，<a href="http://code.google.com/p/jaikuengine/source/browse/trunk/doc/README.txt" target="_blank">这里还有介绍</a>。</p>
<p><a href="http://code.google.com/p/selector-shell/" target="_blank">Selector  Shell</a></p>
<p>Selector Shell是一个基于浏览器的测试工具，它可以让你看到CSS在不同浏览器里的样式，用Javascript写的，<a href="http://selector-shell.appspot.com/" target="_blank">你可以在这里测试</a>。</p>
<p><a href="http://code.google.com/p/google-feedserver/" target="_blank">Google  Feed Server</a></p>
<p>Google Feed Server是一个开源Atom发布协议服务，基于Apache  Abdera框架，允许开发者快速为当前数据源（比如数据库）配置feed。指南<a href="http://code.google.com/p/google-feedserver/wiki/SettingUpADevelopmentEnvironment" target="_blank">见这里</a>和<a href="http://code.google.com/p/google-feedserver/wiki/DatabaseConfigurationForAFeed" target="_blank">这里</a>。</p>
<p><a href="http://code.google.com/p/soc/" target="_blank">Melange, the Spice of  Creation</a></p>
<p>这个项目的目标是创建出一个适合开源贡献流程的框架，比如Google Summer of Code TM (GSoC)项目。使用这个框架你就可以用Google App Engine来运行Google Summer of Code项目，和其它类似项目比如Google Highly Open Participation TM Contest和GHOP。<a href="http://code.google.com/p/soc/wiki/GettingStarted" target="_blank">指南见此</a>。</p>
<p><a href="http://code.google.com/p/namebench/" target="_blank">NameBench</a></p>
<p>它可以查找最快的DNS服务器给你的电脑用，在Mac OS  X、Windows和UNIX系统下都有命令行也有用户界面可以帮你测试，这是Google工程师用20%自由时间写出来的。</p>
<p><a href="http://code.google.com/p/ratproxy/" target="_blank">Rat Proxy</a></p>
<p>一个半自动化的大型被动网络应用安全审查工具，专为精确的探测而优化，<a href="http://code.google.com/p/ratproxy/wiki/RatproxyDoc" target="_blank">文档在此</a>。</p>
<p><a href="http://code.google.com/p/topdraw/" target="_blank">TopDraw</a></p>
<p>Top Draw是一个图形生成程序，使用简单的文字脚本，基于JavaScript编程语言，Top Draw可以创造出非常复杂和有趣的图形。支持Mac OS  10.5以上系统，使用XCode开发。</p>
<p><a href="http://code.google.com/p/etherpad/">etherpad</a></p>
<p>开源的EtherPad，这是一个基于网络的实时合作文档编辑器，这个项目主要是为了演示代码而开发，帮助那些想在自己服务器部署Etherpad的人使用，<a href="http://code.google.com/p/etherpad/wiki/Instructions" target="_blank">这里有如何安装的指南</a>。EtherPad使用JavaScript、Java和Comet服务器来建造实时协作服务。</p>
<p><a href="http://code.google.com/p/chromium/" target="_blank">Chromium</a></p>
<p>Chromium是开源版的Chrome浏览器，Chromium的目标是建立一个新一代的强大网络应用程序，它与Chrome有很多不同之处。<a href="http://code.google.com/p/chromium/wiki/LinuxBuildInstructions" target="_blank">这里有指导如何在Linux上编译Chromium</a>。</p>
<p><a href="http://code.google.com/p/v8/" target="_blank">V8 Google’s open source  JavaScript engine</a></p>
<p>V8是Google的开源JavaScript引擎，用C++写成，用于Chrome浏览器之上。V8使用ECMAScript的ECMA-262 第三版可运行于Windows XP、Vista、Mac OS 10.5和使用IA-32或ARM处理器的Linux。V8可独立运行也可嵌入到任何C++程序里使用，<a href="http://code.google.com/intl/pl/apis/v8/build.html" target="_blank">这里有指南</a>。</p>
<p><a href="http://www.chromium.org/chromium-os" target="_blank">Chromium  OS</a></p>
<p>Chromium OS是开源版的Chrome OS操作系统，提供快速、简单而安全的网络体验，<a href="http://git.chromium.org/" target="_blank">源码在此</a>。</p>
<p><a href="http://source.android.com/download" target="_blank">Android</a></p>
<p>Android是第一个免费、开源而且可完全自定义的移动平台，提供完整的堆栈：一个操作系统、中间件和重要的一用应用，它包含丰富的<a href="http://www.iwanna.cn/tags/api/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with API">API</a>可以让第三方开发者开发出强大的应用程序。</p>
<h4>MySQL工具：</h4>
<p><a href="http://code.google.com/p/google-mysql-tools/" target="_blank">Google  MySQL Tools</a></p>
<p>各种管理、维护和改进MySQL数据库性能的工具，由Google编写，包括：</p>
<ul>
<li>mypgrep.py：一个类似pgrep的工具来管理MySQL连接</li>
<li>compact_innodb.py：可导出和重载所有表格的密集型innodb数据文件</li>
</ul>
<p><a href="http://code.google.com/p/google-mmaim/" target="_blank">Google  mMAIM</a></p>
<p>mMAIM的目标是对MySQL的监控和分析更简单，且可以和任何环境整合使用。它可显示主/从同步状态，一些性能状态，可以返回大量“show”命令的状态等等。</p>
<h4>其它：</h4>
<p><a href="http://code.google.com/p/stressapptest/" target="_blank">Stressful  Application Test (stressapptest)</a></p>
<p>Stressful Application  Test试图让来自处理器和I/O到内存的数据尽量随机化，以创造出模拟现实的环境来测试现在的硬件设备是否稳定，Google就在使用它，现在是Apache  2.0许可，这里有<a href="http://code.google.com/p/stressapptest/wiki/Introduction" target="_blank">介绍</a>、<a href="http://code.google.com/p/stressapptest/wiki/InstallationGuide" target="_blank">安装向导</a>和<a href="http://code.google.com/p/stressapptest/wiki/UserGuide" target="_blank">指南</a>。</p>
<p><a href="http://code.google.com/p/pop-imap-troubleshooter/" target="_blank">Pop  and IMAP Troubleshooter</a></p>
<p>它用于诊断并解决客户端到邮件服务器的连接问题。</p>
<p><a href="http://code.google.com/p/openduckbill/" target="_blank">OpenDuckBill</a></p>
<p>Openduckbill是一个Linux下简单的命令行备份工具，可用于监视文件/目录在有变化后是否标记为备份，并传输这些变化到本地备份目录、远程NFS导出分卷或是用rsync命令导出到远程SSH服务器。<a href="http://code.google.com/p/openduckbill/wiki/OpenduckbillReadme" target="_blank">见安装向导</a>。</p>
<p><a href="http://code.google.com/p/zxing/" target="_blank">ZXing</a></p>
<p>ZXing（发音类似Zebra  crossing）是Java的开源多格式1D/2D条码图像处理库，目的是使用内置在手机上的摄像头拍照并对条码进行解码，而不必与服务器通讯，它被用于Android系统。这里有<a href="http://code.google.com/p/zxing/wiki/GettingStarted" target="_blank">向导</a>和<a href="http://code.google.com/p/zxing/wiki/GetTheReader" target="_blank">支持的设备列表</a>。</p>
<p><a href="http://code.google.com/p/tesseract-ocr/" target="_blank">Tesseract OCR  Engine</a></p>
<p>Tesseract OCR引擎是1995年UNLV Accuracy测试的前三名之一，在1995和2006年之间它的进展不大，但依然是当前精度最高的OCR引擎。这个源码可读取二进制、灰阶或彩色图片 并输出文字，内置一个TIFF阅读器可读取非压缩的TIFF文件，增加libtiff后也可读取压缩图片。<a href="http://code.google.com/p/tesseract-ocr/wiki/ReadMe" target="_blank">指南</a>和<a href="http://code.google.com/p/tesseract-ocr/wiki/FAQ" target="_blank">问答</a>。</p>
<p><a href="http://code.google.com/p/neatx/" target="_blank">Neatx – Open Source  NX server</a></p>
<p>Neatx是一个开源NX服务，类似NoMachine公司商业的NX服务。NX协议比VNX更强大，它们的区别主要在：</p>
<ul>
<li>NX是X11客户端所以不会发送位图</li>
<li>NX可兼容X、VNC和Windows版的Remote Desktop</li>
<li>NX可缓存数据</li>
<li>NX<a href="http://notatnik.mekk.waw.pl/archives/159-Neatx_-_instrukcja_instalacji.html" target="_blank">安装简单</a></li>
</ul>
<p>另外一个可选的项目可以看看Google的<a href="http://freenx.berlios.de/" target="_blank">FreeNx</a>。</p>
<p><a href="http://code.google.com/p/psvm/" target="_blank">PSVM</a></p>
<p>它是<a href="http://books.nips.cc/papers/files/nips20/NIPS2007_0435.pdf" target="_blank">这个文件</a>的代码，这是一个SVM的“支持所有核心”的版本，可多机并行运行，<a href="http://code.google.com/p/psvm/wiki/PSVMUsage" target="_blank">实例见此</a>。</p>
<p><a href="http://golang.org/" target="_blank">GO</a></p>
<p>Google开发的新编程语言，<a href="http://www.google.org.cn/posts/google-new-language-go.html" target="_blank">谷奥有报道</a>。</p>
<p><a href="http://code.google.com/p/google-collections/" target="_blank">The  Google Collections Library for Java</a></p>
<p>这是一系列与Java 5以及更高版本有关的库，Google花钱给买过来了。</p>
<p><a href="http://code.google.com/p/google-styleguide/" target="_blank">Google  styleguide</a></p>
<p>每个主流的开源项目都有它自己的向导形式，比如一系列的演示代码。如果这些代码都按照“Style”的形式来演示，会更友好。</p>
<p>Via <a href="http://blog.0x1fff.com/2009/12/35-google-open-source-projects-that-you.html" target="_blank">0×1fff Blog</a><br />
<a href="http://www.google.org.cn/" target="_blank">谷奥——探寻谷歌的奥秘 (  http://www.google.org.cn )</a>,</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/12/28/2437/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/12/28/2437/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/12/28/2437/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/12/28/2437/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/12/28/2437/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/software/tool/" title="Tool" rel="tag nofollow">Tool</a>, <a href="http://www.iwanna.cn/topics/develope/widget/" title="Widget" rel="tag nofollow">Widget</a>, <a href="http://www.iwanna.cn/tags/widget/" title="Widget" rel="tag nofollow">Widget</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/725/" title="精挑细选，8款适合Blogger使用的音乐分享Widget (2009年04月20日)">精挑细选，8款适合Blogger使用的音乐分享Widget</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/01/1639/" title="WordPress 2.8创建Widget完全攻略 (2009年06月1日)">WordPress 2.8创建Widget完全攻略</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/12/28/2437/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8创建Widget完全攻略</title>
		<link>http://www.iwanna.cn/archives/2009/06/01/1639/</link>
		<comments>http://www.iwanna.cn/archives/2009/06/01/1639/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 08:59:53 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Widget]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[友情链接]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1639</guid>
		<description><![CDATA[我在WordPress-o-Sphere网站上看到一些Wordpress2.8创建Widget指南，但是我并认为它们中任何一个真正涉及了实际应用。我想通过使用Wordpress2.8的Widget类来告诉你如何创建一个实际应用的Widget。
这个教程，我会从建立Widget、设置表单，显示在网站一步步来告诉你。结尾附有可供下载的实例。当然，你也通过把它应用到你的主题中去。如果你不想阅读教程，可以直接到教程结尾下载实例。

建立什么样的Widget实例？
这个教程，我们将建立一个极其简单的实例，但是你会从中看到如何给予用户更多的Widget控制权的高级技术。
实例Widget将显示一个人的姓名和性别。控件将允许输入Widget标题（文本框）、用户名称（文本框），可以选择用户的性别（选择框）和是否允许公开显示性别信息（复选框）。
以下是Widget的外观：

我知道，这个优点简单，但你可以把这些工具应用到更复杂的Widget中。
在恰当的时候载入Widget
我门要做的第一件事情是必须在需要的时候载入Widget。Wordpress提供的widgets_init 操作钩子（Action Hook）使我们能够做到这一点。操作钩子（Action Hook）在Wordpress默认Widget注册后被触发。
&#60;?php

/* Add our function to the widgets_init hook. */
add_action( 'widgets_init', 'example_load_widgets' );

/* Function that registers our widget. */
function example_load_widgets() {
	register_widget( 'Example_Widget' );
}
如果你要创建一个以上的Widget，请在example_load_widgets()函数内为每个Widget使用register_widget()函数。
建立我们的Widget
过去，我们建立Widget是一件很费解的事情。在2.8里，我们只要扩展原有的 WP_Widget类。因此，第一步是建立一个新的类（Class）。
class Example_Widget extends WP_Widget {
然后，我门将要添加第一个函数。这个函数将使我们的Widget不同于默认的，且允许我们设置它。
请注意，类名称和函数名称是相同的。例子中均为 Example_Widget。
	function Example_Widget() {
		/* Widget settings. */
		$widget_ops = array(
				'classname' =&#62;
				'example', 'description' =&#62;
				'An example widget that displays a person\'s name and sex.'
			);

		/* Widget control settings. */
		$control_ops = [...]]]></description>
			<content:encoded><![CDATA[<p>我在WordPress-o-Sphere网站上看到一些Wordpress2.8创建<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>指南，但是我并认为它们中任何一个真正涉及了实际应用。我想通过使用Wordpress2.8的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>类来告诉你如何创建一个实际应用的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>。</p>
<p>这个教程，我会从建立<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>、设置表单，显示在网站一步步来告诉你。结尾附有可供下载的实例。当然，你也通过把它应用到你的主题中去。如果你不想阅读教程，可以直接到教程结尾下载实例。<br />
<span id="more-1639"></span><br />
<span style="font-size: medium;"><strong>建立什么样的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>实例？</strong></span></p>
<p>这个教程，我们将建立一个极其简单的实例，但是你会从中看到如何给予用户更多的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>控制权的高级技术。</p>
<p>实例<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>将显示一个人的姓名和性别。控件将允许输入<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>标题（文本框）、用户名称（文本框），可以选择用户的性别（选择框）和是否允许公开显示性别信息（复选框）。</p>
<p>以下是<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>的外观：</p>
<p><img class="aligncenter size-full wp-image-1647" title="Example Widget Display" src="http://justintadlock.com/blog/wp-content/uploads/2009/05/example-widget.png" alt="Example Widget Display" width="600" height="151" /></p>
<p>我知道，这个优点简单，但你可以把这些工具应用到更复杂的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>中。</p>
<p><span style="font-size: medium;"><strong>在恰当的时候载入<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a></strong></span></p>
<p>我门要做的第一件事情是必须在需要的时候载入<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>。Wordpress提供的<code>widgets_init</code> 操作钩子（Action Hook）使我们能够做到这一点。操作钩子（Action Hook）在Wordpress默认<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>注册后被触发。</p>
<pre><code>&lt;?php

/* Add our function to the widgets_init hook. */
add_action( 'widgets_init', 'example_load_widgets' );

/* Function that registers our <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a>. */
function example_load_widgets() {
	register_widget( 'Example_Widget' );
}</code></pre>
<p>如果你要创建一个以上的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>，请在example_load_widgets()函数内为每个<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>使用register_widget()函数。</p>
<p><span style="font-size: medium;"><strong>建立我们的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a></strong></span></p>
<p>过去，我们建立<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>是一件很费解的事情。在2.8里，我们只要扩展原有的 <code>WP_Widget类</code>。因此，第一步是建立一个新的类（Class）。</p>
<p>class Example_Widget extends WP_Widget {</p>
<p>然后，我门将要添加第一个函数。这个函数将使我们的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>不同于默认的，且允许我们设置它。</p>
<p>请注意，类名称和函数名称是相同的。例子中均为 <code>Example_Widget。</code></p>
<pre><code>	function Example_Widget() {
		/* <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a> settings. */
		$widget_ops = array(
				'classname' =&gt;
				'example', 'description' =&gt;
				'An example <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> that displays a person\'s name and sex.'
			);

		/* <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a> control settings. */
		$control_ops = array(
				'width' =&gt;
				300, 'height' =&gt;
				350, 'id_base' =&gt;
				'example-<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a>'
			);

		/* Create the <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a>. */
		$this-&gt;
		WP_Widget( 'example-<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a>', 'Example <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>', $widget_ops, $control_ops );
	}</code></pre>
<p><code><span style="font-size: medium;"><strong>显示<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a></strong></span></code></p>
<p><code>Example_Widget类的下一个函数负责显示<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>。此代码可能使你优点困惑，因为我们并不知道发生了什么（我们还没有添加控制功能）。</code><code>这这里我们将取得用户设置并根据设置显示。</code></p>
<p><code>还有一点也很重要，确保$before_widget，$after_widget，$before_title，$after_title可以用。这些是由主题实现的，我们不应该硬编码。<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>如何显示是由主题负责的。</code></p>
<pre><code>function <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a>( $args, $instance ) {
	extract( $args );

	/* User-selected settings. */
	$title = apply_filters('widget_title', $instance['title'] );
	$name = $instance['name'];
	$sex = $instance['sex'];
	$show_sex = isset( $instance['show_sex'] ) ? $instance['show_sex'] : false;

	/* Before <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> (defined by themes). */
	echo $before_widget;

	/* Title of <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> (before and after defined by themes). */
	if ( $title )
		echo $before_title . $title . $after_title;

	/* Display name from <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> settings. */
	if ( $name )
		echo '&lt;p&gt;Hello.  My name is' . $name . '.&lt;/p&gt;';

	/* Show sex. */
	if ( $show_sex )
		echo '&lt;p&gt;I am a ' . $sex . '.&lt;/p&gt;';

	/* After <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> (defined by themes). */
	echo $after_widget;
	}</code></pre>
<p><code><span style="font-size: medium;"><strong>确保<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>更新并保存</strong></span></code></p>
<p><code>这一步，我们将设置每个<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>并保存。这是一个简单的程序，我们只是更新用户的设置。</code></p>
<p><code>如果你在表格中使用的是一个像文本输入的功能，而不让用户使用XHTML，那么你应该使用strip_tags()下面的函数。</code></p>
<pre><code>function update( $new_instance, $old_instance ) {
	$instance = $old_instance;

	/* Strip tags (if needed) and update the <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> settings. */
	$instance['title'] = strip_tags( $new_instance['title'] );
	$instance['name'] = strip_tags( $new_instance['name'] );
	$instance['sex'] = $new_instance['sex'];
	$instance['show_sex'] = $new_instance['show_sex'];

	return $instance;
}</code></pre>
<p><code><span style="font-size: medium;"><strong>创建<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>设置面版</strong></span></code></p>
<p><code>Wordpress2.8新的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>类能够轻易创建<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>控制面版。get_field_id()和<code>get_field_name()</code> 函数负责大部分肮脏的工作，使我们更专注于像建立<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>这样更重要的事情。请特别注意这个函数的使用，因为它能使得你的更简单地开发。</code></p>
<p><code>首先，我们可能想要设置一些默认值。通过建立默认值，我们可以控制在用户没有设置时该显示什么。</code></p>
<pre><code>function form( $instance ) {

/* Set up some default <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">widget</a> settings. */
$defaults = array( 'title' =&gt; 'Example', 'name' =&gt; 'John Doe', 'sex' =&gt; 'male', 'show_sex' =&gt; true );
$instance = wp_parse_args( (array) $instance, $defaults ); ?&gt;</code></pre>
<p>表格的前两部分是文本输入框，<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>标题和用户性别。</p>
<pre><code>&lt;p&gt;
	&lt;label for="&lt;?php echo $this-&gt;
	get_field_id( 'title' ); ?&gt;"&gt;Title:&lt;/label&gt;
	&lt;input id="&lt;?php echo $this-&gt;
	get_field_id( 'title' ); ?&gt;" name="&lt;?php echo $this-&gt;
	get_field_name( 'title' ); ?&gt;" value="&lt;?php echo $instance['title'];
	?&gt;" style="width:100%;" /&gt;
&lt;/p&gt;

&lt;p&gt;
	&lt;label for="&lt;?php echo $this-&gt;
	get_field_id( 'name' ); ?&gt;"&gt;Your Name:&lt;/label&gt;
	&lt;input id="&lt;?php echo $this-&gt;
	get_field_id( 'name' ); ?&gt;" name="&lt;?php echo $this-&gt;
	get_field_name( 'name' ); ?&gt;" value="&lt;?php echo $instance['name']; ?&gt;"
	style="width:100%;" /&gt;
	&lt;/p&gt;</code></pre>
<p>表单第二步是这一单选框，允许用户选择性别。</p>
<pre style="padding-left: 30px;">&lt;p&gt;
&lt;label for="&lt;?php echo $this-&gt;get_field_id( 'sex' ); ?&gt;"
&gt;Sex:&lt;/label&gt;
&lt;select id="&lt;?php echo $this-&gt;get_field_id( 'sex' ); ?&gt;"
name="&lt;?php echo $this-&gt;get_field_name( 'sex' ); ?&gt;"
class="widefat" style="width:100%;"&gt;
&lt;option &lt;?php if ( 'male' == $instance['format'] )
echo 'selected="selected"'; ?&gt;&gt;male&lt;/option&gt;
&lt;option &lt;?php if ( 'female' == $instance['format'] )
echo 'selected="selected"'; ?&gt;&gt;female&lt;/option&gt;
&lt;/select&gt;
&lt;/p&gt;</pre>
<p><code>表单的最后一项是一个可供用户选择是否显示性别信息的复选框。</code></p>
<p>&lt;p&gt;<br />
&lt;input class=&#8221;checkbox&#8221; type=&#8221;checkbox&#8221;<br />
&lt;?php checked( $instance['show_sex'], true ); ?&gt;<br />
id=&#8221;&lt;?php echo $this-&gt;get_field_id( &#8217;show_sex&#8217; ); ?&gt;&#8221;<br />
name=&#8221;&lt;?php echo $this-&gt;get_field_name( &#8217;show_sex&#8217; ); ?&gt;&#8221; /&gt;<br />
&lt;label for=&#8221;&lt;?php echo $this-&gt;get_field_id( &#8217;show_sex&#8217; ); ?&gt;&#8221;&gt;<br />
Display sex publicly?&lt;/label&gt;<br />
&lt;/p&gt;</p>
<p><code>唯一还没有完成的是关闭表单函数并完成剩下的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>代码。</code></p>
<pre><code>&lt;?php
}
}
?&gt;</code></pre>
<p><span style="font-size: medium;"><strong>创建属于你自己的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a></strong></span></p>
<p>如果你在Wordpress2.8以前曾经和企图创建一个<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>，那么你可以看看现在是多么的简单。为了帮助人们学习新的系统，我已经把这一教程的代码放到一起，并在里面详细注释了代码的功能。</p>
<p><a href="http://justintadlock.com/downloads/example-widget.zip">下载Widget实例代码</a></p>
<p>我喜欢使用新的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>类，在不久的将来我可能会发布一些<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>。但是，我很想看看你的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/06/01/1639/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/06/01/1639/#comments">1条评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/06/01/1639/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/06/01/1639/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/06/01/1639/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/develope/widget/" title="Widget" rel="tag nofollow">Widget</a>, <a href="http://www.iwanna.cn/tags/widget/" title="Widget" rel="tag nofollow">Widget</a>, <a href="http://www.iwanna.cn/topics/develope/php/wordpress-php-develope/" title="Wordpress" rel="tag nofollow">Wordpress</a>, <a href="http://www.iwanna.cn/tags/links/" title="友情链接" rel="tag nofollow">友情链接</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/725/" title="精挑细选，8款适合Blogger使用的音乐分享Widget (2009年04月20日)">精挑细选，8款适合Blogger使用的音乐分享Widget</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/171/" title="简易Wordpress模板代码帮助手册中文版 (2009年04月3日)">简易Wordpress模板代码帮助手册中文版</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/21/733/" title="最受欢迎的50个免费wordpress模板 (2009年04月21日)">最受欢迎的50个免费wordpress模板</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/13/3113/" title="排名前7位的 Wordpress 404 插件 (2010年05月13日)">排名前7位的 Wordpress 404 插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/29/1215/" title="掌握强大的WordPress的子主题 (2009年05月29日)">掌握强大的WordPress的子主题</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1186/" title="如何给您的Wordpress主题添加幻灯片效果 (2009年05月27日)">如何给您的Wordpress主题添加幻灯片效果</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/22/3288/" title="如何给WordPress站点添加文章投递功能 (2010年05月22日)">如何给WordPress站点添加文章投递功能</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/13/1770/" title="在WordPress2.8中自定义创建分类 (2009年06月13日)">在WordPress2.8中自定义创建分类</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/12/3082/" title="五大WordPress 3.0的新特征 (2010年05月12日)">五大WordPress 3.0的新特征</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/06/01/1639/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google AJAX Libraries API</title>
		<link>http://www.iwanna.cn/archives/2009/05/27/1206/</link>
		<comments>http://www.iwanna.cn/archives/2009/05/27/1206/#comments</comments>
		<pubDate>Wed, 27 May 2009 09:17:59 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Extjs]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[YUI]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Library]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1206</guid>
		<description><![CDATA[
什么是 AJAX 库 API？
AJAX 库 API 是一种内容分布网络，可加载最受欢迎的开源 JavaScript 库的架构。通过使用 Google AJAX API 加载程序的 google.load() 方法，您的应用程序能够迅速从全球任何位置访问不断增长的、最受欢迎的 JavaScript 开源库列表，包括：

jQuery
jQuery UI
Prototype
script.aculo.us
MooTools
Dojo
SWFObject
Yahoo! User Interface Library (YUI)

Google 就每个库的利益直接与关键相关人员配合，并在最新稳定版本发布时接受这些版本。一旦我们托管给定库的版本，我们承诺无限期地托管该版本。
AJAX 库 API 在使用库集合的同时消除了用 JavaScript 开发混搭的不便之处。我们消除了托管库的不便之处、正确地设置缓存标头、与最新错误修正日期保持一致等。
&#60;script src="http://www.google.com/jsapi"&#62;&#60;/script&#62;
&#60;script&#62;
  // Load jQuery
  google.load("jquery", "1");

  // on page load complete, fire off a jQuery json-p query
  // against Google web search
  [...]]]></description>
			<content:encoded><![CDATA[<div class="g-c-gc-home">
<h2>什么是 <a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">AJAX</a> 库 <a href="http://www.iwanna.cn/tags/api/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with API">API</a>？</h2>
<p><a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">AJAX</a> 库 <a href="http://www.iwanna.cn/tags/api/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with API">API</a> 是一种内容分布网络，可加载最受欢迎的开源 JavaScript 库的架构。通过使用 <a href="http://code.google.com/apis/ajax/documentation/">Google AJAX API 加载程序的</a> <code>google.load()</code> 方法，您的应用程序能够迅速从全球任何位置访问不断增长的、最受欢迎的 JavaScript 开源库列表，包括：</p>
<ul>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#jquery">jQuery</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#jqueryUI">jQuery UI</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#prototype">Prototype</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#script_aculo_us">script.aculo.us</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#mootools">MooTools</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#dojo">Dojo</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#swfobject">SWFObject</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#yui">Yahoo! User Interface Library (YUI)</a></li>
</ul>
<p><span id="more-1206"></span>Google 就每个库的利益直接与关键相关人员配合，并在最新稳定版本发布时接受这些版本。一旦我们托管给定库的版本，我们承诺无限期地托管该版本。</p>
<p><a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">AJAX</a> 库 <a href="http://www.iwanna.cn/tags/api/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with API">API</a> 在使用库集合的同时消除了用 JavaScript 开发混搭的不便之处。我们消除了托管库的不便之处、正确地设置缓存标头、与最新错误修正日期保持一致等。</p>
<pre class="prettyprint">&lt;script src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
&lt;script&gt;
  // Load jQuery
  google.load("jquery", "1");

  // on page load complete, fire off a jQuery json-p query
  // against Google web search
  google.setOnLoadCallback(function() {
    $.getJSON("http://<a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">ajax</a>.googleapis.com/<a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">ajax</a>/services/search/web?q=google&amp;v=1.0&amp;callback=?",

      // on search completion, process the results
      function (data) {
        if (data.responseData.results &amp;&amp;
            data.responseData.results.length &gt; 0) {
          var results = data.responseData.results;

          for (var i=0; i &lt; results.length; i++) {
            // Display each result however you wish
            alert(results[i].titleNoFormatting);
          }
        }

      });
    });
&lt;/script&gt;</pre>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/05/27/1206/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/05/27/1206/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/05/27/1206/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/05/27/1206/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/05/27/1206/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/api/" title="API" rel="tag nofollow">API</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/extjs-javascript-ui/" title="Extjs" rel="tag nofollow">Extjs</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/library/" title="Library" rel="tag nofollow">Library</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/prototype/" title="Prototype" rel="tag nofollow">Prototype</a>, <a href="http://www.iwanna.cn/topics/develope/widget/" title="Widget" rel="tag nofollow">Widget</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/yui/" title="YUI" rel="tag nofollow">YUI</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/21/752/" title="WordPress插件API手册 (2009年04月21日)">WordPress插件API手册</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/302/" title="Ajax之XMLHTTP学习理解 (2009年04月9日)">Ajax之XMLHTTP学习理解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/05/27/1206/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>精挑细选，8款适合Blogger使用的音乐分享Widget</title>
		<link>http://www.iwanna.cn/archives/2009/04/20/725/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/20/725/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 04:30:14 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Website]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=725</guid>
		<description><![CDATA[
不必在等待了，这是我继2007年后再一次提出Music Widget的话题。闲话少说，下面切入正题——
1、音乐八宝盒是国内一家较早提供音乐发现、分享以 及试听的Music2.0服务，也是我个人较为较为钟爱的一家个性化音乐视听网站。他们目前提供了四款音乐播放器Widget，分别用于展示用户的音乐口 味、听歌记录和听歌感受 、引用你或者他人创建的歌单 、随机播放电台内的音乐以及引用单曲。
【推荐指数：★★★★☆】
2、友播是一家在国内较早提出音乐DNA概念，并 将其引入到国内的Music2.0网站，它是一个通过内容层的过滤（Content Based Filtering）引擎来帮助人们发现自己的音乐DNA、探索更多好音乐、分享音乐爱好和收藏、结交音乐知音的互联网服务。目前，他们提供了 MiniYOBO、YOBO列表播放器、YOBO小精灵三款音乐播放器挂件。
【推荐指数：★★★★☆】
4、虾米是一个与众不同的音乐分享社区，它建立 在新一代P2P音乐交换系统平台上， 在这里用户可以和朋友一起寻找、分享他们自己喜爱的音乐，并可通过社区中“人”的作用，实现其他音乐分享网站目前所无法提供的多种音乐互动体验等等。目 前，虾米提供了三种形式的Widget，分别为用于显示用户最近听过的好歌-“歌曲播放列表”、用户最喜爱的唱片专辑精选-“唱片架”以及用于即时分享的 “单曲播放器”。
【推荐指数：★★★★☆】
3、巨鲸音乐是国内第一家全面、简单方便、价格 适宜的互联网、手机等新媒体平台中的数字音乐产品在线销售平台。作为一个海量音乐下载平台，巨鲸音乐网在其百万首音乐库中，按照地域、风格、流派、主题、 情境等分类方法，同时通过专业音乐编辑精心挑选制作了数以百计的Top100，以便广大音乐爱好者能够在Top100.cn找到和了解世界范围内最经典和 最流行的音乐。目前，巨鲸音乐网开放了若干音乐播放器Widget，适用于单曲曲目、专辑列表等。
【推荐指数：★★★☆☆】
4、Imeem 是一个基于媒体分享的社会化共享型网络社区。用户可以借助Imeem
平台分享视频、音乐、图片、博文等富媒体内容。他们所提供的音乐播放器也十分的个性，同时，能够为列表中的每首歌曲都新建页面打开播放器，避免了因为网页刷新而带来的音乐中断。
【推荐指数：★★★☆☆】
5、Muzicons 是一个全新的音乐 分享平台，用户可以在这里上传和分享自己喜爱的、且能够充分展示自己心情的音乐文件（只限MP3格式），并将生产的单曲音乐播放器Widget嵌入到自己 的博客中。没有播放列表、没有音乐标签、没有歌手资料、没有社会学元素…. 一个“经典的表情”加上一句“简单的牢骚”，构成了Muzicons 全部的创意理念——用一小段音乐来分享自己的心情。【推荐指数：★★★☆☆】
6、Last.fm 是世界上最大的社交音乐平台。 隶属于美国哥伦比亚广播公司（CBS），音乐库里有超过1亿首歌曲曲目（其中300多万首可以收听）和超过1000万的歌手。其中，Last.fm 所提供的播放器也是相当的惊艳，不过对于追求个性化的用户而言，Last.fm的定制性并不是很好。
【推荐指数：★★★☆☆】
7、Finetune 是一个具有社会性性质的音乐分享社区；在这里用户可以同你的亲朋好友分享你听过的、喜爱的音乐，并可将这些好听的音乐放入到你的播放列表中去。而真正值得 一提的是，Finetune 是一家极具创新精神的互联网公司，他们借助 Flash 平台为其基于 Web 的音乐发现服务构建了一个桌面伴侣、用于社交网络的可嵌入式播放器、以及 Nintendo Wii 的播放器等服务至今让我记忆犹新，在我眼中，几乎是Finetune开创了这个音乐Widget的时代。
【推荐指数：★★★★☆】
8、抽屉是一家专注于社会化书签收藏 的互联网服务，而他们早期推出的基于书签收藏功能的抽屉音乐随意门Widget一直吸引着我的眼球：社会性书签+音乐分享；而这一功能，被公认为社会化书 签的鼻祖Delicious在2009年初才推出类似的服务，我只能说，国内的抽屉太有才了。
【推荐指数：★★☆☆☆】
潜力池：
DiggCD，【关注程度：★★★☆☆】
猫扑爱听，【关注程度：★★★★☆】
蝌蚪，【关注程度：★★★★☆】
SongTaste，【关注程度：★★☆☆☆】

© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Website, Widget, Widget

	您可能会感兴趣的其他文章
	
	WordPress 2.8创建Widget完全攻略 
	35 个你也许不知道的 Google 开源项目 



Feed [...]]]></description>
			<content:encoded><![CDATA[<p><img title="精挑细选，8款适合Blogger使用的音乐分享Widget  By Web2.0 盗盗" src="http://farm4.static.flickr.com/3338/3417924680_7ff1fa02bc_o.png" alt="3417924680 7ff1fa02bc o 精挑细选，8款适合Blogger使用的音乐分享Widget  By Web2.0 盗盗" /></p>
<p>不必在等待了，这是我继<a href="http://www.showeb20.com/?p=453" target="_blank">2007年</a>后再一次提出Music <a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>的话题。闲话少说，下面切入正题——</p>
<p>1、<a href="http://8box.cn/" target="_blank">音乐八宝盒</a>是国内一家较早提供音乐发现、分享以 及试听的Music2.0服务，也是我个人较为较为钟爱的一家个性化音乐视听网站。他们目前提供了四款音乐播放器<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>，分别用于展示用户的音乐口 味、听歌记录和听歌感受 、引用你或者他人创建的歌单 、随机播放电台内的音乐以及引用单曲。</p>
<p>【推荐指数：★★★★☆】</p>
<p>2、<a href="http://yobo.com/" target="_blank">友播</a>是一家在国内较早提出音乐DNA概念，并 将其引入到国内的Music2.0网站，它是一个通过内容层的过滤（Content Based Filtering）引擎来帮助人们发现自己的音乐DNA、探索更多好音乐、分享音乐爱好和收藏、结交音乐知音的互联网服务。目前，他们提供了 MiniYOBO、YOBO列表播放器、YOBO小精灵三款音乐播放器挂件。</p>
<p>【推荐指数：★★★★☆】<span id="more-725"></span></p>
<p>4、<a href="http://xiami.com/" target="_blank">虾米</a>是一个与众不同的音乐分享社区，它建立 在新一代P2P音乐交换系统平台上， 在这里用户可以和朋友一起寻找、分享他们自己喜爱的音乐，并可通过社区中“人”的作用，实现其他音乐分享网站目前所无法提供的多种音乐互动体验等等。目 前，虾米提供了三种形式的<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>，分别为用于显示用户最近听过的好歌-“歌曲播放列表”、用户最喜爱的唱片专辑精选-“唱片架”以及用于即时分享的 “单曲播放器”。</p>
<p>【推荐指数：★★★★☆】</p>
<p>3、<a href="http://top100.cn/" target="_blank">巨鲸音乐</a>是国内第一家全面、简单方便、价格 适宜的互联网、手机等新媒体平台中的数字音乐产品在线销售平台。作为一个海量音乐下载平台，巨鲸音乐网在其百万首音乐库中，按照地域、风格、流派、主题、 情境等分类方法，同时通过专业音乐编辑精心挑选制作了数以百计的Top100，以便广大音乐爱好者能够在Top100.cn找到和了解世界范围内最经典和 最流行的音乐。目前，巨鲸音乐网开放了若干音乐播放器<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>，适用于单曲曲目、专辑列表等。</p>
<p>【推荐指数：★★★☆☆】</p>
<p>4、<a href="http://imeem.com/" target="_blank">Imeem</a> 是一个基于媒体分享的社会化共享型网络社区。用户可以借助Imeem<br />
平台分享视频、音乐、图片、博文等富媒体内容。他们所提供的音乐播放器也十分的个性，同时，能够为列表中的每首歌曲都新建页面打开播放器，避免了因为网页刷新而带来的音乐中断。</p>
<p>【推荐指数：★★★☆☆】</p>
<p>5、<a href="http://muzicons.com/" target="_blank">Muzicons </a>是一个全新的音乐 分享平台，用户可以在这里上传和分享自己喜爱的、且能够充分展示自己心情的音乐文件（只限MP3格式），并将生产的单曲音乐播放器<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>嵌入到自己 的博客中。没有播放列表、没有音乐标签、没有歌手资料、没有社会学元素…. 一个“经典的表情”加上一句“简单的牢骚”，构成了Muzicons 全部的创意理念——用一小段音乐来分享自己的心情。【推荐指数：★★★☆☆】</p>
<p>6、<a href="http://last.fm/" target="_blank">Last.fm </a>是世界上最大的社交音乐平台。 隶属于美国哥伦比亚广播公司（CBS），音乐库里有超过1亿首歌曲曲目（其中300多万首可以收听）和超过1000万的歌手。其中，Last.fm 所提供的播放器也是相当的惊艳，不过对于追求个性化的用户而言，Last.fm的定制性并不是很好。</p>
<p>【推荐指数：★★★☆☆】</p>
<p>7、<a href="http://finetune.com/" target="_blank">Finetune</a> 是一个具有社会性性质的音乐分享社区；在这里用户可以同你的亲朋好友分享你听过的、喜爱的音乐，并可将这些好听的音乐放入到你的播放列表中去。而真正值得 一提的是，Finetune 是一家极具创新精神的互联网公司，他们借助 Flash 平台为其基于 Web 的音乐发现服务构建了一个桌面伴侣、用于社交网络的可嵌入式播放器、以及 Nintendo Wii 的播放器等服务至今让我记忆犹新，在我眼中，几乎是Finetune开创了这个音乐<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>的时代。</p>
<p>【推荐指数：★★★★☆】</p>
<p>8、<a href="http://www.chouti.com/" target="_blank">抽屉</a>是一家专注于社会化书签收藏 的互联网服务，而他们早期推出的基于书签收藏功能的抽屉音乐随意门<a href="http://www.iwanna.cn/tags/widget/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widget">Widget</a>一直吸引着我的眼球：社会性书签+音乐分享；而这一功能，被公认为社会化书 签的鼻祖Delicious在2009年初才推出类似的服务，我只能说，国内的抽屉太有才了。</p>
<p>【推荐指数：★★☆☆☆】</p>
<p><strong>潜力池</strong>：</p>
<p><a href="http://diggcd.com/" target="_blank">DiggCD</a>，【关注程度：★★★☆☆】</p>
<p><a href="http://m.mop.com/" target="_blank">猫扑爱听</a>，【关注程度：★★★★☆】</p>
<p><a href="http://www.kedou.com/" target="_blank">蝌蚪</a>，【关注程度：★★★★☆】</p>
<p><a href="http://songtaste.com/" target="_blank">SongTaste</a>，【关注程度：★★☆☆☆】</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/20/725/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/20/725/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/20/725/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/20/725/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/20/725/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/surf/website/" title="Website" rel="tag nofollow">Website</a>, <a href="http://www.iwanna.cn/topics/develope/widget/" title="Widget" rel="tag nofollow">Widget</a>, <a href="http://www.iwanna.cn/tags/widget/" title="Widget" rel="tag nofollow">Widget</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/06/01/1639/" title="WordPress 2.8创建Widget完全攻略 (2009年06月1日)">WordPress 2.8创建Widget完全攻略</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/12/28/2437/" title="35 个你也许不知道的 Google 开源项目 (2009年12月28日)">35 个你也许不知道的 Google 开源项目</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/20/725/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
