![]() |
|
|
API 主網頁 開始使用 API API 說明文件 將您的按鈕加到 集合中 按鈕集 API 討論群組 |
適用 Internet Explorer 的 Google 工具列 4 的《建立自訂按鈕指南》本文件說明如何建立自訂按鈕。 自訂按鈕目前只適用於 Internet Explorer。目次
何謂自訂按鈕?自訂按鈕是您可以加入 Google 工具列的按鈕,這種按鈕可以擁有自訂瀏覽、搜尋、傳送及更新等功能。 其中,自訂搜尋按鈕幾乎可以使用任何網站的搜尋引擎,而不限於 Google 的搜尋引擎。 按一下搜尋按鈕即可執行下列任何一項工作:
自訂按鈕可以具有下列使用者介面的功能:
除了上述使用者介面的功能外,自訂按鈕也可具有下列能夠執行上述工作的內容 (儲存在 XML 檔):
下列工具列顯示 Slashdot、Wikipedia 和 BBC (以顏色標明之處) 等自訂按鈕的範例。 BBC 按鈕是新聞資訊提供,包含一份頭條新聞的下拉式清單 (以向下箭頭表示)。
新增自訂按鈕若要在 Google 工具列上新增或管理自訂按鈕:
自動建立及新增自訂搜尋按鈕
結果: 自訂按鈕安裝完成,而且可以立即使用。 上述程序會在幕後建立具有圖示的自訂按鈕 XML 檔,並以雜湊名稱 (hashed name) 將這個檔案儲存在下列位置:
這種方法擁有一項手動建立自訂搜尋按鈕比不上的優勢,那就是它非常適用於使用複雜 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 檔裡的 URL 字串的任何位置包含新行字元或空格;工具列會在解譯檔案時去除這些新行字元或空格。 這表示如果您的 URL 需要空格 (也就是說您不想將空格去除),您必須以 "%20" 取代空格 (如果瀏覽器尚未代替您執行這項動作)。 下列許多範例都顯示分成兩行輸入且中間有一個新行字元的 URL;這種格式完全沒有任何問題。
注意 - 在本指南的所有範例中,變更的部分只有
手動建立及安裝自訂按鈕若要在 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 搜尋引擎搜尋 wikipedia.org,另外一個按鈕則使用 Google 搜尋引擎搜尋網際網路。
若要建立自訂搜尋按鈕,請以 注意 - Wikipedia 搜尋的自訂按鈕
例如,若要建立按鈕以使用 Wikipedia 搜尋引擎來搜尋 wikipedia.com,請先使用最簡單的 Wikipedia 查詢來搜尋任何字詞,例如「狗」:
<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=
請注意,URL 中的 & 符號已經改成逸出字元 " Google 搜尋的自訂按鈕
若要建立按鈕以使用 Google 搜尋引擎搜尋網際網路,請先使用最簡單的 Google 查詢來搜尋任何字詞,例如「狗」:
<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 檔案的下載 URL,會變成可以用來更新按鈕的唯一按鈕 ID。 如果您再次嘗試從相同的 URL 下載按鈕時,工具列只會提供取代原有按鈕的選項,而不會讓您新增按鈕。
在新增按鈕的五種方法中,第一種和最後一種方法都會自動取得按鈕更新程式的所在位置,並忽略寫入 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>
選項標題為必要項目, 但是預設值和說明並不是必須項目。 請在任何 url 範本規格內使用變數 {option1} 來插入使用者的文字。 目前本程式並不會驗證輸入文字,也不會刪除空白,而且 {option1} 變數也會像提交表單的文字編輯方塊一樣,使用 utf-8 和 cgi 參數逸出,將使用者輸入的文字轉換成逸出字元。 包含目前的 URL
除了傳送搜尋查詢以外,您也可以利用下列三種方法來指定瀏覽器目前顯示的 URL: 包含編碼的
此範例使用
<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.
傳送使用者選取的文字您也可以使用自訂按鈕傳送使用者可以在網頁上選取的一段純文字。 這項功能適用於翻譯服務、blogging 應用程式或傳訊應用程式。 選取文字之後,自訂按鈕圖示上便會出現一個小型的文字圖示。
這項作業需要使用
<send>http://www.google.com/search?hl=en&lr=&q=define%3A+
選取文字時,包含傳送作業的自訂按鈕也會顯示在瀏覽器的右鍵內容選單中。 測試變數是否存在
隨著工具列的演變,使用者可以執行的 URL 變數也愈來愈多。 為了提供這些新變數的正向與反向相容性,所有支援自訂按鈕的剖析器都會提供 {param_to_be_tested?use this text if the param is implemented:use this text if not}
簡單來說,這個語法可以讓進階自訂按鈕的作者放心地使用新功能,也可以提供無法識別新功能之舊剖析器的反向相容性。 例如,假設 {locale} 是剛採用的新變數, 那麼您就可以使用如下的 URL 範本,確定這個變數不會影響到舊版工具列: <site>http://google.com/{locale??hl={locale}}</site>
如果工具列支援 {locale} 變數,此 URL 範本將擴充為: <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。 此外,如果發生大括弧 '{' 或 '}' 字元左右不對稱的問題,或是其他任何剖析問題,整個 URL 便會重設為空白字串。 如何建立美觀的圖示大部分的 Favicon 圖示也都可以當作自訂按鈕的圖示。 這些圖示包括 16x16 BMP、ICO、GIF 和 JPEG 圖片。 您只需要將這些圖片的編碼改成使用 base64 編碼的 ASCII 文字。 網際網路上有許多網站可以為您執行這項編碼作業 – 例如,這個網站。 請在這個網站上使用 [瀏覽...] 按鈕選取您要編碼的檔案,然後按一下 [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 混色圖示 (例如 Google 工具列上的圖示或 Internet Explorer 本身的圖示) 相比,單色 Alpha 色板 (例如 GIF 圖片) 邊緣的外圍部分將會呈現顆粒狀。 自動更新圖示與工具秘訣自訂按鈕包含許多有趣的功能,其中一項就是定期從遠端伺服器更新本身的按鈕圖片和工具秘訣。 自訂按鈕使用 RSS 資訊提供來進行更新。 這讓按鈕可以當作通知裝置或狀態圖示 (例如氣象或您想得到的任何資訊) 使用。 按鈕可能也會有下拉式選單,用來包含具有文字或圖示的個別項目。 每個選單項目都可以有自己的動態 URL;按一下各個項目即可啟動這些動態 URL。 我們將在下一節提供這些選單項目的範例。 新增 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>";
?>
您也可以在工具列資訊提供中,使用與 RSS 1.0、RSS 2.0、Atom 1.0 和 Atom 0.3 資訊提供相同的 'http://toolbar.google.com/custombuttons/' 名稱領域和說明或圖示標記。 多國語言自訂按鈕可以處理特定工具列地區設定的替代 URL、圖示和文字。 以下列出執行這項作業的兩種方法 -- 建議您使用第一種方法。 使用 locale 屬性
建議的使用方法是建立一份 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} 變數
另一種方法是使用內嵌在 URL 中的 ISO 地區設定表目前支援的工具列地區設定包括:
保存按鈕的位置您用來保存按鈕之 XML 檔案的下載 URL 非常重要,因為該 URL 會變成可以用來更新按鈕的唯一按鈕 ID。 如果您再次嘗試從相同的 URL 下載按鈕時,工具列只會提供取代原有按鈕的選項,而不會讓您新增按鈕。 如需詳細資訊,請參閱更新自訂按鈕。 將按鈕加入 Google 的按鈕集將按鈕加入 Google 的按鈕集是對外公開新按鈕的好方法。 您的 XML 檔必須已經保存在某個位置 (按鈕集會直接連結到這個檔案),而且按鈕必須符合我們的編輯指南。 如果您已經為自有的網站建立了按鈕,就應該將 XML 檔保存在該網站的相同網域上。 如果 Google 按鈕集裡的按鈕保存在該按鈕存取之網站的相同網域上,這些按鈕將會標示為「官方」。 以方便使用者找到您網站的官方按鈕。 完成上述所有步驟之後,請填寫按鈕集提交表單,向 Google 介紹您的按鈕。 連結到網站上的按鈕您可以透過建立安裝連結的方式,在自己的網站上提供您的按鈕。 當 Google 工具列 4 的使用者按一下這個連結時,就會收到安裝按鈕的提示。 如果使用者沒有相容版本的工具列,這個連結就會連結到 Google 工具列的下載網頁。 開發人員可以使用下列 URL 語法建立安裝連結: http://toolbar.google.com/buttons/add?url=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 URL 基本上是工具列安裝任何自訂按鈕的觸發器。 如果使用者沒有相容版本的工具列,就會收到安裝工具列的提示。 工具列安裝完成之後,便會自動加入自訂按鈕。 管理資訊提供流量資訊提供的網頁流量可能會造成問題。 如果您相信按鈕將會愈來愈受歡迎,網頁流量也會愈來愈大,就不應該將按鈕的資訊提供指向頻寬較低的伺服器, 因為伺服器可能因為更新要求而發生超載的狀況。 自訂按鈕本身擁有適用於資訊提供的 refresh-interval 屬性。 工具列會採用伺服器在 HTTP 標頭中提供的「到期」時間。 這項設定會覆寫按鈕的 refresh-interval。 如果伺服器已經超載,您應該延長「到期」時間,以降低其負載。 例如,如果按鈕設定成每一小時重新整理一次,可以將「到期」時間設為每天重新整理一次,如此便可大幅降低流量 (不過這也可能會降低按鈕的更新率)。
下列範例 PHP 指令碼可以將
<?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 元素可以出現在
逸出字元顯示 HTML 實體時,XML 檔案 (和 HTML 檔案) 中的字串必須將下列三個字元轉換成逸出字元:
變數參照
注意 - 變數包含一種條件式
下列變數 (又稱逸出參數) 適用於指定範圍內列出的元素。 例如,
|