Jak dodać obsługę wyszukiwania omnibox w Google Chrome w swojej witrynie?

150

Gdy wpisuję niektóre adresy URL w omniboksie Google Chrome, widzę w nich komunikat „Naciśnij TAB, aby wyszukać w $ URL”. Na przykład istnieje kilka rosyjskich witryn habrahabr.ru lub yandex.ru. Po naciśnięciu klawisza TAB będziesz mógł wyszukiwać w tej witrynie, a nie w swojej wyszukiwarce. Jak sprawić, by moja witryna mogła to zrobić? Może muszę napisać specjalny kod na swoich stronach?

Abzac
źródło
Jak więc powiedzieć przeglądarce Chrome, że moja witryna korzysta z wyszukiwarki?
Abzac

Odpowiedzi:

204

Chrome zazwyczaj obsługuje to poprzez preferencje użytkownika. (przezchrome://settings/searchEngines )

Jeśli jednak chcesz zaimplementować to specjalnie dla swoich użytkowników, musisz dodać OSD (Open Search Description) do swojej witryny.

Korzystasz z funkcji OmniBox [TAB] przeglądarki Google Chrome dla / na osobistej stronie internetowej?

Następnie dodajesz ten plik XML do katalogu głównego swojej witryny i łączysz do niego w <head>tagu:

<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml" />

Teraz odwiedzający Twoją stronę będą automatycznie umieszczać informacje o wyszukiwaniu w Twojej witrynie w wewnętrznych ustawieniach Chrome pod adresem chrome://settings/searchEngines .

Przykład formatu XML OpenSearchDescription

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>Your website name (shorter = better)</ShortName>
<Description>
Description about your website search here
</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/x-icon">your site favicon</Image>
<Url type="text/html" method="get" template="http://www.yoursite.com/search/?query={searchTerms}"/>
</OpenSearchDescription>

Ważną częścią jest <url>przedmiot. {searchTerms}zostanie zastąpione tym, czego użytkownik szuka w omnibarze.

Tutaj jest łącze do OpenSearch, aby uzyskać więcej informacji.

element119
źródło
9
Zwróć uwagę, że w przeciwieństwie do przeglądarki Firefox, Chrome wykryje opis otwartego wyszukiwania tylko wtedy, gdy umieścisz go w katalogu głównym swojej witryny .
varepsilon
2
Czy istnieje sposób, aby to „wyszukiwanie w omniboksie” działało w przeglądarce Firefox?
JinSnow
Jak znaleźć adres URL prowadzący bezpośrednio do pola zapytania w witrynie docelowej? (na przykład w tłumaczeniu Google)
JinSnow
2
odpowiedź dla tłumacza google dodaj to do swojej wyszukiwarki: translate.google.com/?source=osdd#auto|auto|%s
JinSnow
Dodanie wyszukiwarek pod adresem chrome://settings/searchEnginesto oszczędność czasu! Dzięki!
Esdras Lopez
30

Wdrażanie obsługi omniboksa z sugestiami wyszukiwania

Odpowiedź udzielona przez @ element119 działa idealnie, ale tutaj jest nieco zmodyfikowany kod obsługujący sugestie wyszukiwania, a także Pomoc Mozilli.

Wykonaj poniższe czynności, aby zaimplementować obsługę omnibox w swojej witrynie.

  1. Zapisz następujący kod jako search.xml
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  <script/>
  <ShortName>Site Name</ShortName>
  <Description>Site Description (eg: Search sitename)</Description>
  <InputEncoding>UTF-8</InputEncoding>
  <Image width="16" height="16" type="image/x-icon">Favicon url</Image>
  <Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&amp;q={searchTerms}" />
  <Url type="text/html" method="GET" template="http://yoursite.com/?s={searchTerms}" />
  <SearchForm>http://yoursite.com/</SearchForm>
</OpenSearchDescription>
  1. Prześlij plik search.xml do katalogu głównego swojej witryny.

  2. Dodaj następujący tag meta do witryny <head>tag

<link rel="search" href="http://www.yoursite.com/search.xml" type="application/opensearchdescription+xml" title="You site name"/>

Pamiętaj, aby zastąpić adresy URL domeny swoją domeną.

Shan Eapen Koshy
źródło
1
Czy to jest <SearchForm>czy <moz:SearchForm>? Wydaje się, że nie znajduję SearchFormw dokumentacji OpenSearch i wszystkich innych zasobach, które znajduję w Internecie, używają <moz:SearchForm>.
Niels R.,