Sry,对于这个问题的标题不清楚,我希望有人能够更正确地解决这个问题。
情况:
我正在使用谷歌自定义搜索引擎,该搜索引擎设置为仅搜索两个站点并仅显示结果。在GSE的控制面板中,当我转到搜索功能中的高级选项卡时,我可以指定它将查找的查询参数。完成后,我会在我的页面代码中粘贴一个javascript代码。
我相信这个javascript代码会监听$ _GET ['q']变量,然后根据它生成结果。
问题:
我在页面中有四个字段,并设置了一个php表单来显示其他网站的结果,最终结果是带有四个get变量的URL,如$ _GET ['q1']到$ _GET ['q4'] 。我在页面或其他任何地方都没有$ _GET ['q']。
我尝试了什么:
我只是不能使早期的表单打印另一个或组合的get参数为$ _GET ['q']。我想要添加大量的JS和一个隐藏的输入字段。
我尝试在PHP中将$ _GET ['q']设置为$_GET['q']=$_GET[q1];
,然后为自定义搜索引擎添加javascript。
我尝试添加更新链接或设置GET <a href="myurl.com?q=searchthis">anything</a>
,但这似乎不起作用。
我认为原因可能是缺乏关于GSE如何获取关键字,搜索和返回结果以及缺乏有关$ _GET参数的知识的知识。
问题:
这不需要我显示代码,但这里有一些可能与问题相关的代码:
GOOGLE CUSTOM JAVASCRIPT
<script>
(function() {
var cx = '010474608308939830468:6s3kklfffuu';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:searchresults-only></gcse:searchresults-only>
这是我的php方法:
$_GET['q'] = $_GET['q1'] ;
任何帮助将不胜感激,并希望您也可以为其他读者清除GSE的功能。提前谢谢
答案 0 :(得分:0)
因此,我不清楚您的问题是否需要搜索所有查询,或者用户是否只填写其中一个表单。如果用户只填写一个表单,这应该有效 - 使用PHP检查使用了哪个查询变量,然后让CSE查看该参数。
<?php
if (isset($_GET['q1']) && $_GET['q1'])
{$param = 'q1';
} elseif (isset($_GET['q2'])) {
$param = 'q2';
}
echo "<gcse:search queryParameterName='".$param."'></gcse:search>";
?>
如果您需要将所有查询连接成一个,最好的选择可能是在它到达页面之前使用htaccess重写URL,以便在页面加载之前将所有参数连接成一个查询参数。然后将queryParameterName设置为您调用该变量的任何内容。
如果您无权在服务器上创建重写规则,则可以探索此答案:changing the query string without reloading the page。只需在标记之前执行此操作,该标记会评估查询字符串以确定您要搜索的内容。