Клуб Яндекс.Поиска для сайта

Язык результатов поиска

vitalymedintsev
26 июля 2013, 17:31

Возможно ли с помощью javascript и чек-бокса, размещённого под формой поиска, задать другой язык вывода результатов поиска? Например, при снятом флажке результаты (фразы: результаты загружаются, яндекс нашёл ... ответов, сохранённая копия и т.д.) выдаются на русском языке, а при установленном - на английском.

Если да, то как?

4 комментария
Вульбрун Дмитрий
26 июля 2013, 17:45

Стандартного решения для этого нет, но можно сделать так:

 

Можно разместить на странице две формы (например, в разных дивах (div), с position: absolute и разными z-index), и в каждой из них в JS-параметр action в коде формы к урлу страницы, на которой будет размещен код результатов, дописать какой-нибудь cgi-параметр (к примеру langresults=en и langresults=ru).

Ваш переключатель будет переключать формы между собой.

А чтобы введенный пользователем запрос не пропадал при смене положения переключателя, можно просто при вводе запроса в поле дублировать эту же строчку в другой форме. Обратите внимание, что есть JS-событие событие, которое генерится при формировании DOM-структуры формы. Работать с ним нужно так. Для первой формы будет eq(0), для второй - eq(1):

Итак, теперь выдача. Выдачу на страницу можно разместить только одну (форм может быть много, их айдишники просто пронумеруются - можете увидеть это в веб-инстпекторе любого браузера). Поэтому вам нужно будет в зависимости от значения cgi-параметра langresults указывать раное значение JS-параметров в коде для результатов: для русского будет:

'tld': 'ru', 'language': 'ru'

а для английского будет

'tld': 'com', 'language': 'en'

 

Ну, кажется все. Попробуйте, должно сработать :)

:-)Спасибо, попробую! А почему position: absolute?

Вульбрун Дмитрий
26 июля 2013, 22:39

Ну чтобы спрятать одну форму под другую. Чтобы пользователь не видел две формы сразу :)

хитро; действительно, нестандартное решение ;-)