![]() |
|
|
API 主页 API 使用入门 API 文档 将您的按钮添加 到库中 按钮库 API 支持论坛 |
为用于 Internet Explorer 的 Google 工具栏 4 自定义按钮制作指南文本介绍如何制作自定义按钮。目前自定义按钮只可在 Internet Explorer 上使用。目录什么是自定义按钮?自定义按钮是您可以添加到 Google 工具栏并具有自定义导航、搜索、发送和更新等功能的按钮。值得一提的是,自定义搜索按钮可使用大多数网站的搜索引擎,而不仅限于 Google 搜索引擎。 单击后,搜索按钮可执行下列任务:
自定义按钮可具有下列用户界面特性:
除上述用户界面属性,自定义按钮还兼具下列属性(保存在 XML 文件中),可执行上述任务:
下列工具栏显示 Slashdot、维基百科和 BBC(突出显示)的自定义按钮示例。BBC 按钮是一个带标题下拉列表(由向下箭头标示)的新闻联合供稿。
添加自定义按钮要将自定义按钮添加到 Google 工具栏或在工具栏中管理自定义按钮,请执行下列操作:
自动创建并添加自定义搜索按钮
结果:安装自定义按钮并可立即使用。 在幕后,此步骤会使用图标创建自定义按钮的 XML 文件,并采用随意的名称将其保存在:
与手动建构自定义搜索按钮相比,此方法的优势在于,对于使用复杂 POST 请求或在其网站上使用重定向而致使难以确定 自定义按钮的 XML 文件
自定义按钮的属性和行为在 XML 文件中使用
<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<site>http://www.wikipedia.org</site>
</button>
</custombuttons>
注意 – 可以在 XML 文件中网址字符串的任何位置添加新行和空格,转译文件时,工具栏会提取其核心内容。这表示您需要确保网址是否需要空格(您不想提取),以便可以使用“%20”替换(如果浏览器尚未替您执行此操作)。下面的很多示例显示分两行键入网址,中间插入了新行,而没有出现任何问题。
注意 - 在本指南的所有示例中,只有
手动创建并安装自定义按钮要在 Google 工具栏上安装自定义按钮,请执行下列操作:
添加按钮标题和工具提示
如下所示,使用
使用
<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<site>http://www.wikipedia.org</site>
<title>Wikipedia</title>
<description>The Free Encyclopedia</description>
</button>
</custombuttons>
自定义搜索按钮使用 Google 工具栏还可创建使用大多数网站搜索引擎的按钮,在该网站上搜索用户键入工具栏搜索框中的字词。以下两个示例显示使用维基百科搜索引擎搜索 wikipedia.org 的按钮,以及另一个使用 Google 搜索引擎搜索互联网的按钮。
为此,请采用 注意 - 执行维基百科搜索的自定义按钮
例如,要创建使用维基百科搜索引擎搜索 wikipedia.com 的自定义按钮,对任何字词,从最简单的维基百科查询开始,如“dog”(狗):
<search>http://en.wikipedia.org/wiki/Special:Search?search=
将此搜索元素添加到上一个按钮,我们会得到:
<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<site>http://www.wikipedia.org</site>
<title>Wikipedia</title>
<description>The Free Encyclopedia</description>
<search>http://en.wikipedia.org/wiki/Special:Search?search=
请注意网址中的“与”符号 (&) 已换码为“ 执行 Google 搜索的自定义按钮
要创建使用 Google 搜索引擎搜索互联网的自定义按钮,对任何字词,从最简单的 Google 查询开始,如“dog”(狗):
<search>http://www.google.com/search?q={query}</search>
下面是一个示例: Slashdot 搜索
<search>http://slashdot.org/search.pl?query={query}</search>
将搜索动作作为 POST 发送
要将搜索动作作为 POST 而不是 GET 发送,请在搜索元素中包含 Onion 搜索此示例使用张贴方法发送贴子数据(突出显示): <search method="post">http://www.theonion.com/content/search/node ?edit%5Bkeys%5D={query}</search> 更新自定义按钮用来托管按钮 XML 文件所使用的下载网址是更新按钮的唯一 ID。如果尝试第二次从同一网址下载按钮,工具栏仅会提供旧按钮的替换产品,而不会添加新按钮。
在添加按钮的五种方式中,第一种和最后一种可自动获知按钮更新的来源,并且忽略所有写入 XML 文件的 <update>http://buttons.com/updated_button.xml</update> 按钮选项
借助用户可轻松在工具栏设置对话框中更改的
<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<title>Weather</title>
<option>
<title>Zip code</title>
<description>Enter a US zip code. For example, 94043 is Mountain View, CA</description>
<default>94043</default>
</option>
<site>http://www.google.com/search?q=weather+{option1}</site>
</button>
</custombuttons>
需要提供选项标题。不需要提供默认值和说明。使用任何网址模板规范内的变量 {option1} 插入用户文字。 这一次没有输入确认或空白区域裁剪,并且 {option1} 变量将会对用户使用 utf-8 编码键入的所有内容换码和 cgi 参数换码,就好像提交表单时文字修改框所作的那样。 包含当前网址
除了发送搜索查询,您还可以指定浏览器以三种不同的方式显示当前网址:带编码的
此示例使用
<site>http://web.archive.org/web/*/
下列示例执行的工作与 archive.org 搜索相同,但使用
<site method="post">http://www.archive.org/searchresults.php?search=
如果您希望在当前网站内使用 Google 搜索引擎,请使用
<search>http://www.google.com/search?q=site:
包含 Google 域后缀
Google 工具栏具有获取域的
应当使用变量
<search>http://www.google.
发送用户选中的文字您也可以允许自定义按钮将用户在网页上选中的一小段纯文本发送出去。这对翻译服务很实用,或许对发送博客或消息传递也有用。选中文字后,自定义按钮图标上将出现小文字图标。
此操作需要
<send>http://www.google.com/search?hl=en&lr=&q=define%3A+
选中文字后,在浏览器中右击鼠标按钮,显示的上下文菜单中也将包含执行发送操作的自定义按钮。 测试变量是否存在
随着工具栏的升级,可能执行更多的网址变量。为了对这些新变量提供向上和向下兼容性,所有自定义按钮的意识解析工具均可使用 {param_to_be_tested?use this text if the param is implemented:use this text if not}
简言之,它允许高级自定义按钮的创建者安全地使用新功能,并允许对不知道新功能的旧解析工具实现向下兼容。例如,假设 {locale} 变量是新引入的变量。可以使用与此类似的网址模板来确保其不致对旧版工具栏产生影响: <site>http://google.com/{locale??hl={locale}}</site>
如果工具栏支持 {locale} 变量,则应当扩展为: <site>http://google.com/?hl=en</site> 如果不支持,则为: <site>http://google.com/</site>
只要嵌套发生在问号 (?) 之后,则最深的 <site>http://google.com/{locale??hl={domain?{domain}:{query}}}</site>
还应注意的是,如果解析工具无法识别换码,将使用空字符串替换。因此“Hell{blah}o World”将解析为“Hello World”。并且,如果出现大括号“{”或“}”数目不匹配,或任何其他解析问题,整个网址将会重设为空字符串。 如何制作外形美观的图标大多数可用作 Favicons 的图标也可以用作自定义按钮的图标,包括 16x16 的 BMP、ICO、GIF 和 JPEG 图片。只需将其编码为使用 base64 编码的 ASCII 文本。互联网上有数个网站可为您执行此操作,如这一个。在该网站上,使用“Browse...”(浏览)按钮选择您要编码的文件,然后单击“Convert the source data”(转换源数据)按钮开始编码。Javascript 和 PHP 也有一个命令行可执行 base64 编码。
以下为 base64 编码的 Gmail 图标,使用了
<icon mode="base64" type="image/x-icon">
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ONr/ODja/6en+f+np/n/p6f5/6en+f+np/n/p6f5
/6en+f+np/n/p6f5/6en+f+np/n/p6f5/zg42v84ONr/ODja/zg42v/i4v//////////////////
/////////////////////////////////////+Li//84ONr/ODja/zg42v84ONr/p6f5/+Li////
/////////////////////////////////////////+Li//+np/n/ODja/zg42v84ONr/ODja/+Li
//+np/n/4uL/////////////gYHy/4GB8v///////////+Li//+np/n/4uL//zg42v84ONr/ODja
/zg42v//////4uL//6en+f+2tv//gYHy/1pa6f9aWun/gYHy/7a2//+np/n/4uL///////84ONr/
ODja/zg42v84ONr///////////+2tv//gYHy/1pa6f84ONr/ODja/1pa6f+BgfL/trb/////////
////ODja/zg42v84ONr/ODja////////////gYHy/1pa6f84ONr/trb//7a2//84ONr/Wlrp/4GB
8v///////////zg42v84ONr/ODja/zg42v//////gYHy/1pa6f84ONr/trb/////////////trb/
/zg42v9aWun/gYHy//////84ONr/ODja/zg42v84ONr/gYHy/1pa6f84ONr/trb/////////////
//////////+2tv//ODja/1pa6f+BgfL/ODja/zg42v84ONr/ODja/zg42v84ONr/trb/////////
/////////////////////////7a2//84ONr/ODja/zg42v84ONr/ODja/zg42v84ONr/gYHy/6en
+f+np/n/p6f5/6en+f+np/n/p6f5/6en+f+np/n/gYHy/zg42v84ONr/ODja/wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA//8AAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD//wAA//8AAA==
</icon>
自定义按钮图标可以大于 16x16,但工具栏会将它们缩小为 16x16,因此,除不必过大之外,图标看起来就像是使用高质量的图片编辑器缩放过一样。 外观最佳的图标是使用 24 位颜色 (RGB) 和 8 位 Alpha、并保存为 XP 样式的 RGBA 图标的图片。您可以将图标保存为具有 Alpha 透明度的 16x16 PNG,然后将其转换为 XP 样式的 16x16 图标(使用 IconWorkshop 之类的程序),然后再转换为 base64 编码的格式。由于 Windows 本身并不支持 PNG 文件(需要链接大量的其他东西),因此并不直接支持 PNG 文件。 需要使用 Alpha 通道的原因是并不是所有人的工具栏背景颜色都使用相同的灰色、银色或您设置的颜色。Windows XP 允许用户自定义颜色方案,包括工具栏背景色。您可以使用无任何透明部分的正方形图标来避免此问题,但是这种图标看起来不那么有趣。单色 Alpha 通道,如 GIF 图片,与正常 Alpha 混色的图标相比(如 Google 工具栏或 Internet Explorer 本身),图片外沿可能出现颗粒。 自动更新图标和工具提示关于自定义按钮最有趣的事情之一就是可以在指定的时间间隔从远程服务器上更新按钮图片和工具栏提示。它使用 RSS 联合供稿执行更新。这可以将按钮用作通知工具,或用作状态图标(例如,天气或您能想到的任何内容)。按钮也可以有下拉菜单,其中包含带文字或图标的单个项目。每个菜单项可以有自己的单击后启动的动态网址。有关此功能的示例将在下一节提供。 添加 RSS 联合供稿
RSS 联合供稿使用 <feed refresh-interval="1800">http://rss.cnn.com/rss/cnn_topstories.rss</feed> 获取这些更新联合供稿的协议为 Atom 1.0、Atom 0.3、RSS 2.0 或 RSS 1.0。标准联合供稿通常都会正常运行。 使用联合供稿更新按钮图标/工具提示要通过联合供稿更新工具栏上的图标或工具提示说明,您需要将特定工具栏扩展件添加到使用名称空间的 RSS 或 ATOM。下面是从联合供稿中提取的心情圈圈按钮的示例: <?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<title>Mood ring</title>
<description>Your virtual mood ring</description>
<site>http://www.google.com/search?q=mood+ring</site>
<feed menu="false" refresh-interval="900">
http://www.example.com/custombuttons/samples/feeds/mood</feed>
</button>
</custombuttons>
注意,它指定 如果在实际的服务器上安装了它,联合供稿输出则如下所示: <?xml version='1.0'?>
<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:gtb='http://toolbar.google.com/custombuttons/'>
<id>http://www.example.com/custombuttons/samples/feeds/mood</id>
<title>Mood</title>
<link href='http://www.google.com/search?q=+ring' />
<link rel='self'
href='http://www.example.com/custombuttons/samples/feeds/mood' />
<gtb:description>Bluegreen:
Inner emotions charged, somewhat relaxed</gtb:description>
<gtb:icon mode="base64" type="image/x-icon">
AAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAMAA
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAA
AAAAAAAAAAAGAAAAHAAAAEAAAABhAAAAcwAAAHQAAABpAAAAVQAAAD4AAAApAAAAGAAAAAoAAAAD
AAAAAQAAAAAAAAAAAAAAESZIXl4zdJvAXbHS8m3C3f9LnrrLFUtsmwILEX4AAABzAAAAYQAAAEcA
AAAqAAAAEwAAAAcAAAACAAAAACs9RTNOjrDtW6nS/53u/f+n/P//hej//2bP/P9Fq93wHGaNrxEv
O4kAAAB6AAAAXwAAADwAAAAfAAAADAAAAANihaWST6XK/0h/kcAdKCyWKTtAgVJ/kIhytNKse873
9E+w6v9RuN39SXuJpgQHCIoAAAB2AAAAUQAAACsAAAAPb6nU7mK65v9jqs76KkNPqAUICJoAAACE
AAAAaxUgJWBkrMiwsvv+//D+/v+y1NniIj1FnAAAAIgAAABcAAAALHS74PV1zPn/c835/1Oezv9N
iq7vNVRjrxUiJ5kBAgORAQICh3uLjZz3+vr1+f///4PL5/wvVmusAAAAigAAAFNyu+TPdtL8/0Cp
7v8ng8X/CFOH/ytpjv86gJ//R46z+Th6jsovVmCsd56pxNf2/f9TuPH/W7fs/ypGV6UAAAByf77Y
r02y7P9Zwfb/puH3/y+AtP8jZ5f/KWKH/0p7hP+ZrVr/zcUt/9vMKf/bzSz/tsBP/3OzrP9kl7Pp
AAAAgHGdpThatuT/0fn+//b///+V0uv/NICu/4mvfP/czjL/3M0v/9rMKP/dzzT/3c83/9vNLf/b
zS//nrWA/gAAAIMAMzMFbrrd2d/+///5////t+n6/4q6nf/czzX/3tA+/97QPf/czjP/3dA7/97R
Qv/czjD/3M4z/9DHLPoAAAB/AAAAAWShtUix5+//5v7+/5Hf7//Bvjn/3M0v/9/SSP/g1FL/39RR
/+DVWv/e0kf/3tFA/9zNL//bzCj/AAAAbwAAAAAAAAADcq7Fmpzo8f9rsL3/2ssl/93POf/f0kj/
49pu/+ffhP/q45b/49pp/97SSv/czS//yb0q4wAAAE8AAAAAAAAAAF54hhNrq77BXpCj/7+7Of/c
zjH/3tFH/+bdeP/w7cv/9PLa/+zlnf/g1VP/1so5/mBfJHsAAAArAAAAAAAAAAAAAAABa5GgIHWs
t/dymG3/3tE//9/UUv/o4Ij/9PHT//v67P/v6a3/08xY/3uMX6UAAAAuAAAAEAAAAAAAAAAAAAAA
AAAAAAKSvb9YSoWa+WyagP+wv2X/4NRO/+ngfv/m4Zf/rLeB+lpubIkAAAAlAAAADgAAAAMAAAAA
AAAAAAAAAAAAAAAAAAAAAoqvuDxkkp2gYo+c51mHkv9lk5v/Y4eNtlBfaEgAAAAWAAAACQAAAAIA
AAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAMAA
AADgAAAA8AEAAA==
</gtb:icon>
</feed>
以上示例是 Atom 1.0 联合供稿,包含的 Google 自定义按钮名称空间指定为: xmlns:gtb='http://toolbar.google.com/custombuttons/' 要覆盖随按钮出现的工具提示,请指定: <gtb:description> new-description </gtb:description> 要覆盖随按钮出现的图标,请指定: <gtb:icon> icon-base64-code </gtb:icon> 控制这种复杂的“心情”分析系统的 PHP 脚本如下所示: <?php
header('Content-type: text/xml');
switch(rand(1, 7)) {
case 1:
$icon = "amber.ico";
$desc = "Amber:\nNervous, on edge, uncertain";
break;
case 2:
$icon = "black.ico";
$desc = "Black:\nTense, stressed, working too hard";
break;
case 3:
$icon = "blue.ico";
$desc = "Blue:\nComfortable, breeze, at rest, loveable";
break;
case 4:
$icon = "bluegreen.ico";
$desc = "Bluegreen:\nHeightened inner emotional state, moderately relaxed";
break;
case 5:
$icon = "gray.ico";
$desc = "Gray:\nAnxious, ill at ease, strained";
break;
case 6:
$icon = "green.ico";
$desc = "Green:\nSteady, stable, no emotional turmoil";
brea;
case 7:
$icon = "purple.ico";
$desc = "Dark Blue:\nImpassioned, delighted, whiff of romance";
break;
}
$icon = base64_encode(file_get_contents($icon));
echo "<?xml version='1.0'?>";
echo "\n<feed xmlns='http://www.w3.org/2005/Atom' xmlns:gtb='http://toolbar.google.com/custombuttons/'>";
echo "\n<id>http://www.example.com/custombuttons/samples/feeds/mood</id>";
echo "\n<title>Mood</title>";
echo "\n<link href='http://www.google.com/search?q=$mood+ring' />";
echo "\n<link rel='self' href='http://www.example.com/custombuttons/samples/feeds/mood' />";
echo "\n<gtb:description>$desc</gtb:description>";
echo "\n<gtb:icon mode='base64' type='image/x-icon'>$icon</gtb:icon>";
echo "\n</feed>";
?>
图标应该和脚本位于同一文件夹中。 使用联合供稿更新按钮和下拉菜单图标
您还可以将自定义服务器图标添加到联合供稿下拉菜单上的单个项目上。下面是天气按钮示例,它具有包含下拉菜单(默认值)的联合供稿,但是还可以指定
<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<title>Weather 94043</title>
<description>Weather updates for Mountain View, CA</description>
<site>http://www.google.com/search?q=weather+94043&num=1</site>
<feed refresh-interval="3600" refresh-menuitem="false">
http://www.example.com/custombuttons/samples/feeds/weather?zip=94043</feed>
</button>
</custombuttons>
下面是天气联合供稿外观的示例,在下拉菜单中各个菜单项目旁边都有自定义图标(为简洁起见,大多数图标已经删除 base64 编码的资料)。基于以上示例,它可见于: <?xml version='1.0'?>
<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:gtb='http://toolbar.google.com/custombuttons/'>
<id>http://www.example.com/custombuttons/samples/feeds/weather</id>
<title>Weather Mountain View, CA</title>
<link href='http://www.google.com/search?q=weather+94043/' />
<link rel='self'
href='http://www.example.com/custombuttons/samples/feeds/weather' />
<gtb:description>Mountain View, CA
63F Mostly Cloudy
Humidity: 48%
Wind: NW at 8 mph</gtb:description>
<gtb:icon mode='base64' type='image/x-icon'>
R0lGODlhKAAoANUAAEuc/Pz8/Fik/Ii00k9daZGPivLy8tbW1k2R0uvr6wZj3HSq0f/QMMfHx7a2
tj2F0fu0EePj4yx81neUp4J/eKanphJq3IJtOGB3iI3C5BFt5B5XnWis7H2346jO5/6+IWKo8923
... and so on...
</gtb:icon>
<entry>
<title>Today: Mostly Cloudy 65 | 50</title>
<link href='http://www.google.com/search?q=weather+94043/' />
<id>http://www.example.com/custombuttons/samples/feeds/weather/0</id>
<gtb:icon mode='base64' type='image/x-icon'>
R0lGODlhKAAoANUAAEuc/Pz8/Fik/Ii00k9daZGPivLy8tbW1k2R0uvr6wZj3HSq0f/QMMfHx7a2
tj2F0fu0EePj4yx81neUp4J/eKanphJq3IJtOGB3iI3C5BFt5B5XnWis7H2346jO5/6+IWKo8923
... and so on...
</entry>
<entry>
<title>Thu: 66 | 51</title>
<link href='http://www.google.com/search?q=weather+94043/' />
<id>http://www.example.com/custombuttons/samples/feeds/weather/1</id>
<gtb:icon mode='base64' type='image/x-icon'>
R0lGODlhKAAoAPcAAAAAAP///4WOwPT1+tDT3unr8sHG1ff5/6Wy0mZ8rGqAr3mJrJakxa+zvHSK
tcDBw1R2slBql110njBXjztmqS9OfjtekTZWhGeJuoqctklLTgJYyQJQtQ9hzhRr3BZlzBVRoS1S
... and so on...
</gtb:icon>
</entry>
<entry>
<title>Fri: 67 | 51</title>
<link href='http://www.google.com/search?q=weather+94043/' />
<id>http://www.example.com/custombuttons/samples/feeds/weather/2</id>
<gtb:icon mode='base64' type='image/x-icon'>
R0lGODlhKAAoANUAAObm52ms7k2Q0Uuc/Fmk+v2zDoS01HOp0avP5tvb26CPXQZj3DqG14yLh05Y
Yf/IKv/VN3mCiMPDw6SkpCt82GhxePz8/JG+2pd5NRZu3hBq3fb29rCAFrm5uSN549OWE4WltqHI
... and so on...
</gtb:icon>
</entry>
<entry>
<title>Sat: 67 | 50</title>
<link href='http://www.google.com/search?q=weather+94043/' />
<id>http://www.example.com/custombuttons/samples/feeds/weather/3</id>
<gtb:icon mode='base64' type='image/x-icon'>
R0lGODlhKAAoANUAAObm52ms7k2Q0Uuc/Fmk+v2zDoS01HOp0avP5tvb26CPXQZj3DqG14yLh05Y
Yf/IKv/VN3mCiMPDw6SkpCt82GhxePz8/JG+2pd5NRZu3hBq3fb29rCAFrm5uSN549OWE4WltqHI
... and so on...
</gtb:icon>
</entry>
</feed>
为此,PHP 代码使用天气预报回复格式。 <?php
// Script to convert Google xml weather interface to custom buttons AtomFeed 1.0
// Sample input at http://www.google.com/ig/api?weather=94043
// To see sample output, run this script with ?zip=94043
$zip = $_GET['zip'];
header('Content-type: text/xml');
// http://www.google.com/ig/api?weather=94043
$dom= domxml_open_file("http://www.google.com/ig/api?weather=$zip");
$xpath = xpath_new_context($dom);
// $params = $dom->documentElement->firstChild->getElementsByTagName('param');
$temp = $xpath->xpath_eval('//city/@data');
$city = $temp->nodeset[0]->value;
$icons = $xpath->xpath_eval('//current_conditions/icon/@data');
$icon_url = $icons->nodeset[0]->value;
$icon = base64_encode(file_get_contents("http://www.google.com$icon_url"));
$conditions = $xpath->xpath_eval('//current_conditions/condition/@data');
$condition = $conditions->nodeset[0]->value;
$temp = $xpath->xpath_eval('//current_conditions/temp_f/@data');
$tempf = $temp->nodeset[0]->value;
$temp = $xpath->xpath_eval('//current_conditions/humidity/@data');
$humidity = $temp->nodeset[0]->value;
$temp = $xpath->xpath_eval('//current_conditions/wind_condition/@data');
$wind = $temp->nodeset[0]->value;
echo "<?xml version='1.0'?>";
echo "\n<feed xmlns='http://www.w3.org/2005/Atom' ";
echo "xmlns:gtb='http://toolbar.google.com/custombuttons/'>";
echo "\n<id>http://www.example.com/custombuttons/samples/feeds/weather</id>";
echo "\n<title>Weather $city</title>";
echo "\n<link href='http://www.google.com/search?q=weather+$zip/' />";
echo "\n<link rel='self' href='http://www.example.com/custombuttons/";
echo "samples/feeds/weather' />";
echo "\n<gtb:description>$city\n$tempfF $condition\n$humidity\n$wind";
echo "</gtb:description>";
echo "\n<gtb:icon mode='base64' type='image/x-icon'>$icon</gtb:icon>";
$days = $xpath->xpath_eval('//forecast_conditions/day_of_week/@data');
$conditions = $xpath->xpath_eval('//forecast_conditions/condition/@data');
$icons = $xpath->xpath_eval('//forecast_conditions/icon/@data');
$highs = $xpath->xpath_eval('//forecast_conditions/high/@data');
$lows = $xpath->xpath_eval('//forecast_conditions/low/@data');
for ($i = 0; $i < count($conditions->nodeset); $i++) {
$day_of_week = $days->nodeset[$i]->value;
$condition = $conditions->nodeset[$i]->value;
$high = $highs->nodeset[$i]->value;
$low = $lows->nodeset[$i]->value;
echo "\n<entry>";
echo "\n<title>$day_of_week: $condition $high | $low</title>";
echo "\n<link href='http://www.google.com/search?q=weather+$zip/' />";
echo "\n<id>http://www.example.com/custombuttons/samples/feeds/weather/$i</id>";
$icon_url = $icons->nodeset[$i]->value;
$icon = base64_encode(file_get_contents("http://www.google.com$icon_url"));
echo "\n<gtb:icon mode='base64' type='image/x-icon'>$icon</gtb:icon>";
echo "\n</entry>";
}
echo "\n</feed>";
?>
您还可以使用相同的 http://toolbar.google.com/custombuttons/ 名称空间和说明或者 RSS 1.0、RSS 2.0、Atom 1.0 及 Atom 0.3 联合供稿中的图标标记用于工具栏联合供稿。 多语言自定义按钮可以处理替代网址、图标和针对特定工具栏本地版的文字。下面是完成此项内容的两种方法,我们建议您使用第一种方法。 使用本地版属性
建议的方法是创建 XML 标记列表,每个标记均使用带有 <?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<title>Wikipedia</title>
<site>http://www.wikipedia.org</site>
<site locale="fr">http://fr.wikipedia.org</site>
<site locale="es">http://es.wikipedia.org</site>
<description>The Free Encyclopedia</description>
<description locale="fr">L'encyclopdie libre</description>
<description locale="es">La enciclopedia libre</description>
</button>
</custombuttons>
如果在当前的工具栏语言的本地版中直接找不到 XML 标记,以上列表中的第一个标记会作为默认值使用。 使用 {locale} 变量
替代方法是使用嵌入在网址中的 ISO 本地版表格目前已支持的工具栏本地版有:
在何处托管按钮您使用哪个下载网址来托管按钮的 XML 文件相当重要,因为该网址将成为更新按钮时使用的唯一 ID。如果再次尝试从相同的网址下载按钮,工具栏将仅更换原来的按钮而不添加新按钮。有关更多信息,请参阅更新自定义按钮。 将您的按钮添加到 Google 的按钮库中将您的按钮添加到 Google 的按钮库是让整个世界了解您的新按钮的好方法。您的 XML 文件应该已在某处托管(按钮库将直接链接到该文件),并且按钮应符合我们的编辑指南。 如果为自己拥有的网站创建按钮,您应该在和您网站相同的域上托管 XML 文件。如果在与访问按钮相同的域上托管按钮,Google 按钮库中的按钮会标记为“正式”。这样用户可以轻松地找到针对您网站的正式按钮。 一旦您完成所有操作,填写按钮库提交表单,就可以让 Google 了解您的按钮。 从网站链接到按钮您可以通过创建安装链接使您的按钮可以在自己的网站上使用。当 Google Toolbar 4 用户点击此链接时,系统就会提示他们安装您的按钮。如果用户没有工具栏的兼容版本,此链接则会指向 Google 工具栏下载页。 开发人员可通过使用以下网址语法创建安装链接: http://toolbar.google.com/buttons/add?url=url
网址指向自定义按钮 XML 文件的位置。例如,这里是安装 Slashdot.com 按钮的链接: <a href="http://toolbar.google.com/buttons/add?url=http://www.slashdot.org/slashdot_button.xml">Add</a> 此链接的标签是“添加”。当用户点击此链接时,Slashdot.com 按钮将安装在其 Google 工具栏中。 上面的 Google 网址通常是一个触发网址,用于工具栏安装任何自定义按钮。如果用户没有工具栏的兼容版本,系统就不会提示他们安装。一旦工具栏已安装,自定义按钮将自动添加。 管理您的联合供稿点击量有联合供稿的网站点击量是人们关心的问题。如果您有理由相信按钮会流行并且有很大的点击量,请不要将按钮的联合供稿指向低速带宽服务器。服务器可能由于刷新请求而超载。 自定义按钮有自己针对联合供稿的刷新间隔属性。工具栏承认服务器在 HTTP 头中提供的“超时”时间。此设置可以覆盖按钮的刷新间隔。如果您的服务器已超载,就可以延长“超时”时间来减少加载量。例如,如果按钮已设置为每小时刷新一次,“超时”时间可设置为每天刷新,这样可以大大减少点击量(尽管可能限制按钮的刷新)。
以下是将
<?php
$expires = gmdate("D, d M Y H:i:s", time() + 3600 * 24 * 7) . " GMT";
Header("Expires: " . $expires);
?>
来自服务器的 HTTP 响应示例: HTTP/1.1 200 OK Date: Thu, 05 Jan 2006 23:39:54 GMT Server: Apache/2.0.47 (Red Hat Linux) Accept-Ranges: bytes X-Powered-By: PHP/4.3.2 Expires: Thu, 12 Jan 2006 23:39:54 GMT Transfer-Encoding: chunked Content-Type: text/html参考 XML 参考自定义按钮 XML 文件具有以下结构:
<?xml version="1.0" encoding="utf-8"?>
<custombuttons xmlns="http://toolbar.google.com/custombuttons/">
<button>
<!-- XML elements -->
</button>
</custombuttons>
下面的 XML 元素可以在
换码字符XML 文件(和 HTML 文件)中的字符串需要以下三种换码为所显示 HTML 实体的字符:
变量参考
请注意,条件
以下变量或换码参数已经在特定范围内列出的元素中使用。例如,
|