Thursday, February 23, 2012

Memanfaatkan JQuery untuk Mengizinkan Elemen Terlarang Masuk ke dalam Kometar Blogger

Memanfaatkan jQuery untuk Mengizinkan Elemen Terlarang Masuk ke dalam Kometar Blogger
Elemen pengisi komentar yang lebih beragam

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>

Labels: , ,

34 Comments:

At Thursday, February 23, 2012 at 3:22:00 PM GMT+7, Blogger Yopi Hasopa said...

Menarik sekali gan, dari dulu pengen yang kayak gini. Tapi apakah ini tidak melanggar TOS dari blogger sendiri??

 
At Thursday, February 23, 2012 at 8:50:00 PM GMT+7, Blogger Taufik Nurrohman said...

@Yopi Hasopa Saya 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...

 
At Friday, February 24, 2012 at 2:44:00 PM GMT+7, Blogger Sinto said...

Wowwww Perkembangan Yang Sangat Bagus Bang

 
At Friday, February 24, 2012 at 6:29:00 PM GMT+7, Blogger Taufik Nurrohman said...

@system of blog Saya dapet nilai berapa? :p

 
At Friday, February 24, 2012 at 7:35:00 PM GMT+7, Blogger Sinto said...

1000
nilai nya hehehee coba aj bisa ngembangin kyak gini pasti mantep :D,

 
At Friday, March 23, 2012 at 4:09:00 AM GMT+7, Blogger Mr.Randy said...

kalo membuat link aktif ilang gimana bang?mohon jawabannya

 
At Sunday, June 3, 2012 at 5:02:00 PM GMT+7, Blogger Unknown said...

om taufik ko saya ga bisa2 ya ngubah link jadi -> [link] ? :'(
padahal udah saya ikutin saran om yg buat agan muxlimo :'(

 
At Sunday, June 3, 2012 at 7:37:00 PM GMT+7, Blogger Taufik Nurrohman said...

@Suhendrie Purnama Digabung saja dengan yang lain:

$('#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).next('br').remove();
// Menyisipkan tag <pre>
$('i[rel="pre"]', this).replaceWith(function() {
return $('<pre></pre>').append($(this).contents());
});
...
...
$('i[rel="anchor"]', this).replaceWith(function() {
return $('<a href="' + $(this).text() + '">[Link]</a>');
});
});

 
At Monday, June 4, 2012 at 4:57:00 AM GMT+7, Blogger Unknown said...

@Taufik Nurrohman udah bisa om \o/ \o/ \o/
makasih banyak om :D :D

 
At Monday, June 4, 2012 at 5:52:00 AM GMT+7, Blogger Unknown said...

om mau tanya lagi :(
ko tag pre nya ga bisa yaa ? ~x(

 
At Monday, June 4, 2012 at 8:24:00 AM GMT+7, Blogger Taufik Nurrohman said...

@Suhendrie Purnama <i rel="pre">Kode di sini...</i>

 
At Saturday, June 9, 2012 at 11:59:00 AM GMT+7, Blogger Bayu Handono said...

tag pre nya kok ga bisa yah, kalo masukin image udah bisa. :P

 
At Saturday, June 9, 2012 at 6:46:00 PM GMT+7, Blogger Taufik Nurrohman said...

@Bayu Handono Bukannya tidak bisa. Mungkin cuma tampilannya saja yang belum dimodifikasi. Coba tambahkan ini di atas ]]></b:skin>:

#comments pre,
#comments i[rel="pre"] {
display:block;
background-color:#333;
font:normal 12px "Courier New",Monospace;
padding:0.5em 1em;
color:white;
word-wrap:normal;
white-space:pre;
}


Selengkapnya: CSS Fallback untuk Fitur Manipulasi Komentar Blogger

 
At Tuesday, June 19, 2012 at 7:16:00 PM GMT+7, Blogger Rizky Wardiansyah said...

saya ijin untuk share trik ini di blog saya ya gan :)

 
At Saturday, November 3, 2012 at 9:36:00 AM GMT+7, Blogger Unknown said...

berhasil mas, tapi ko malah hilang yah kodenya pas di publis???

 
At Friday, May 3, 2013 at 10:37:00 PM GMT+7, Blogger Kang Ismet said...

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

 
At Saturday, May 4, 2013 at 6:32:00 AM GMT+7, Blogger Taufik Nurrohman said...

/2012/09/syntax-highlighter-dengan-prism.html?showComment=1362493246789#c8544828114478662092

 
At Saturday, May 4, 2013 at 10:39:00 AM GMT+7, Blogger Kang Ismet said...

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...

 
At Sunday, May 5, 2013 at 7:59:00 AM GMT+7, Blogger Taufik Nurrohman said...

Tidak perlu diganti-ganti. Untuk mengaktifkan link seperti itu sudah ada jawabannya di sebelah atas ^:D

 
At Sunday, May 5, 2013 at 11:21:00 AM GMT+7, Blogger Kang Ismet said...

xixixi... sorry ga baca komentar yang sama pertanyaannya ;)

 
At Monday, May 13, 2013 at 1:39:00 PM GMT+7, Blogger Kang Ismet said...

This comment has been removed by the author.

 
At Monday, May 13, 2013 at 3:36:00 PM GMT+7, Blogger Taufik Nurrohman said...

Supaya lebih mudah, tag PRE digabungkan secara langsung saja dengan CODE seperti ini:

$('i[rel="pre"]').replaceWith(function() {
return $('<pre><code>' + $(this).html() + '</code></pre>');
});

 
At Monday, May 13, 2013 at 4:19:00 PM GMT+7, Blogger Kang Ismet said...

mangstab kang.. berhasil

 
At Tuesday, September 24, 2013 at 10:04:00 AM GMT+7, Blogger Bingkai Madrasah said...

Visit W3Schools

 
At Sunday, December 8, 2013 at 9:12:00 AM GMT+7, Blogger Taufik said...

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?

 
At Sunday, December 8, 2013 at 9:44:00 AM GMT+7, Blogger you said...

iya mas bener.. ternyata setelah saya pindah syntaknya agar dieksekusi paling akhir sebelum semua tag pre.. syntak pada komentar jadi berpungsi... terimakasih mas...

 
At Monday, December 9, 2013 at 6:29:00 PM GMT+7, Blogger Taufik Nurrohman said...

$('i[rel="image"]', this).replaceWith(function() {
return $('<img />').attr('src', $(this).text().replace(/\/s[0-9]+/, "/s400"));
});

 
At Monday, December 9, 2013 at 7:46:00 PM GMT+7, Blogger Taufik said...

terima kasih kode nya mas, sekarang gambar sudah oke

 
At Thursday, February 5, 2015 at 9:59:00 AM GMT+7, Blogger Taufik said...

.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

 
At Saturday, February 7, 2015 at 10:57:00 PM GMT+7, Blogger Taufik Nurrohman said...

Coba pakai selektor atribut, lalu targetkan nama gambarnya:

.emo[src$="smile.gif"] {
width:30px;
height:30px;
}

 
At Tuesday, February 24, 2015 at 3:31:00 PM GMT+7, Blogger Rizky said...

wih tuh nofollow linknya otomatis apa manual, kalo otomatis mau tau dong caranya kang

 
At Tuesday, February 24, 2015 at 5:33:00 PM GMT+7, Blogger Rizky said...

kalo template saya manggil pre kyk gini <i rel="pre"><pre><code>...</pre></code></i> terus jquerynya kyk mana ya :(

 
At Monday, April 13, 2020 at 6:46:00 PM GMT+7, Blogger Mas Kolektor said...

bang, saya lampirkan *pre di kolom komentar, yang saya pakai dari syntax experimennya [url=https://www.dte.web.id/2012/06/syntax-highlighter-eksperimen.html]Experimen Syntax Highlighter DTE[/url], yang saya terapkan di [url=https://kolektorw3.blogspot.com/2019/05/cara-verifikasi-blogger-webmaster-terbaru.html]Blog Aku[/url], coba di cek bang kolom komentarnya, pre syntaxnya gak berwarna, kalo di blog post dia work, mohon bantuannya bang, thx

 
At Tuesday, April 14, 2020 at 9:11:00 PM GMT+7, Blogger Taufik Nurrohman said...

Pastikan kode syntax highlighter dieksekusi setelah semua elemen <i rel="pre"> berubah menjadi elemen <pre>.

 

Post a Comment

<< Home