Pasang Google CSE di Blogger

Penambahan fitur Google CSE di halaman blog Anda sangat membantu dalam melakukan navigasi pencarian seluruh artikel Anda. Apalagi sekarang telah tersedia Google Custom Search Element versi 2 yang semakin membuat Google CSE semakin mudah untuk di modifikasi.

Kode Google CSE terbaru ini juga dapat dipasang di blog Blogger/Blogspot khususnya di halaman sebagai berikut:

  • Halaman Label.
  • Halaman Pencarian (search result).
  • Halaman Error 404 (Page Not Found).
  • Halaman Postingan.

Berikut cara pasang Google CSE di Blogger:

  1. Masuk di template editor blog Anda Template > Edit HTML.
  2. Centang Expand Widget Templates dan temukan kode
    <b:include data='top' name='status-message'/>
    

    (Jika ada 2 kali kode tersebut, tetapkan kode yang kedua (yang bukan untuk mobile web).

  3. Tempatkan kode Google CSE di setiap halaman berikut setelah kode di atas. Anda dapat menggabungkan kode Google CSE ini semuanya.

    Google CSE di halaman Label

    Eksekusi nama label menggunakan kode <data:blog.searchLabel/>.

    <!-- Google CSE Halaman Label -->
    <b:if cond='data:blog.searchLabel'>
    <script>
    var myCallback = function() {
    if (document.readyState == 'complete') {
      var element = google.search.cse.element.getElement('cseresult');
            element.execute('<data:blog.searchLabel/>');
      } else {
    google.setOnLoadCallback(function() {
    var element = google.search.cse.element.getElement('cseresult');
            element.execute('<data:blog.searchLabel/>');
    },true);
    }
    };
    window.__gcse = {
      parsetags: 'onload',
     callback: myCallback
    };
    (function() {
      var cx = '1234:567'; // Sisipkan ID Google CSE di sini
      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>
    <gcse:searchbox gname='cseresult'/>
    <gcse:searchresults autoSearchOnLoad='true' gname='cseresult'/>
    </b:if>
    

    Google CSE di halaman Pencarian (Search Result)

    Query yang dieksekusi berdasarkan url parameter q. Search result yang tampil secara autofill.

    <!-- Google CSE Halaman Pencarian -->
    <b:if cond='data:blog.pageType == "index"'>
    <b:if cond='data:blog.searchQuery'>
    <div id='cseresult'/>
    <script>
    var myCallback = function() {
      if (document.readyState == 'complete') {
        google.search.cse.element.render(
            {
              div: "cseresult",
              tag: 'searchbox-only'
             });
      } else {
        google.setOnLoadCallback(function() {
            google.search.cse.element.render(
                {
                  div: "cseresult",
                  tag: 'search'
                });
         }, true);
      }
    };
    window.__gcse = {
      parsetags: 'explicit',
      callback: myCallback
    };
    (function() {
      var cx = '1234:567'; // Sisipkan ID Google CSE di sini
      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>
    </b:if>
    </b:if>
    

    Google CSE di halaman Error 404 (Page Not Found)

    Kode berikut juga dapat dipakai untuk modifikasi halaman error 404 di Blogger.

    <!-- Google CSE Halaman Error -->
    <b:if cond='data:blog.pageType == "error_page"'>
    <script>
    var myCallback = function() {
    if (document.readyState == 'complete') {
      var element = google.search.cse.element.getElement('cseresult');
            element.execute("");
      } else {
    google.setOnLoadCallback(function() {
    var element = google.search.cse.element.getElement('cseresult');
            element.execute('');
    },true);
    }
    };
    window.__gcse = {
      parsetags: 'onload',
     callback: myCallback
    };
    (function() {
      var cx = '1234:567'; // Sisipkan ID Google CSE di sini
      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>
    <gcse:searchbox gname='cseresult'/>
    <gcse:searchresults autoSearchOnLoad='true' gname='cseresult'/>
    </b:if>
    

Google CSE di halaman Postingan

Untuk pasang Google CSE di halaman postingan/artikel (single post), Anda bisa baca postingan Autofill Google CSE dengan Keyword Label Blogspot

Penempatan kode Google CSE di atas untuk template default yang ada di Blogger. Untuk template selain di Blogger, kemungkinan penempatannya berbeda-beda.

Pasang CSE di bawah postingan WordPress

Sebelumnya Jevuska telah bahas mengenani bagaimana cara pasang CSE di single post blogspot, sekarang kita coba di blog WordPress. Teknik yang saya terapkan di sini adalah Autofill Custom Search API dengan mengambil kata kunci berdasarkan title postingan. Sebenarnya penerapan kode dalam teknik ini nggak jauh beda sama teknik auto generate content di single post WP.

Berikut langkah-langkah cara pasang Autofill CSE di bawah postingan WordPress:
1. Silahkan daftar atau sign in langsung di Google CSE.
2. Isi semua form yang ada dan pastikan kamu mengisi url site yang kamu inginkan saja.
3. Kamu akan mendapatkan costum ID untuk CSE mu, contoh kodenya seperti ini: 654672547625472542:qwqwqee dan save pekerjaan kamu.
4. Buka single.php wp theme kamu.
5. copy-paste kode berikut dan tempatkan setelah kode <?php endif; ?>

<?php
function ambiljudul($title){
   $title = get_the_title(); //wp codex judul postingan
   $title = trim($title);
    return ($title);
}
?>
 <script src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('search', '1');
      function OnLoad() {
      // Create a custom search control that uses a CSE restricted to code.google.com
      var customSearchControl = new google.search.CustomSearchControl('Pasang ID CSE di sini');
      // Draw the control in content div
      customSearchControl.draw('searchresult');
      // run a query
      customSearchControl.execute('< ?php echo ambiljudul($title) ?>');
    }
    google.setOnLoadCallback(OnLoad);
    </script>
<div id="searchresult">Loading...</div>

6. Pada kode di atas, ganti kata “Pasang ID CSE di sini” dengan id CSE kamu.
7. Save pekerjaan kamu, dan lihat hasilnya.

Membuat auto generated content di halaman pencarian WP

Teknik ini bisa juga diterapkan di halaman kategori atau tag blog WP kamu.
Untuk halaman kategori, ganti kode get_the_title() pada line 1 kode di atas menjadi single_cat_title().
Untuk halaman tag, ganti kode get_the_title() menjadi single_tag_title(). Untuk autofill dengan mengambil keyword selain dari title, silahkan berkeksperimen sendiri hanya dengan mengganti kode get_the_title() tersebut dengan wp codex yang kamu inginkan. Selamat mencoba sob! :)

Autofill Google CSE dengan Keyword Label Blogspot

Sebelumnya saya sudah bahas bagaimana menggabungkan Google CSE (Custome Search Engine) Box dengan Halaman Search WordPress, dimana keyword yang diambil masuk (autofill) kedalam input search Google CSE. Nah…iseng-iseng kemarin main-main di blog blogspot yang sudah lama tidak terjamah (bikin template blogspot), ternyata ada beberapa fitur element baru yang ditambahkan (mungkin fiturnya sudah lama, saya aja kale yang baru tau :mrgreen: ).

Cara membuat search engine gambar dengan Google API

Elemen terbaru blogspot yaitu element Pages dan element Search Box Google CSE. Jadi kamu bisa buat page di blogspot (max 10 pages) dan menambahkan Search box Google CSE. Saya justru tertarik dengan element CSE-nya, setelah lirik-lirik sebentar kode CSEnya, keknya nggak bisa dikustomisasi. Terus… saya coba aja oprek search box CSE pake Google AJAX Search API yang kemudian saya masukkan di blogspot, hasilnya? Coba lihat gambar di bawah ini:

Saya pake Google AJAX Search API yang autofill dengan mengambil keyword label postingan di blog Blogspot dan menempatkannya di single post. Berikut langkah-langkah cara membuat Autofill Google AJAX Search API CSE di Blogspot:

1. Dashboard » Layout » Edit HTML » Expand Widget Templates
2. Copy kode berikut:

<script src='http://www.google.com/jsapi'/>
	<script type='text/javascript'>
		google.load('search', '1');
		function OnLoad() {
		var customSearchControl = new google.search.CustomSearchControl('ID-CSE-BLOGKAMU');
		customSearchControl.draw('content');
		customSearchControl.execute('<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'> OR </b:if></b:loop></b:if>');}
		google.setOnLoadCallback(OnLoad);
	</script>
<div id='content'>Loading...</div>

3.Paste tepat di bawah kode <b:includable id='comments' var='post'>
4. Ganti kata ID-CSE-BLOGKAMU dalam kode tersebut dengan unique ID CSE blog kamu (Jangan ada spasi!). Bikin dulu CSE di Google Custome Search. Nanti kamu dapat kode ID cse seperti ini: Search engine unique ID: 012157934978810372049:-cv74o3zqua (Lihat Control panel » Basics)
5. Hasilnya seperti ini.

......
<b:includable id='comments' var='post'>
<script src='http://www.google.com/jsapi'/>
	<script type='text/javascript'>
		google.load('search', '1');
		function OnLoad() {
		var customSearchControl = new google.search.CustomSearchControl('015072290939263456976:yzp7yfpg7kw');
		customSearchControl.draw('content');
		customSearchControl.execute('<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'> OR </b:if></b:loop></b:if>');}
		google.setOnLoadCallback(OnLoad);
	</script>
<div id='content'>Loading...</div>
<div class='comments' id='comments'>
......

4.Save pekerjaan kamu. Selesai!

Aturan Google Ajax search API

Kalo kamu mau autofill berdasarkan title postigan blog, kamu tinggal ganti kode:

<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'> OR </b:if></b:loop></b:if>

dengan kode berikut (untuk autofill CSE berdasarkan title postingan):

<b:if cond='data:post.title'><data:post.title/></b:if>

Selamat berkreasi dan mencoba sob! :)

UPDATE (22/08/2012)
Dengan Google Custom Search Element Versi 2, Anda dapat mengganti kode CSE versi lama di atas dengan Kode Google CSE terbaru berikut:

<script>
var myCallback = function() {
if (document.readyState == 'complete') {
  var element = google.search.cse.element.getElement('cseresult');
        element.execute("<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'> OR </b:if></b:loop></b:if>");
  } else {
google.setOnLoadCallback(function() {
var element = google.search.cse.element.getElement('cseresult');
        element.execute('<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'> OR </b:if></b:loop></b:if>');
},true);
}
};
window.__gcse = {
  parsetags: 'onload',
 callback: myCallback
};
(function() {
  var cx = '015072290939263456976:yzp7yfpg7kw'; //Ganti ID Google CSE ini
  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>
<gcse:searchbox gname='cseresult'/>
<gcse:searchresults autoSearchOnLoad='true' gname='cseresult'/>

Baca juga cara menyembunyikan link/url dengan metode open.window supaya tidak terlihat di status bar browser kamu.