Google CSE - перейти к определенному ключевому слову
В настоящее время я работаю с Google CSE, и мне интересно, можно ли перейти к конкретному поисковому слову. например, если я гуглю на своей странице слово "публикации", и на странице есть раздел публикаций, можно ли перейти непосредственно в этот раздел с помощью встроенного поиска Google?
в данный момент каждый поиск ведет меня к началу страницы, где размещено ключевое слово.
Привет Мартин
1 ответ
Это возможно, да, но вам придется заняться кодированием. Если вы думаете о том, как работает поиск Google, он просто генерирует список ссылок. Он не контролирует то, что происходит, когда вы переходите на другую страницу. Таким образом, все, что вы хотите, чтобы произошло на странице назначения, вам придется кодировать самостоятельно. Если вы действительно хотите это сделать, вы можете настроить его примерно так:
Во-первых, вы захотите использовать CSE V1, так как он предлагает возможность установить функцию обратного вызова при завершении поиска, чего нет в новой упрощенной версии V2. См. Документацию V1 здесь: https://developers.google.com/custom-search/docs/js/cselement-devguide
Вот пример кода с этой страницы, модифицированный для добавления функции обратного вызова:
<!--
copyright (c) 2012 Google inc.
You are free to copy and use this sample.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Custom Search Element API Example</title>
<script src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('search', '1');
google.setOnLoadCallback(function(){
customSearchControl = new google.search.CustomSearchControl().draw('cse');
}, true);
customSearchControl.setSearchCompleteCallback(this, searchCompleteFn);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="cse" style="width:100%;">Loading...</div>
</body>
</html>
Затем вы можете создать эту функцию обратного вызова следующим образом:
function searchCompleteFn(control, searcher) {
//your code
}
В вашем коде вы хотели бы получить все элементы a.gs-title внутри cse div и изменить их атрибуты href, чтобы добавить запрос пользователя. Таким образом, ваша целевая страница может видеть, что пользователь искал, и предпринимать соответствующие действия (выделите соответствующий раздел, выделите ключевые слова, что хотите). Например, если существующим href является http://www.yoursite.com/somepath/somepage.html, вы можете изменить его на http://www.yoursite.com/somepath/somepage.html#query=[user_query].,
[user_query] предоставляется control.getInputQuery()
Наконец, на ваших целевых страницах вы должны проверить javascript для параметра запроса в location.hash и действовать соответствующим образом.
Я предполагаю, что это гораздо больше работы, чем вы заинтересованы, но, возможно, это будет полезно для кого-то.