2015-10-30 142 views
0

Sry,因爲不清楚標題的問題,我希望有人會更準確地更正它。谷歌自定義搜索引擎多個參數查詢

情況:

我使用的設置,當我去到高級選項卡中的搜索功能來搜索只有兩個站點並顯示結果only.In GSE的控制面板中的谷歌自定義搜索引擎,我可以指定它將查找的查詢參數。我完成後,我得到一個JavaScript代碼粘貼在我的網頁的代碼。

我相信這個javascript代碼會監聽$ _GET ['q']變量,然後根據該變量生成結果。

問題:

我有一個頁面和一個PHP的形式設置爲顯示來自其他網站的結果四次實地,最終的結果是一個像$ _GET [「Q1」四個送變量的URL ]到$ _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>,但這似乎並不奏效。

我認爲原因可能是缺乏關於GSE如何獲取關鍵字,搜索和返回結果以及缺乏有關$ _GET參數的知識的知識。

問:

  1. 無論如何,我可以在我的PHP腳本設置$ _GET [ 'Q'(?動態),谷歌自定義搜索引擎的JavaScript會理解和流利工作嗎?
  2. 有沒有其他更好的方法來做到這一點。

這並不需要我展示代碼,但這裏是一些代碼,可能是相關的問題:

GOOGLE自定義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

谷歌搜索引擎不會查找您的獲取或發佈(不知道爲什麼),但實際上它提取url的搜索查詢。 –

回答

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。只需在標籤之前執行該操作,即可評估查詢字符串以找出您正在搜索的內容。

+0

使用v1代碼找到解決方案。它非常靈活,並提供了很多功能 –