Google CSE - 搜索参数

时间:2016-05-16 18:37:46

标签: javascript google-search

我将我网站的搜索引擎更改为Google CSE。

我使用" s = term"在我的网站上,并生成网址为/search/term.html

Google无法识别它。什么必须改变代码?

  

var queryParamName =' s';

 <div class="row-fluid sc-col row-dynamic-el" style="margin-bottom:40px;"><div class="row-fluid"><div id='cse' style='width: 100%;'>Loading</div></div>
<script src='//www.google.com/jsapi' type='text/javascript'></script>
<script type='text/javascript'>
google.load('search', '1', {language: 'pt', style: google.loader.themes.V2_DEFAULT});
google.setOnLoadCallback(function() {
var customSearchOptions = {};
var orderByOptions = {};
orderByOptions['keys'] = [{label: 'Relevance', key: ''} , {label: 'Date', key: 'date'}];
customSearchOptions['enableOrderBy'] = true;
customSearchOptions['orderByOptions'] = orderByOptions;
var customSearchControl = new google.search.CustomSearchControl('01111111111:111111111', customSearchOptions);
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.enableSearchResultsOnly();
options.setAutoComplete(true);
customSearchControl.draw('cse', options);
function parseParamsFromUrl() {
var params = {};
var parts = window.location.search.substr(1).split('&');
for (var i = 0; i < parts.length; i++) {
var keyValuePair = parts[i].split('=');
var key = decodeURIComponent(keyValuePair[0]);
params[key] = keyValuePair[1] ?
decodeURIComponent(keyValuePair[1].replace(/\+/g, ' ')) :
keyValuePair[1];
}
return params;
}
var urlParams = parseParamsFromUrl();
var queryParamName = 's';
if (urlParams[queryParamName]) {
customSearchControl.execute(urlParams[queryParamName]);
}
}, true);
</script>

</div>

1 个答案:

答案 0 :(得分:0)

我相信您使用的是V1代码,而不是默认的V2代码。

我无法评论V1但是对于V2代码,请访问Google cse control panel中的外观部分,选择合适的布局并获取代码(V2)。我使用仅结果布局并制作了我自己的自定义搜索框。以下是我的设置如何为自定义查询参数工作:

搜索框

  

我有div id和class标签的自定义css样式表:searchbox2,searchcont2和searchString2,您需要用样式表属性替换它们。自定义查询参数在name=s部分的form下定义。

<div class="row"><div class="col-sm-12">
<div id="searchbox2" style="margin:0 auto; display: table;">
<div class="searchcont2">
    <form role="search" method="get" action="https://www.example.com/search/">
        <input id="searchString2" name="s" placeholder=" Search" type="text">
    </form>
</div></div>
</div></div>

如果您使用的是其他搜索布局,即两页两列,则可以使用以下内容作为data-queryParameterName的搜索框代码采取自定义搜索查询字词。

<div class="gcse-searchbox" data-resultsUrl="http://www.example.com/search/"

data-newWindow =“true”data-queryParameterName =“s”&gt;

对于HTML5网页, google cse要求将class属性设置为gcse-XXX ,例如,div class="gcse-searchbox"否则搜索结果可能无法按预期加载。请点击https://developers.google.com/custom-search/docs/element#html5

了解更多信息

搜索结果

  

在定义的搜索页面添加您的google cse resultsonly 代码,例如https://www.example.com/search/,并将<GOOGLE CSE CX ID>替换为您的cse cx id。与searchbox相同,HTML5页面应具有正确的div类属性,例如<div class="gcse-searchresults-only"以下情况:

<div class="row"><div class="col-sm-12">
<script>
  (function() {
    var cx = '<GOOGLE CSE CX ID>';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<div class="gcse-searchresults-only">
</div></div>

干杯!