Memanfaatkan JQuery untuk Mengizinkan Elemen Terlarang Masuk ke dalam Kometar Blogger
Tabel Konten
Saya terinspirasi dari posting ini: Adding Images and More Text Formats to the Body of the Comments
Bukankah itu sangat luar biasa? Kita bisa menyisipkan elemen-elemen yang tidak lazim ke dalam komentar Blogger hanya dengan memanfaatkan cara kerja JavaScript .replace()
. Pada intinya, kita menyisipkan kode-kode yang bisa dimasukkan ke dalam komentar seperti [im]
. Kode tersebut bukanlah kode yang bisa mempengaruhi file HTML dan hanya merupakan teks biasa yang dibuat-buat, namun dengan sedikit trik, Anda bisa memanfaatkan peraturan yang Anda buat sendiri untuk mengontrol fungsi .replace()
Di sini Saya akan memberikan alternatif lain yang lebih aman dan tampak rapi, yaitu menggunakan jQuery untuk memanipulasi dua jenis tag yang diperbolehkan masuk ke dalam komentar Blogger yaitu <b>
dan <i>
. Kita akan menggunakan atribut rel
sebagai pengontrol. Dan ini adalah sebuah trik untuk mengubah tag-tag tersebut menjadi tag lain dengan jQuery ⇒ http://stackoverflow.com/questions/7093417/using-jquery-to-replace-one-tag-with-another
Katakanlah kita ingin memposting kode di dalam tag <pre>
untuk diterbitkan ke dalam komentar postingan, namun seperti yang kita tahu, Blogger tidak mengizinkan tag <pre>
masuk ke dalam posting komentar. Jadi kita bisa menggunakan kode ini sebagai penanda:
<i rel='pre'>Kode di sini...</i>
Untuk mengubah tag <i rel='pre'>
menjadi <pre>
kita bisa menggunakan fungsi ini:
// Seleksi elemen `p` di dalam `#comments`
$('#comments p').each(function() {
// Ubah semua tag `<i rel="pre">` dengan `<pre>`
$('i[rel="pre"]', this).replaceWith(function() {
return $('<pre></pre>').append($(this).contents());
});
});
Selektor $('#comments p')
tidak mutlak. Terkadang ada juga kerangka komentar yang terdiri dari elemen <dd>
, bahkan mungkin juga dengan ID komentar yang berbeda sehingga selektor tersebut juga bisa diubah menjadi $('#comments dd')
atau $('#commentsbox dd')
Cukup pastikan bahwa tema Anda sudah dilengkapi dengan jQuery, kemudian letakkan kode tersebut di atas </body>
. Dan coba terbitkan sebuah komentar berupa teks di dalam <i rel='pre'></i>
Lebih Lengkap
Untuk tingkat manpulasi yang lebih lengkap, Anda bisa menggunakan baris kode ini. Salin kode ini lalu sisipkan di atas </body>
:
<script>
//<![CDATA[
$('#comments p, #comments dd').each(function() {
// Singkirkan semua tag `<br>` di sebelah tag `<b rel^="h">`
// (semua elemen `<b>` dengan nilai atrubut `rel` yang diawali dengan "h")
$('b[rel^="h"]', this).nextAll().filter('br').remove();
// Menyisipkan tag `<pre>`
$('i[rel="pre"]', this).replaceWith(function() {
return $('<pre></pre>').append($(this).contents());
});
// Menyisipkan gambar
$('i[rel="image"]', this).replaceWith(function() {
return $('<img />').attr('src', $(this).text());
});
// Menyisipkan tag `<h3>`
$('b[rel="h3"]', this).replaceWith(function() {
return $('<h3></h3>').append($(this).contents());
});
// Menyisipkan kuota/catatan
$('b[rel="quote"]', this).replaceWith(function() {
return $('<blockquote></blockquote>').append($(this).contents());
});
// Menyisipkan tag `<code>`
$('i[rel="code"]', this).contents().unwrap().wrap('<code></code>');
});
//]]>
</script>
Klik Simpan Tema. Setelah itu Anda tinggal menuliskan pesan untuk para komentator di atas formulir komentar seperti ini:
Untuk menyisipkan kode, gunakan tag
<i rel="code">KODE ANDA DI SINI...</i>
atau<i rel="pre">KODE ANDA DI SINI...</i>
Untuk menyisipkan gambar, gunakan tag<i rel="image">URL GAMBAR ANDA DI SINI...</i>
Untuk menyisipkan judul, gunakan tag<b rel="h3">JUDUL ANDA DI SINI...</b>
Untuk menyisipkan catatan, gunakan tag<b rel="quote">CATATAN ANDA DI SINI...</b>
Untuk menciptakan efek tebal gunakan tag<b>TEKS ANDA DI SINI...</b>
Untuk menciptakan efek huruf miring gunakan tag<i>TEKS ANDA DI SINI...</i>
34 Komentar
Yopi Hasopa
Menarik sekali gan, dari dulu pengen yang kayak gini. Tapi apakah ini tidak melanggar TOS dari blogger sendiri??
Taufik Nurrohman
@Yopi HasopaSaya rasa tidak. Karena pada dasarnya kita tidak melakukan apa-apa terhadap Blogger. Kita hanya memanipulasi sudut pandang browser/menipu cara baca browser. Hmmm... setelah Saya pikir-pikir kembali, istilah "elemen terlarang" itu memang terlalu radikal ya! Haha...
Unknown
Wowwww Perkembangan Yang Sangat Bagus Bang
Taufik Nurrohman
@system of blogSaya dapet nilai berapa? :p
Unknown
1000
nilai nya hehehee coba aj bisa ngembangin kyak gini pasti mantep :D,
Randy
kalo membuat link aktif ilang gimana bang?mohon jawabannya
Unknown
om taufik ko saya ga bisa2 ya ngubah link jadi -> [link] ? :'(
padahal udah saya ikutin saran om yg buat agan muxlimo :'(
Taufik Nurrohman
@Suhendrie Purnama Digabung saja dengan yang lain:
Unknown
@Taufik Nurrohman udah bisa om \o/ \o/ \o/
makasih banyak om :D :D
Unknown
om mau tanya lagi :(
ko tag pre nya ga bisa yaa ? ~x(
Taufik Nurrohman
@Suhendrie Purnama <i rel="pre">Kode di sini...</i>
Unknown
berhasil mas, tapi ko malah hilang yah kodenya pas di publis???
Bayu Handono
tag pre nya kok ga bisa yah, kalo masukin image udah bisa. :P
Taufik Nurrohman
@Bayu Handono Bukannya tidak bisa. Mungkin cuma tampilannya saja yang belum dimodifikasi. Coba tambahkan ini di atas
]]></b:skin>
:Selengkapnya: CSS Fallback untuk Fitur Manipulasi Komentar Blogger
Rizky Wardiansyah
saya ijin untuk share trik ini di blog saya ya gan :)
Kang Ismet
Saya kan pake PRISM syntachighlighter dari akang, biasanya kan untuk menulis kode seperti ini :
<pre><code class="languange-css">
....
</code></pre>
nah untuk menulisnya gimana kang? soalnya tag CLASS tidak diizinkan
Taufik Nurrohman
⇒ /2012/09/syntax-highlighter-dengan-prism.html?showComment=1362493246789#c8544828114478662092
Kang Ismet
nuhun kang, sedang dipelajari. untuk Threaded comment
$('#comments p, #comments dd')
diganti menjadi apa?
terus, untuk menyisipkan link seperti
<i rel="anchor">URL</i>
menjadi tulisan {link} sudah bisa dengan script di atas?
Nuhun kang...
Taufik Nurrohman
Tidak perlu diganti-ganti. Untuk mengaktifkan link seperti itu sudah ada jawabannya di sebelah atas ^:D
Kang Ismet
xixixi... sorry ga baca komentar yang sama pertanyaannya ;)
Kang Ismet
Komentar ini telah dihapus oleh pengarang.
Taufik Nurrohman
Supaya lebih mudah, tag PRE digabungkan secara langsung saja dengan CODE seperti ini:
you
iya mas bener.. ternyata setelah saya pindah syntaknya agar dieksekusi paling akhir sebelum semua tag pre.. syntak pada komentar jadi berpungsi... terimakasih mas...
Rizky
wih tuh nofollow linknya otomatis apa manual, kalo otomatis mau tau dong caranya kang
Admin Blog
Visit W3Schools
Unknown
saya sudah menerapkan cara di atas, namun ketika ada yang mengirim gambar di komentar, lebar gambar nya seperti lebar sali gambar itu sendiri, untuk bisa mengatur lebar gambarnya gimana ya mas?
Taufik Nurrohman
Unknown
terima kasih kode nya mas, sekarang gambar sudah oke
Unknown
.replace(/\[img\](.*?)\[\/img\]/g,"<img src='$1' alt='Loading...'>")
maaf mas... dengan kode di atas supaya lebar gambar bisa di tenteukan lewat css gimana ya mas?
saya pengen nyempurnain yang di berikan mas taufik tempo hari itu mas.
terima kasih atas bantuan nya :D
Taufik Nurrohman
Coba pakai selektor atribut, lalu targetkan nama gambarnya:
Rizky
Mas Kolektor
bang, saya lampirkan *pre di kolom komentar, yang saya pakai dari syntax experimennya Experimen Syntax Highlighter DTE, yang saya terapkan di Blog Aku, coba di cek bang kolom komentarnya, pre syntaxnya gak berwarna, kalo di blog post dia work, mohon bantuannya bang, thx
Taufik Nurrohman
Pastikan kode syntax highlighter dieksekusi setelah semua elemen
<i rel="pre">
berubah menjadi elemen<pre>
.