Панель инструментов Google
API панели инструментов Google

Руководство по добавлению пользовательских кнопок на панель инструментов Google версии 4 для Internet Explorer

В данном документе описываются действия по созданию пользовательских кнопок. На данном этапе пользовательские кнопки поддерживаются только в браузере Internet Explorer.

Оглавление

Справочники
  • Справочник по XML
  • Замаскированные символы
  • Справочник по переменным
  • Введение

    Что такое пользовательская кнопка?

    Пользовательская кнопка — это кнопка, которую можно добавить на панель инструментов Google и которой можно произвольно присвоить функции навигации, поиска, отправки и обновления. Следует отметить, что пользовательскую кнопку поиска можно использовать при работе с большинством поисковых систем, а не только с поисковой системой Google.

    Нажав кнопку поиска, можно выполнить одну из следующих задач:

    • перейти на веб-сайт (кнопка работает подобно закладке);
    • перейти на веб-сайт и запустить поисковую систему сайта, в которой выполняется поиск текста, введенного пользователем в окно поиска панели инструментов. Например, кнопка "Википедия" позволяет перейти к сайту wikipedia.org и найти указанный пользователем термин. (Перейти можно на любой из локализованных веб-сайтов в зависимости от настройки языка панели инструментов.);
    • отправить выделенный в браузере текст в какую-нибудь службу (например, создать новое сообщение электронной почты, запись в блоге или текстовое сообщение);
    • обновить значок кнопки, подсказку и раскрывающийся список значков и строк с помощью канала RSS.

    Пользовательская кнопка может обладать следующими функциями пользовательского интерфейса:

    • значком, указывающим на целевой сайт или выполняемое действие (<icon>). Этот значок можно обновить с помощью канала RSS (<feed>);
    • раскрывающимся списком значков и строк, который можно вызвать, нажав кнопку со стрелкой. Его содержимое (например, заголовки канала новостей) можно обновить с помощью канала RSS (<feed>);
    • описанием подсказки, которое появляется ненадолго, когда пользователь подводит курсор мыши к кнопке (<description>);
    • необязательным названием, которое может появляться рядом с кнопкой (<title>).

    Помимо свойств, относящихся к вышеуказанным функциям пользовательского интерфейса, пользовательская кнопка может обладать следующими свойствами (сохраненными в файле XML) для выполнения перечисленных выше задач:

    • URL веб-сайта, посещаемого в том случае, когда кнопка нажата, а окно поиска осталось пустым (<site>);
    • URL поиска, который указывает на веб-сайт, посещаемый в случае нажатия кнопки при наличии поискового запроса в окне поиска (<search>);
    • URL отправки для веб-сайта, к которому переходит браузер и куда отправляется выделенный текст (<send>);
    • URL обновления для сайта, с которого можно загрузить обновления для данной кнопки (<update>).

    Ниже приведена панель инструментов с примерами выделенных цветом пользовательских кнопок для перехода на сайты Slashdot, Wikipedia и BBC. Кнопка "BBC" служит для перехода к каналу новостей с раскрывающимся списком заголовков, на который указывает направленная вниз стрелка.

    Добавление пользовательской кнопки

    Добавить пользовательские кнопки на панель инструментов Google или управлять ими можно различными способами.

    • Простейший и наиболее общепринятый способ добавления (установки) пользовательской кнопки состоит в том, чтобы нажать кнопку непосредственно на сайте издателя и подтвердить свое желание добавить ее. Список подобных кнопок представлен в галерее кнопок панели инструментов Google. Издатель использует специальный командный URL, предлагающий пользователю подтвердить свое намерение. Если у него не установлена панель инструментов Google, этот URL используется для перехода к странице загрузки панели инструментов.
    • Второй способ заключается в автоматическом создании и добавлении пользовательской кнопки поиска, когда пользователь нажимает правой кнопкой мыши на окно для ввода условия поиска.
    • Третий способ — редактирование пользовательской кнопки с помощью расширенного редактора панели инструментов Google. Его можно открыть с помощью команды Настройки > Параметры > вкладка "Пользовательские кнопки" > Изменить > Использовать расширенный редактор.
    • Четвертый способ — это создание и установка пользовательской кнопки вручную.
    • Системные администраторы могут публиковать пользовательские кнопки на компьютерах с операционной системой Windows, используя строку групповой политики, присвоенную URL в файле XML. Кроме того, они могут заключить программу установки в оболочку, чтобы записать файл в подпапку "Application data" папки "All Users" в файловой системе Windows.

    Создание пользовательских кнопок

    Автоматическое создание и добавление пользовательской кнопки поиска

    1. Откройте Internet Explorer и перейдите на страницу поиска, для которой нужно создать кнопку поиска.
      Например: www.wikipedia.org

    2. Нажмите правой кнопкой мыши окно поиска на требуемой странице, выберите "Создать пользовательский поиск", а затем нажмите "Добавить".

    Результат: пользовательская кнопка установлена, и ее сразу можно использовать.

    При этом данная процедура незаметно для пользователя создает для пользовательской кнопки файл XML со значком и сохраняет его под случайным именем в папке:

    C:\Documents and Settings\larry\Local Settings\Application Data\Google\Custom Buttons\

    Этот подход предпочтительнее, чем создание пользовательской кнопки поиска вручную, поскольку он хорошо подходит для издателей, использующих сложные запросы POST или перенаправление на свои сайты, что затрудняет определение url-template.

    Файл XML пользовательской кнопки

    Свойства и поведение пользовательской кнопки определены в файле XML с помощью элемента <custombuttons>, для которого установлено пространство имен "http://toolbar.google.com/custombuttons/" с вложенным элементом <button>. В самых простых пользовательских кнопках задействован элемент <site>, определяющий ссылку на веб-сайт. Следующий код XML относится к кнопке, нажав на которую, можно открыть сайт http://www.wikipedia.org в текущем окне браузера:

    <?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, относящаяся к элементу <button>.

    Создание и установка пользовательской кнопки вручную

    Чтобы установить пользовательскую кнопку на панель инструментов Google, выполните указанные ниже действия.

    1. Создайте файл XML для кнопки (см. предыдущий и следующий разделы).
    2. Сохраните его в папке:

      C:\Documents and Settings\username\Local Settings\Application Data\Google\Custom Buttons\filename.xml

      где username — имя пользователя для входа в Windows, а filename — имя, присвоенное файлу XML.

      В примере с сайтом Wikipedia укажите имя пользователя "larry" и сохраните файл XML в папке:

      C:\Documents and Settings\larry\Local Settings\Application Data\Google\Custom Buttons\wikipedia.xml

    3. Затем откройте новое окно Internet Explorer с установленной панелью инструментов Google. Новая кнопка появится с изображением вопросительного знака, как показано на следующем снимке экрана. Нажав на значок с вопросительным знаком, можно перейти на сайт Wikipedia.

    Добавление названия кнопки и подсказки

    Чтобы добавить название кнопки, воспользуйтесь элементом <title> (см. ниже). Название может отображаться справа от кнопки (Настройки > Параметры > Дополнительно > Текстовые надписи на кнопках > Текст полностью) и служить в качестве ее идентификатора в списке пользовательских кнопок (Настройки > Параметры > Пользовательские кнопки). Если кнопка предназначена для поиска, ее название не должно совпадать с названием какой-либо другой пользовательской кнопки поиска, так как оно используется также и в окне поиска панели инструментов Google. (Например, пользователь может перейти к окну поиска, нажав сочетание клавиш "Alt-G", затем нажать направленную вниз стрелку, а затем ввести в окно поиска букву "w" для выбора поисковой системы "wikipedia").

    Для добавления подсказки воспользуйтесь элементом <description>.

    <?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.

    Для этого добавьте элемент поиска <search> url-template </search> в файл XML для этой кнопки. Включите URL запроса поиска, указав переменную {query} (см. примеры ниже). Можно использовать как запрос GET, так и запрос POST, которые выбираются с помощью атрибута method. По умолчанию используется запрос GET. Поддерживаются следующие URL: http: и https:. URL javascript: использовать запрещено. В шаблоне url должны быть замаскированы три символа: "меньше" (<), "больше" (>) и амперсанд (&).

    ПРИМЕЧАНИЕ. Элемент <search> должен содержать переменную {query}. В противном случае кнопка не будет видна.

    Пользовательская кнопка для поиска на сайте Wikipedia

    Например, чтобы создать кнопку для выполнения поиска на сайте wikipedia.com с помощью поисковой системы Wikipedia, начните с выбора простейшего запроса для любого слова (например, "dog"): http://en.wikipedia.org/wiki/Special:Search?search=dog&fulltext=Search. Чтобы вместо этого найти условие, вводимое пользователем в окно поиска на панели инструментов, замените слово "dog" выражением "{query}" и замаскируйте амперсанд (&) следующим образом:

    <search>http://en.wikipedia.org/wiki/Special:Search?search={query}&amp;fulltext=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={query}&amp;fulltext=Search</search>
    
      </button>
    </custombuttons>
    

    Учтите, что амперсанд (&) в URL маскируется ("&amp;"). Строки файлов XML требуют маскирования символов "амперсанд" (&), "меньше" (<) и "больше" (>).

    Пользовательская кнопка для поиска в Google

    Чтобы создать кнопку для поиска в Интернете с помощью поисковой системы Google, начните с выбора простейшего запроса Google для любого слова (например, "dog "): http://www.google.com/search?q=dog. Затем замените это слово выражением "{query}":

    <search>http://www.google.com/search?q={query}</search>
    

    Пример

    Поиск на сайте Slashdot

    <search>http://slashdot.org/search.pl?query={query}</search>
    

    Отправка операции поиска в форме запроса POST

    Для отправки операций поиска в форме запросов POST вместо запросов GET включите атрибут method="post" в элемент поиска. Любой текст, введенный после заключительного вопросительного знака ("?"), будет отправлен как данные запроса POST, относящиеся к форме с синтаксисом на основе URL. Вместо данных с синтаксисом на основе URL на сайте можно использовать данные с синтаксисом на основе формы. В настоящее время этот синтаксис не поддерживается. Кроме того, можно одновременно отправлять параметры CGI и данные запроса POST. Для этого необходимо добавить два символа "?".

    Поиск на сайте Onion

    В данном примере для отправки (выделенных цветом) данных запроса POST используется метод POST:

    <search method="post">http://www.theonion.com/content/search/node
            ?edit%5Bkeys%5D={query}</search>
    

    Обновление пользовательской кнопки

    URL загрузки, используемый для размещения файла XML кнопки, играет роль уникального идентификатора, необходимого для ее обновления. При второй попытке загрузить кнопку с одного и того же сайта панель инструментов предложит лишь заменить старую кнопку, а не добавить новую.

    При использовании первого и последнего из пяти способов добавления кнопки источник обновлений кнопки распознается автоматически, а все <update> значения, внесенные в файл XML, игнорируются. В остальных случаях можно указать в этом файле элемент <update>, чтобы определить место поиска обновлений для кнопки.

    <update>http://buttons.com/updated_button.xml</update>
    

    Настройки кнопок

    Кнопка может указывать на локально определенную строку настроек с помощью тега <option>, который можно легко изменить в диалоговом окне настроек для панели инструментов. Это может пригодиться, например, в том случае, если необходимо использовать кнопку "Погода" для указания почтового кода или кнопку "Котировки" для обозначения символа акции. Например,

    <?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, который отображается в браузере тремя разными способами: {url} с кодировкой, {url.noescape} без кодировки и {url.host} с указанием только адреса веб-сайта.

    В данном примере используется вариант {url.noescape} для отправки текущего URL на сайт archive.org с целью поиска старой версии указанной страницы. Сайт archive.org требует ввода URL без маскирования:

    <site>http://web.archive.org/web/*/{url.noescape}*</site>
    

    В следующем примере аналогичный поиск на сайте archive.org осуществляется с помощью варианта {url}:

    <site method="post">http://www.archive.org/searchresults.php?search={url}&amp;mediatype=mediatype&amp;Submit=Submit</site>
    

    Если требуется применить поисковую систему Google для поиска на текущем сайте, воспользуйтесь вариантом {url.host}. Эта мощная функция недоступна на веб-сайте Google.

    <search>http://www.google.com/search?q=site:{url.host}+{query}</search>
    

    Включение суффикса домена Google

    В панели инструментов Google существует переменная {domain} для получения адреса домена (например, com или co.uk). Для перехода к этому поисковому домену используйте меню панели инструментов Google: Настройки> Параметры> вкладка "Поиск" > Использовать сайт Google. Эта строка стоит после слова "google.".

    Вместо жесткого кодирования строки домена необходимо использовать переменную {domain}. Итак, поиск в Google должен быть задан следующим образом:

    <search>http://www.google.{domain}/search?q={query}</search>
    

    Отправка текста, выбранного пользователем

    Кроме того, можно присвоить пользовательской кнопке функцию отправки фрагмента простого текста, который пользователь может выделить на веб-странице. Это может пригодиться для службы перевода или при создании приложения для ведения блогов или обмена сообщениями. При выборе текста на пользовательской кнопке появляется небольшой значок текстового файла.

    Для выполнения этой операции требуется элемент <send>. Целевой URL операции <send> может отличаться от целевого URL элемента <search>. Тег <send> должен содержать переменную {selection}, указывающую на выделенный в данный момент в браузере простой текст:

    <send>http://www.google.com/search?hl=en&amp;lr=&amp;q=define%3A+{selection}</send>
    

    Кроме того, пользовательские кнопки с операциями отправки представлены в меню, которое открывается в браузере при нажатии правой кнопки мыши, указывающей на выбранный текст.

    Проверка наличия переменной

    По мере разработки панели инструментов могут быть установлены дополнительные переменные URL. В целях обеспечения прямой или обратной совместимости с новыми переменными во все синтаксические анализаторы, поддерживающие пользовательские кнопки, будет включен синтаксис {a?b:c} со следующей семантикой:

    {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 уровней вложения выражений {a?b:c}. Пример допустимого URL:

    <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>:

        <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>. Далее приведен пример канала новостей CNN.

    <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>
    
    

    Учтите, что здесь указан параметр menu="false", который означает, что этот канал используется только для обновления значка и подсказки, а не для заполнения раскрывающегося меню с подпунктами.

    При размещении на фактически существующем сервере информация канала выглядит следующим образом:

    <?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>";
    
    ?>
    
    

    Значки должны находиться в той же папке, что и сценарий.

    Использование канала для обновления значков для кнопок и раскрывающихся меню

    Кроме того, можно присвоить отдельным пунктам раскрывающегося меню канала пользовательские значки с сервера. Далее приведен пример кнопки "Погода", которая связана с каналом с раскрывающимся меню (по умолчанию). В дополнение к этому она содержит параметр refresh-menuitem="false", скрывающий пункт меню обновления всякий раз при успешном подключении к серверу. В результате, меню выглядит понятнее.

    <?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 удалена для ясности. С этим примером можно ознакомиться на странице: http://www.example.com/custombuttons/samples/feeds/weather/?zip=94043

    <?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, в каждом из которых используется атрибут locale="iso-name" с требуемым значением языка iso-name. Далее приведен пример кнопки с французским и испанским альтернативными URL и описаниями:

    <?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}

    Другой способ заключается в использовании переменной {locale}, включенной в URL (например, http://{locale}/wikipedia.org). Этот метод отлично работает, если набор оцениваемых языков в точности соответствует доступным веб-сайтам (как в случае с Google.com). Однако, для большинства пользователей это не подходит. Веб-сайт может существовать на языке, который еще не поддерживается панелью инструментов Google. Обратимся к примеру, ранее упоминавшемуся в этом документе. Несмотря на наличие польской версии сайта Wikipedia (http://pl.wikipedia.org), польский язык (pl) не является "родным" для панели инструментов, и пользователи из Польши не смогут перейти к этому веб-сайту. И наоборот: панель инструментов доступна на португальском языке (Бразилия), хотя у Wikipedia нет сайта на этом языке. Кроме того, можно смешивать операторы с атрибутом locale и операторы с переменной {locale}, если это для Вас подходит. В этом случае первый атрибут все равно будет использоваться по умолчанию.

    Таблица языков ISO

    В настоящее время панель инструментов поддерживает следующие языки:

    Язык ISO Язык
    en Английский
    da Датский
    de Немецкий
    es Испанский
    fi Финский
    fr Французский
    it Итальянский
    ja Японский
    ko Корейский
    nl Голландский
    no Норвежский
    pt-BR Португальский (Бразилия)
    ru Русский
    sv Шведский
    zh-CN Китайский (упрощенный)
    zh-TW Китайский (традиционный)

    Размещение пользовательской кнопки

    Выбор места для размещения кнопки

    Выбор 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 по выбору в будущем значения "неделя" для параметра времени Expires:

    <?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>
    

    В элементе <button> могут присутствовать следующие элементы XML. Любой элемент (кроме <update>) может появляться более одного раза при условии, что каждый раз он будет присваиваться другому языку.

    <title> текст </title>
    Название пользовательской кнопки поиска, которое приводится в списке пользовательских кнопок (Настройки > Параметры > Пользовательские кнопки), а иногда и рядом с кнопкой. Это значение должно быть уникальным, поскольку оно также послужит ключевым словом по умолчанию в том случае, когда оно будет использоваться в качестве типа поиска.
    Этот элемент поддерживает тот же атрибут locale, что и указанный ниже элемент <search>.
    См. пример <title>.
    <description> подсказка </description>.
    Текст подсказки пользовательского поиска, которая появится при наведении курсора на кнопку. Кроме того, он служит описанием, предъявляемым пользователю после загрузки кнопки с веб-сайта.
    Этот элемент поддерживает тот же атрибут locale, что и указанный ниже элемент <search>.
    См. пример <description>.
    <site> url </site>
    Необязательный URL, к которому осуществляется переход при отсутствии нового текста в окне поиска. В целях безопасности протокол ограничен адресами, начинающимися с "http:" и "https:". Будут развернуты следующие переменные в URL: {domain}, {url}, {url.noescape}, {url.host} и {locale}.
    Элемент <site> поддерживает те же атрибуты method и locale, что и указанный ниже элемент <search>.
    См. пример <site>.
    <search> шаблон url </search>
    URL веб-сайта, переход к которому происходит в случае нажатия кнопки при наличии "нового" условия поиска в окне поиска. (Наличие "нового" условия поиска означает, что окно поиска в фокусе.) URL должен начинаться с http: или https:. URL, начинающиеся с javascript:, запрещены. Переменная {query} обязательна для шаблона поиска (и не разрешена в других шаблонах URL). Этот элемент необязателен. Его можно пропустить, если кнопка не должна присутствовать в списке кнопок поиска.
    В элементе поиска могут присутствовать следующие атрибуты:
    method="post"|"get"
    Значение "get" используется по умолчанию. Замените его значением "post", чтобы использовать запрос POST вместо запроса GET для отправки данных формы с синтаксисом на основе URL. При этом должен применяться метод кодирования application/x-www-form-urlencoded. При выполнении поиска весь текст, следующий после последнего вопросительного знака "?", будет отправлен в качестве данных запроса POST.
    locale="en"|"da"|"de"|"es"|"fi"|"fr"|"it"|"ja"|"ko"|"nl"|"no"|"pt-BR"|"ru"|"sv"|"zh-CN"|"zh-TW"
    Указывает на язык, для которого данный элемент может предоставить альтернативный URL. Включает имя языка ISO (например, locale="fr"). Как правило, необходимо указать несколько элементов, у каждого из которых имеется собственный атрибут языка и альтернативный URL. (Когда этот атрибут используется вместе с другими элементами XML, он может указывать на другой значок или текст). См. примеры языков и таблицу языков ISO.
    См. пример <search>.
    <send> шаблон url </send>
    Необязательный URL веб-сайта, переход к которому происходит в том случае, когда в окне поиска отсутствует текст, а пользователь выделил текст в окне браузера. Переменная {selection} обязательна для шаблона отправки (и не разрешена в других URL).
    Элемент <send> поддерживает те же атрибуты method, charset и locale, что и указанный выше элемент <search>.
    См. пример <send>.
    <icon> кодировка base64 </icon>
    Это фактические биты файла .ico в стиле Windows (предпочтительно в стиле XP, 16x16 пикселей, 32-битное изображение RGBA), который используется на многих сайтах под именем "favicon.ico". Поскольку это значение двоичное, оно должно иметь кодировку "base64". При отсутствии значка выбирается значок по умолчанию. Предпочтительный формат — изображения .ico с альфа-сопряжением, 16x16 пикселей, стиль XP. Кроме того, обеспечивается поддержка стандартных изображений произвольного размера в формате ICO, JPG, BMP и GIF, размер которых будет масштабирован до 16x16 пикселей. Значок XP RGBA поддерживается всеми операционными системами, которые поддерживают панель инструментов Google, поэтому не требуется создавать его версии с использованием 256 или 16 цветов. Формат PNG не поддерживается.
    Атрибуты mode и type не являются обязательными. Однако их проще редактировать в редакторе XML, который способен их интерпретировать:
    mode="base64"
    Кодировка значка.
    type="image/x-icon"
    Тип изображения.
    Этот элемент поддерживает тот же атрибут locale, что и указанный выше элемент <search>.
    См. пример <icon>.
    <feed> url </feed>
    Укажите URL для файла XML, соответствующего каналу RSS 2.0 или Atom 0.3/1.0. Этот элемент обеспечивает возможность открытия раскрывающегося меню с названиями каналов RSS, описаниями и автоматически обновляемыми (без участия пользователя) ссылками, похожими на закладки Firefox RSS. Он необязателен и по большей части не применяется при выполнении пользовательского поиска. Переменные {domain} и {locale} также можно задействовать в канале.
    В данном элементе присутствуют следующие атрибуты:
    menu="true"|"false"
    Чтобы убрать раскрывающееся меню с записями из канала, необходимо установить значение "false". Значение по умолчанию — "true".
    refresh-interval="secs"
    Количество секунд, проходящее между перезагрузками канала. Значение по умолчанию — 3600 (1 час). Панель инструментов не будет обновляться чаще, чем 1 раз в минуту, даже если это значение меньше 60.
    refresh-onclick="true"|"false"
    Выберите значение "true", чтобы выполнять принудительную перезагрузку при каждом нажатии кнопки. Значение по умолчанию — "false".
    google-service="true"|"false"
    Выберите значение "true", если речь идет о службе учетных записей Google, которая доступна лишь тогда, когда пользователь вошел в систему Google. Обновление происходит после обнаружения входа пользователя, тогда как выход приводит к очистке пунктов меню.
    Этот элемент поддерживает тот же атрибут locale, что и указанный выше элемент <search>.
    См. пример <feed>.
    <feed-icon> кодировка base64 </feed-icon>
    Альтернативный значок, показываемый при наличии новых элементов канала (формат аналогичен следующему: <icon>). Когда пользователь нажимает кнопку, он приобретает вид обычного значка до поступления новых элементов. Сервер канала может указать значок непосредственно в ответе канала Atom или RSS 2.0. В этом случае значки <feed-icon> и <icon> окажутся вторыми по приоритетности.
    Этот элемент поддерживает тот же атрибут locale, что и указанный выше элемент <search>.
    (Пример значка <feed-icon> отсутствует, но он похож на пример значка <icon>.)
    <feed-description> подсказка </feed-description>.
    Альтернативное описание, показываемое вместо обычной подсказки при наличии новых элементов канала. Когда пользователь нажимает кнопку, оно заменяется обычным описанием вплоть до поступления новых элементов.
    Этот элемент поддерживает тот же атрибут locale, что и указанный выше элемент <search>.
    (Пример описания <feed-description> отсутствует, но он похож на пример описания <description>.)
    <update> url </update>
    URL сайта, откуда было загружено определение этой кнопки и откуда пользователь получит новый файл XML для нее, если нажмет на ссылку обновления (Настройки > Параметры > Пользовательские кнопки > Выбрать кнопку > Изменить > Загрузить последнюю версию). Этот URL будет заменен фактическим URL сайта, с которого была загружена кнопка, если установка не осуществлялась с сайта google.com. Это единственный элемент пользовательской кнопки, который не может иметь атрибут языка.
    См. <update> example.
    <option> подэлементы </option>
    Указывает на локально определенную строку параметров, которую пользователь может легко изменить в диалоговом окне настройки панели инструментов. Значение возвращается в виде переменной {option1}. Этот элемент может включать три подэлемента, первый из которых является обязательным:
    <title>
    Имя параметра. Это название появляется в диалоговом окне настройки панели инструментов. Данный подэлемент является обязательным.
    <description>
    Описание параметра. Пользователь видит это описание. Каждый параметр может иметь несколько описаний. Данный подэлемент является необязательным.
    <default>
    Значение параметра {option1} по умолчанию. Это значение используется в том случае, когда пользователь не вводит значение. Данный подэлемент является необязательным.
    См. пример <option> .

    Маскирование символов

    Строки в файлах XML (и HTML) требуют маскирования следующих трех символов, как указано в представленных ниже фрагментах кода HTML:

    Символ Строка маскирования
    & &amp;
    > &gt;
    < &lt;

    Справочник по переменным

    ПРИМЕЧАНИЕ. Условный синтаксис {a?b:c} существует для переменных, обеспечивающих прямую и обратную совместимость. Дополнительную информацию см. в разделе Проверка наличия переменной.

    В элементах, перечисленных в указанной области, используются следующие переменные или параметры маскирования. Например, {query} может применяться только в элементе <search>.

    {query}
    Переходит в строку, введенную пользователем в окне поиска на панели инструментов. При этом для маскирования пробелов используется символ "плюс" ("+"), для символов пунктуации применяется маскирование с помощью URL, а международные символы преобразуются в кодировку UTF-8. Некоторые веб-сайты могут потребовать применения кодировки запроса, отличной от UTF-8 (например, "родной" кодировки символов той или иной страны). Так, японские сайты требуют наличия кодировки shift-JIS.
    Пример значения: если пользователь введет в окне поиска "появление на свет", эта переменная примет значение "появление на свет".
    Диапазон: элемент <search>
    См. пример {query}.
    {url}
    Принимает значение URL, введенного в адресное поле браузера. При этом кодируются (маскируются) все символы, кроме букв, цифр, точек (.) и символов подчеркивания (_). Например, символ "@" превращается в "%40", а пробел — в "%20".
    Пример значения: http%3A%2F%2Fwww.wikipedia.org (замаскированная версия http://www.wikipedia.org)
    Диапазон: элемент <search>, <site> или <send>
    См. пример {url}.
    {url.host}
    Принимает значение строки веб-сайта.
    Пример значения: www.google.com
    Диапазон: элемент <search>, <site> или <send>
    См. пример {url.host}.
    {url.noescape}
    Принимает значение URL, воспроизведенного в точности так, как он представлен в адресном поле браузера (без дальнейшего кодирования).
    Пример значения: http://www.wikipedia.org
    Диапазон: элемент <search>, <site> или <send>
    См. пример {url.noescape}.
    {domain}
    Принимает значение основного домена поиска в Google для данной панели элементов. Иными словами, возвращается имя домена, соответствующего результатам поиска, а не имя домена, в котором находится пользователь.
    Примеры значений: com и co.uk
    Диапазон: элементы <search>, <site>, <send> или <feed>
    См. пример {domain}.
    {locale}
    Принимает значение языка ISO панели инструментов.
    Примеры значений: en, es и pt-BR
    Диапазон: элемент <search>, <site> или <send>
    См. пример {locale}.
    {selection}
    Превращается в выделенный на данный момент в открытом окне браузера простой текст. Он преобразуется в текст с кодировкой "utf-8" или любой другой кодировкой, указанной с помощью атрибута charset. Cgi при этом маскируется. Если кодирование осуществляется методом, отличным от POST, текст может быть усечен.
    Пример значения: если пользователь введет жирным шрифтом "появление на свет" в окне поиска, эта переменная примет значение "появление на свет", написанное обычным шрифтом.
    Диапазон: элемент <send>
    См. пример {selection}.
    {option1}
    Принимает указанное пользователем значение, взятое из элемента <option>. Эта переменная должна быть вставлена в URL. (Кстати, ей присвоено имя "option1" на случай необходимости добавления новых параметров в будущем.)
    Пример значения: если пользователь указывает почтовый индекс в настройках панели инструментов, относящихся к пользовательской кнопке, эта переменная вернет данное значение (например, "94043"), включив его в URL.
    Диапазон: должен присутствовать в элементах URL <search>, <site>, <send> или <feed>
    См. пример {option1}.