谷歌自定义搜索引擎多个参数查询

时间:2015-10-30 19:46:55

标签: javascript php get google-custom-search

Sry,对于这个问题的标题不清楚,我希望有人能够更正确地解决这个问题。

情况:

我正在使用谷歌自定义搜索引擎,该搜索引擎设置为仅搜索两个站点并仅显示结果。在GSE的控制面板中,当我转到搜索功能中的高级选项卡时,我可以指定它将查找的查询参数。完成后,我会在我的页面代码中粘贴一个javascript代码。

我相信这个javascript代码会监听$ _GET ['q']变量,然后根据它生成结果。

问题:

我在页面中有四个字段,并设置了一个php表单来显示其他网站的结果,最终结果是带有四个get变量的URL,如$ _GET ['q1']到$ _GET ['q4'] 。我在页面或其他任何地方都没有$ _GET ['q']。

我尝试了什么:

  1. 我只是不能使早期的表单打印另一个或组合的get参数为$ _GET ['q']。我想要添加大量的JS和一个隐藏的输入字段。

  2. 我尝试在PHP中将$ _GET ['q']设置为$_GET['q']=$_GET[q1];,然后为自定义搜索引擎添加javascript。

  3. 我尝试添加更新链接或设置GET <a href="myurl.com?q=searchthis">anything</a>,但这似乎不起作用。

  4. 我认为原因可能是缺乏关于GSE如何获取关键字,搜索和返回结果以及缺乏有关$ _GET参数的知识的知识。

    问题:

    1. 无论如何,我可以在我的PHP脚本中设置$ _GET ['q'](动态吗?)google自定义搜索引擎javascript会理解并且能够流畅地工作吗?
    2. 还有其他更好的方法吗?
    3. 这不需要我显示代码,但这里有一些可能与问题相关的代码:

      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的功能。提前谢谢

1 个答案:

答案 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。只需在标记之前执行此操作,该标记会评估查询字符串以确定您要搜索的内容。