Memanfaatkan JQuery untuk Mengizinkan Elemen Terlarang Masuk ke dalam Kometar Blogger

Tabel Konten
  1. Lebih Lengkap 
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>

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:

    $('#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>');
    });
    });
  • 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>:

    #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;
    }

  • 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

      • 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:

                $('i[rel="pre"]').replaceWith(function() {
                return $('<pre><code>' + $(this).html() + '</code></pre>');
                });
      • 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

  • 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

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

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

    kalo template saya manggil pre kyk gini <i rel="pre"><pre><code>...</pre></code></i> terus jquerynya kyk mana ya  :(
  • 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>.

Komentar telah ditutup.