खोज एलिमेंट के कॉलबैक के ज़्यादा उदाहरण

इस पेज पर कई तरह के उदाहरण मौजूद हैं, जैसे कि Search Element कॉलबैक का इस्तेमाल करना. ये सुविधाएं, कस्टम कॉलम के कॉलबैक सेक्शन में दिए गए उदाहरण Search Element API दस्तावेज़.

खोज के शुरुआती कॉलबैक के उदाहरण

खोज शुरू करना कॉलबैक, क्वेरी का इस्तेमाल किए जाने से पहले उसमें बदलाव कर सकता है. Programmable Search Engine को क्वेरी में पहले से तय किए गए शब्दों को शामिल करने के लिए कॉन्फ़िगर किया जा सकता है, लेकिन यह कॉलबैक, कॉलबैक के लिए उपलब्ध किसी भी जानकारी के आधार पर क्वेरी में बदलाव कर सकता है फ़ंक्शन का इस्तेमाल करना होगा.

नीचे दी गई खोज की शुरुआत कॉलबैक, हर क्वेरी को मौजूदा दिन के हिसाब से बदलता है सप्ताह का.

खोज के शुरुआती कॉलबैक का उदाहरण
<script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:g9ckaktfipe"></script>
const mySearchStartingCallback = (gname, query) => {
  const dayOfWeek = new Date().getDay();
  console.log(dayOfWeek);
  var days = {
        "0": "Sunday",
        "1": "Monday",
        "2": "Tuesday",
        "3": "Wednesday",
        "4": "Thursday",
        "5": "Friday",
        "6": "Saturday"
    };

    return query + ' ' + days[dayOfWeek];
};
// Install the callback.
window.__gcse || (window.__gcse = {});
  window.__gcse.searchCallbacks = {
    image: {
      starting: mySearchStartingCallback,
    },
    web: {
      starting: mySearchStartingCallback,
    },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

रेंडर किए गए नतीजे के लिए कॉलबैक के उदाहरण

कॉलबैक के लिए रेंडर किए गए नतीजे, पेज में बदलाव करने के बाद बेहतर होते हैं. ऐसा, नतीजों से भरे जाने के बाद होता है. इसे कॉलबैक की ज़रूरत के बिना, नतीजों को दिखाने के तरीके में आसानी से बदलाव करने के लिए डिज़ाइन किया गया है वह अपने नतीजों को रेंडर करने की पूरी ज़िम्मेदारी लेता है.

नीचे दिए गए उदाहरणों में, कॉलबैक करके दिए गए उन दो नतीजों के बारे में बताया गया है जो नहीं होते.

पिछले नतीजों वाले पेज की पहचान करें

इस नतीजे को रेंडर किए गए कॉलबैक नोटिस में, यह बताया गया है कि हम आखिरी पेज दिखा रहे हैं पॉप-अप होता है. साथ ही, एक सूचना पॉप-अप होती है. इस सूचना में, उपयोगकर्ताओं को बताया जाता है कि वे आखिर तक पहुंच चुके हैं.

<script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
    var searchresults= document.getElementsByClassName("gsc-cursor-page");
    var index= document.getElementsByClassName("gsc-cursor-current-page");
    if(index.item(0).innerHTML == searchresults.length){
       alert("This is the last results page");
    }
};

कॉलबैक इंस्टॉल करें

window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
      // Since the callback is in the global namespace, we can refer to it by name,
      // 'myWebResultsRenderedCallback', or by reference, myWebResultsRenderedCallback.
      rendered: myWebResultsRenderedCallback,
  },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
"कर्सर" का फ़ॉन्ट साइज़ बढ़ाना लिंक

रेंडर किए गए नतीजों का यह कॉलबैक डेमो, "कर्सर" पर टैप करें.

डिफ़ॉल्ट फ़ॉन्ट साइज़ 12 पिक्सल होता है. यहां हम इसे बढ़ाकर 20 पिक्सल कर देते हैं.

<script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
   document.getElementsByClassName("gsc-cursor")[0].style.fontSize = '20px';
};

कॉलबैक इंस्टॉल करें

window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
      // Since the callback is in the global namespace, we can refer to it by name,
      // 'myWebResultsRenderedCallback', or by reference, myWebResultsRenderedCallback.
      rendered: myWebResultsRenderedCallback,
  },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
"कर्सर" के लिए अक्षरों का इस्तेमाल करें लेबल

रेंडर किए गए नतीजे का यह कॉलबैक, "कर्सर" में पेज के लिंक बदल देता है नंबर से लेकर अक्षर तक.

<script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
    var arr = document.getElementsByClassName('gsc-cursor-page');
    var alp = ['A','B','C','D','E','F','G','H','I','J','K','L',
      'M','N','O','p','Q','R','S','T','U','V','W','X','Y','Z'];
    for (var i = 0; i &lt arr.length; i++) {
        arr[i].innerHTML = alp[i];
    }
};

कॉलबैक इंस्टॉल करें

window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
      // Since the callback is in the global namespace, we can refer to it by name,
      // 'myWebResultsRenderedCallback', or by reference, myWebResultsRenderedCallback.
      rendered: myWebResultsRenderedCallback,
  },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

नतीजों के लिए तैयार कॉलबैक के उदाहरण

अलग-अलग रंगों के बैकग्राउंड के साथ नतीजे दिखाना

इन कॉलबैक फ़ॉर्मैट का इस्तेमाल करने पर, हल्के और गहरे रंग के बैकग्राउंड अलग-अलग हो सकते हैं.

<script async
      src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>

ध्यान दें: यह कोड JavaScript/ES6 में लिखा गया है. यह ज़्यादातर ब्राउज़र पर चलेगा, लेकिन इसके लिए कुछ को Internet Explorer और कुछ पुराने के लिए JavaScript/ES5 में बदला गया ब्राउज़र खोलें.

barredResultsRenderedCallback = function(gname, query, promoElts, resultElts){
  const colors = ['Gainsboro', 'FloralWhite'];
  let colorSelector = 0;
  for (const result of resultElts) {
    result.style.backgroundColor = colors[colorSelector];
    colorSelector = (colorSelector + 1) % colors.length;
  }
};
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
    rendered: barredResultsRenderedCallback,
  },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

वर्ड क्लाउड

नतीजे के लिए तैयार नतीजे कॉलबैक का साफ़ तौर पर यह इस्तेमाल, खोज के नतीजों को रेंडर किए गए नतीजे कॉलबैक का इस्तेमाल करके, इस फ़ॉर्मैट को ऐक्सेस करना मुश्किल होगा. एचटीएमएल. नतीजे के लिए तैयार हैं कॉलबैक की शुरुआत, खाली div से होती है. Search Element API दस्तावेज़ में मौजूद एक उदाहरण दिखाया गया है कि नतीजों के बहुत आसान वर्शन को रेंडर करने के लिए कॉलबैक का इस्तेमाल कैसे किया जाता है. एक और उदाहरण दिखाया गया कि खोज के लिए तैयार नतीजे कॉलबैक से, नतीजों के डेटा को कैसे होल्ड किया जाता है और कैसे पास किया जाता है रेंडर किए गए नतीजे कॉलबैक जहां इसका इस्तेमाल स्टैंडर्ड नतीजों को सजाने के लिए किया जा सकता है डिसप्ले.

नीचे दिया गया नतीजे के लिए तैयार हैं कॉलबैक से पता चलता है कि खोज के नतीजों के लिए ज़रूरी नहीं है कि परिणामों की सूची होगी. यह खोज नतीजों के सामान्य डिसप्ले को बदल देता है में मिले शब्दों के बादल की मदद से टाइटल और कॉन्टेंट शामिल हैं. जब नतीजे, आपके उपयोगकर्ता के लिए सिर्फ़ बीच का चरण होते हैं. इस तरह का कॉलबैक उस चरण को बायपास कर सकता है और नतीजों का इस्तेमाल करके उपयोगकर्ता की पसंद की रिपोर्ट पेश करें.

खोज नतीजों के कॉन्टेंट से Word Cloud बनाएं
<script async
      src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<style>
  #container {
    width: 100%;
    height: 4.5in;
    margin: 0;
    padding: 0;
  }
</style>
<script src="https://cdn.anychart.com/releases/v8/js/anychart-base.min.js"></script>
<script src="https://cdn.anychart.com/releases/v8/js/anychart-tag-cloud.min.js"></script>

ध्यान दें: यह कोड JavaScript/ES6 में लिखा गया है. यह ज़्यादातर ब्राउज़र पर चलेगा, लेकिन इसके लिए कुछ को Internet Explorer और कुछ अन्य पुराने ब्राउज़र का इस्तेमाल करें.

const resultsReadyWordCloudCallback = function(
        name, q, promos, results, resultsDiv) {
    const stopWords = new Set()
      .add('a')
      .add('A')
      .add('an')
      .add('An')
      .add('and')
      .add('And')
      .add('the')
      .add('The');

    const words = {};
    const splitter = /["“”,\?\s\.\[\]\{\};:\-\(\)\/!@#\$%\^&*=\+\*]+/;
    if (results) {
        for (const {contentNoFormatting, titleNoFormatting} of results) {
            const wordArray = (contentNoFormatting + ' ' + titleNoFormatting)
              .split(splitter)
              .map(w => w.toLowerCase());
            for (const w of wordArray) {
                if (w && !stopWords.has(w)) {
                    words[w] = (words[w] + 1) || 1;
                }
            }
        }
    }
    const dataForChart = [];
    for (const key in words) {
        const val = words[key];
        dataForChart.push({
            'x': key,
            'value': val,
        });
    }

    const container = document.createElement('div');
    resultsDiv.appendChild(container);
    container.id = 'container';
    // create a tag (word) cloud chart
    const chart = anychart.tagCloud(dataForChart);
    // set a chart title
    chart.title(`Words for query: "${q}"`)
    // set an array of angles at which the words will be laid out
    chart.angles([0, 45, 90, 135])
    // display the word cloud chart
    chart.container(container);
    chart.draw();
    return true; // Don't display normal search results.
};
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
    web: {
        ready: resultsReadyWordCloudCallback,
    },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

दो हिस्सों में कॉलबैक का उदाहरण

तैयार नतीजे और रेंडर किए गए नतीजे कॉलबैक का इस्तेमाल, जानकारी को पहले वाले से बाद वाले डेटा में भेजने के लिए किया जा सकता है. उदाहरण के लिए, नतीजे के ऑब्जेक्ट के कलेक्शन में मौजूद जानकारी, नतीजे के लिए तैयार नतीजे कॉलबैक के लिए उपलब्ध होती है, लेकिन रेंडर किए गए नतीजे कॉलबैक में नहीं होती. उस जानकारी को नतीजों के तैयार कॉलबैक के हिस्से के तौर पर, किसी कलेक्शन में सेव करके, हम उसे रेंडर किए गए नतीजे कॉलबैक के लिए ऐक्सेस कर सकते हैं.

इसका एक उदाहरण यह है कि किसी इमेज के नतीजे पर क्लिक करने पर दिखने वाले झलक पैनल को बायपास कर दिया जाता है. दो हिस्सों वाले कॉलबैक से, हम इमेज के नतीजों को उनसे जुड़ी वेबसाइटों से सीधे लिंक कर सकते हैं. क्लिक करने पर इमेज की झलक नहीं दिखाई जाती.

इमेज की झलक बायपास करें
<script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:g9ckaktfipe"></script>
const makeTwoPartCallback = () => {
  let urls;
  const readyCallback = (name, q, promos, results, resultsDiv) => {
    urls = [];
    for (const result of results) {
      urls.push(result['contextUrl']);
    }
  };
  const renderedCallback = (name, q, promos, results) => {
    const removeEventListeners = element => {
      const clone = element.cloneNode(true);
      element.parentNode.replaceChild(clone, element);
      return clone;
    };
    for (let i = 0; i < results.length; ++i) {
      const element = removeEventListeners(results[i]);
      element.addEventListener('click', () => window.location.href = urls[i]);
    }
  };
  return {readyCallback, renderedCallback};
};
const {
  readyCallback: imageResultsReadyCallback,
  renderedCallback: imageResultsRenderedCallback,
} = makeTwoPartCallback();
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  image: {
    ready: imageResultsReadyCallback,
    rendered: imageResultsRenderedCallback,
  },
};

एचटीएमएल में इन एलिमेंट को शामिल करें:

<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>