![]() |
|
|
Главная страница API Начало работы с API Документация по API Добавить кнопку в галерею Галерея кнопок |
Руководство по добавлению пользовательских кнопок на панель инструментов Google версии 4 для Internet ExplorerВ данном документе описываются действия по созданию пользовательских кнопок. На данном этапе пользовательские кнопки поддерживаются только в браузере Internet Explorer.ОглавлениеЧто такое пользовательская кнопка?Пользовательская кнопка — это кнопка, которую можно добавить на панель инструментов Google и которой можно произвольно присвоить функции навигации, поиска, отправки и обновления. Следует отметить, что пользовательскую кнопку поиска можно использовать при работе с большинством поисковых систем, а не только с поисковой системой Google. Нажав кнопку поиска, можно выполнить одну из следующих задач:
Пользовательская кнопка может обладать следующими функциями пользовательского интерфейса:
Помимо свойств, относящихся к вышеуказанным функциям пользовательского интерфейса, пользовательская кнопка может обладать следующими свойствами (сохраненными в файле XML) для выполнения перечисленных выше задач:
Ниже приведена панель инструментов с примерами выделенных цветом пользовательских кнопок для перехода на сайты Slashdot, Wikipedia и 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>
ПРИМЕЧАНИЕ. Новые строки и пробелы можно включать в строки URL в любом месте в файле XML — панель инструментов удалит их в ходе интерпретации данного файла. Значит, следует обязательно заменить пробелы, которые необходимо включить в URL (то есть, нельзя удалять), символами "%20" (если браузер еще не сделал это за Вас). Во многих из перечисленных ниже примеров URL разбит на две строки, а новая строка начинается с середины URL, что, однако, не мешает его использовать.
ПРИМЕЧАНИЕ. Во всех примерах данного руководства изменяется только часть кода XML, относящаяся к элементу
Создание и установка пользовательской кнопки вручнуюЧтобы установить пользовательскую кнопку на панель инструментов 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 с использованием поисковой системы Wikipedia и кнопка для поиска в Интернете с помощью поисковой системы Google.
Для этого добавьте элемент поиска ПРИМЕЧАНИЕ. Элемент Пользовательская кнопка для поиска на сайте Wikipedia
Например, чтобы создать кнопку для выполнения поиска на сайте wikipedia.com с помощью поисковой системы Wikipedia, начните с выбора простейшего запроса для любого слова (например, "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=
Учтите, что амперсанд (&) в URL маскируется (" Пользовательская кнопка для поиска в 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В данном примере для отправки (выделенных цветом) данных запроса POST используется метод POST: <search method="post">http://www.theonion.com/content/search/node ?edit%5Bkeys%5D={query}</search> Обновление пользовательской кнопки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>
Необходимо указать название этой настройки. Значение по умолчанию и описание указывать необязательно. Чтобы вставить пользовательский текст, воспользуйтесь переменной {option1}, имеющейся в любой спецификации шаблона url. На данном этапе проверка введенного текста и удаление пробелов не поддерживаются, и переменная {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.
Отправка текста, выбранного пользователемКроме того, можно присвоить пользовательской кнопке функцию отправки фрагмента простого текста, который пользователь может выделить на веб-странице. Это может пригодиться для службы перевода или при создании приложения для ведения блогов или обмена сообщениями. При выборе текста на пользовательской кнопке появляется небольшой значок текстового файла.
Для выполнения этой операции требуется элемент
<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}, шаблон будет выглядеть так: <site>http://google.com/?hl=en</site> В противном случае, он будет выглядеть следующим образом: <site>http://google.com/</site>
При добавлении вложений после символа "?" можно использовать до 10 уровней вложения выражений <site>http://google.com/{locale??hl={domain?{domain}:{query}}}</site>
Необходимо также отметить, что при обработке нераспознаваемого маскирования синтаксический анализатор заменяет его пустой строкой. Поэтому строка "Появлени{любой текст}е на свет." просто превратится в выражение "Появление на свет". При наличии нечетного числа фигурных скобок (символов "{" и "}") или любой другой проблемы синтаксического анализа вместо всего этого URL просто указывается пустая строка. Как создать красивые значкиБольшинство значков категории "Избранное" можно использовать в качестве значков пользовательских кнопок. Поддерживаются следующие форматы изображений: 16x16 BMP, ICO, GIF и JPEG. Остается лишь перевести их в текст ASCII, выбрав кодировку base64. В Интернете существует несколько сайтов, способных выполнить эту операцию вместо Вас — например, этот. Перейдя на него, нажмите кнопку "Обзор", выберите файл, а затем нажмите кнопку "Convert the source data" (Преобразовать исходные данные), чтобы приступить к кодированию. В языках Javascript и PHP также имеются однострочные команды для использования кодировки base64.
Ниже приведен значок Gmail в кодировке base64. Воспользуйтесь элементом
<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-битного альфа-канала и сохраненные в виде значков RGBA в стиле XP. Значок можно сохранить в формате 16x16 PNG с альфа-каналом прозрачности, затем преобразовать его в значок 16x16 в стиле XP (с помощью программы типа IconWorkshop) и, наконец, перевести его в кодировку base64. Прямая поддержка файлов PNG отсутствует, поскольку Windows изначально не поддерживает их без связи с множеством дополнительных объектов. Альфа-канал необходимо использовать, потому что фоновый цвет панелей инструментов других пользователей не обязательно совпадает с выбранной Вами серой, серебряной или бежевой расцветкой панели. Операционная система Windows XP дает пользователям возможность настраивать цветовую гамму, включая фон панели инструментов. Эту проблему можно обойти путем создания квадратного значка без прозрачных элементов, однако такие значки выглядят не очень интересно. В отличие от должным образом созданных значков с альфа-сопряжением, которые используются, например, в панели инструментов Google или в самом Internet Explorer, внешние края одноцветных альфа-каналов будут закругленными и зернистыми, напоминая изображения в формате GIF. Автоматическое обновление значков и подсказокОдна из интересных функций пользовательской кнопки состоит в возможности регулярной загрузки обновленного изображения кнопки и подсказки с удаленного сервера. Для этого применяется канал RSS. Она позволяет использовать кнопку в качестве средства уведомления или значка статуса (например, погоды или любого другого параметра). Кнопка может обладать раскрывающимся меню с пунктами, содержащими текст или значки. Любому пункту меню можно присвоить отдельный динамический 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>";
?>
Пространство имен "'http://toolbar.google.com/custombuttons/" и описание тегов значка для каналов RSS 1.0, RSS 2.0, Atom 1.0 и Atom 0.3 можно использовать также в каналах панели инструментов. МногоязычностьПользовательская кнопка может обрабатывать альтернативные 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}
Другой способ заключается в использовании переменной Таблица языков ISOВ настоящее время панель инструментов поддерживает следующие языки:
Выбор места для размещения кнопкиВыбор URL загрузки, используемого для размещения файла XML кнопки, достаточно важен, поскольку этот URL играет роль уникального идентификатора, необходимого для обновления кнопки. При второй попытке загрузить кнопку с одного и того же сайта панель инструментов предложит лишь заменить старую кнопку, а не добавить новую. Дополнительную информацию см. в разделе Обновление пользовательской кнопки. Добавление кнопки в галерею кнопок GoogleДобавление кнопки в галерею кнопок Google — это замечательный способ поведать всему миру о своей новой кнопке. Ваш файл XML должен быть уже где-то размещен (галерея кнопок будет ссылаться напрямую на этот файл), а кнопка должна соответствовать нашим редакционным правилам. Если кнопка была создана для сайта, которым Вы владеете, необходимо разместить свой файл XML в том же домене, в котором находится Ваш сайт. Если кнопка из галереи кнопок 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. Указанный выше URL сайта Google практически инициирует установку любой пользовательской кнопки на панель инструментов. Если у данного пользователя не установлена совместимая версия панели инструментов, ему предложат установить ее. После установки панели инструментов пользовательская кнопка добавляется автоматически. Управление трафиком каналаПри использовании каналов может возникнуть проблема трафика. Кнопка не должна направлять канал на сервер с низкой пропускной способностью, если у Вас есть основания полагать, что она будет пользоваться популярностью и привлечет большой трафик. Сервер может оказаться перегруженным запросами на обновление. У пользовательской кнопки есть собственный атрибут интервала обновления для каналов. Панель инструментов учитывает значение параметра времени "Истекает", указанное сервером в заголовке HTTP. Этот параметр переопределяет интервал обновления кнопки. Если Ваш сервер перегружен, можно увеличить данное значение, чтобы снизить нагрузку. Например, если обновление кнопки происходит каждый час, путем установки значения параметра времени "Истекает" можно перейти к ежедневному обновлению. Это приведет к резкому снижению трафика, хотя, возможно, и ограничит возможность обновления кнопки.
Далее приведен образец сценария 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) требуют маскирования следующих трех символов, как указано в представленных ниже фрагментах кода HTML:
Справочник по переменным
ПРИМЕЧАНИЕ. Условный синтаксис
В элементах, перечисленных в указанной области, используются следующие переменные или параметры маскирования. Например,
|