Penjelasan
Apa Itu <b:attr>?
Untuk memahami <b:attr>, mari gunakan analogi sederhana:
Bayangkan Anda punya sebuah stempel. Biasanya, stempel itu punya satu fungsi tetap - misalnya stempel "LUNAS". Dalam dunia Blogger, menggunakan expr:class='...' itu seperti mengisi satu isian di stempel tersebut.
Sekarang, bayangkan Anda punya sebuah mesin pembuat stempel yang canggih. Dengan mesin ini, Anda bisa:
- Menentukan tulisan apa saja yang akan ada di stempel (
id,class,style,title, dll.) - Mengisi isinya secara dinamis (misalnya, nomor urut postingan yang berubah-ubah)
- Memutuskan untuk menambahkan stempel tertentu hanya jika diperlukan (misalnya, stempel "PENTING" hanya untuk artikel tertentu saja)
Nah, <b:attr> adalah "mesin pembuat stempel" tersebut.
Secara teknis, <b:attr> adalah tag khusus Blogger yang berfungsi untuk menambahkan, mengubah, atau bahkan menghapus satu atau beberapa atribut HTML secara dinamis pada sebuah elemen HTML.
Mengapa <b:attr> Lebih Unggul dari expr:?
Anda mungkin sudah terbiasa dengan cara penulisan seperti expr:href='...' atau expr:class='...'. Keduanya memang bisa membuat atribut dinamis, tapi <b:attr> punya kelebihan tersendiri.
| Aspek | expr:atribut |
<b:attr> |
|---|---|---|
| Menambah atribut dinamis | ✅ Bisa | ✅ Bisa |
| Menambah banyak atribut sekaligus | ⚠️ Harus ditulis satu per satu di tag | ✅ Lebih rapi, terpisah per baris |
| Menambah atribut dengan kondisi | ❌ Tidak bisa | ✅ Bisa, pakai cond |
| Menimpa atribut yang sudah ada | ❌ Tidak bisa | ✅ Bisa |
Kapan Menggunakan <b:attr>?
Gunakan <b:attr> dalam situasi berikut:
- Menambahkan beberapa atribut dinamis ke satu tag HTML sekaligus
- Menambahkan atribut secara kondisional - atribut hanya muncul jika syarat tertentu terpenuhi
- Membuat nilai atribut yang kompleks - misalnya menggabungkan beberapa data menjadi satu string
Sintak (Kode Dasar)
Tag <b:attr> selalu ditempatkan di dalam tag HTML yang ingin Anda modifikasi. Tag ini bersifat self-closing (menutup sendiri, diakhiri dengan />) .
Struktur Umum
<!-- Tag HTML yang ingin dimodifikasi -->
<div class='kelas-statis'>
<!-- Tag b:attr ditempatkan DI DALAM elemen target -->
<b:attr name='nama_atribut' value='nilai_atribut'/>
</div>
Banyak Atribut Sekaligus
<div class='kelas-statis'>
<b:attr name='atribut_pertama' value='nilai_pertama'/>
<b:attr name='atribut_kedua' value='nilai_kedua'/>
<b:attr name='atribut_ketiga' value='nilai_ketiga'/>
</div>
Dengan Nilai Dinamis (Dari Data Blogger)
<div>
<!-- Menggunakan expr:value untuk mengambil data dari Blogger -->
<b:attr name='id' expr:value='data:post.id'/>
</div>
Dengan Kondisi
<div>
<!-- Atribut HANYA ditambahkan jika kondisi bernilai true -->
<b:attr cond='kondisi_boolean' name='nama_atribut' value='nilai'/>
</div>
Penjelasan Setiap Bagian
| Bagian | Fungsi |
|---|---|
<div ...> |
Elemen HTML target yang ingin dimodifikasi. Bisa diganti <a>, <img>, <span>, <body>, atau tag HTML apapun. |
<b:attr ... /> |
Tag Blogger yang akan memanipulasi atribut dari elemen pembungkusnya. |
name='...' |
Menentukan nama atribut HTML yang ingin ditambahkan/diubah. Contoh: id, class, style, data-id. |
value='...' |
Menentukan nilai statis untuk atribut tersebut. |
expr:value='...' |
Menentukan nilai dinamis untuk atribut. Digunakan saat mengambil data Blogger atau menggabungkan string. |
cond='...' |
(Opsional) Menentukan syarat. Jika true, atribut ditambahkan. Jika false, tag <b:attr> diabaikan sepenuhnya. |
Atribut yang Bisa Digunakan
Berikut adalah daftar lengkap atribut yang bisa Anda tulis di dalam tag <b:attr>:
| Atribut | Status | Deskripsi |
|---|---|---|
name |
Wajib | Nama atribut HTML yang menjadi target. Misalnya: 'class', 'id', 'style', 'title', 'data-src', 'target', 'rel'. |
value |
Wajib (salah satu) | Nilai statis yang akan diberikan. Contoh: value='_blank', value='noopener'. |
expr:value |
Wajib (salah satu) | Nilai dinamis dari data Blogger atau gabungan string. Contoh: expr:value='data:post.id'. |
cond |
Opsional | Berisi ekspresi boolean (benar/salah). Jika bernilai true, atribut ditambahkan. Jika false, seluruh tag <b:attr> diabaikan. |
value vs expr:value - Pilih salah satu.
-
Gunakan
valueuntuk nilai yang sudah pasti (statis). Contoh:value='_blank' -
Gunakan
expr:valueuntuk nilai yang berasal dari data Blogger atau perlu penggabungan string. Contoh:expr:value='"post-" + data:post.id'
Contoh Penggunaan
Contoh 1: Menambahkan ID Dinamis ke Elemen
Tujuan: Setiap postingan dibungkus elemen <article> yang memiliki atribut id unik berdasarkan ID postingan dari Blogger.
<b:loop values='data:posts' var='post'>
<article class='post-entry'>
<!-- Tambahkan atribut 'id' dengan nilai dari ID postingan -->
<b:attr name='id' expr:value='data:post.id'/>
<h2><data:post.title/></h2>
<p><data:post.snippet/></p>
</article>
</b:loop>
Hasil HTML di browser:
<article class='post-entry' id='1234567890'>
<h2>Judul Postingan Pertama</h2>
<p>Ringkasan postingan...</p>
</article>
<article class='post-entry' id='9876543210'>
<h2>Judul Postingan Kedua</h2>
<p>Ringkasan postingan...</p>
</article>
Penjelasan: Setiap <article> sekarang punya id unik yang berbeda-beda. Ini berguna untuk targeting CSS atau JavaScript.
Contoh 2: Menambahkan Class Khusus Hanya untuk Postingan Pertama
Tujuan: Postingan pertama dalam daftar mendapat class tambahan post-pertama agar bisa di-styling berbeda (misalnya lebih besar).
<b:loop values='data:posts' var='post' index='i'>
<article class='post-entry'>
<!-- Tambahkan atribut 'id' untuk semua postingan -->
<b:attr name='id' expr:value='data:post.id'/>
<!-- Tambahkan class 'post-entry post-pertama' HANYA jika indeks = 0 -->
<b:attr cond='data:i == 0' name='class' value='post-entry post-pertama'/>
<h2><data:post.title/></h2>
</article>
</b:loop>
Hasil untuk postingan pertama (indeks 0):
<article class='post-entry post-pertama' id='1234567890'>
<h2>Postingan Terbaru</h2>
</article>
Hasil untuk postingan lainnya (indeks 1, 2, 3, ...):
<article class='post-entry' id='9876543210'>
<h2>Postingan Biasa</h2>
</article>
Penjelasan:
data:iadalah variabel indeks darib:loop, dimulai dari0.cond='data:i == 0'artinya: "jalankan ini hanya jika ini item pertama".- Saat kondisi terpenuhi,
<b:attr>untukclassakan menimpa atributclassyang sudah ada di tag<article>. Maka dari itu,valueperlu ditulis lengkap:'post-entry post-pertama'(bukan hanya'post-pertama').
Contoh 3: Menggabungkan Beberapa <b:attr> untuk Satu Elemen
Tujuan: Membuat sebuah <div> yang sangat dinamis - punya id, class, data-title, dan style yang semuanya diambil dari data postingan.
<b:loop values='data:posts' var='post' index='i'>
<div>
<!-- Atribut id: gabungan string "post-" dan ID postingan -->
<b:attr name='id' expr:value='"post-" + data:post.id'/>
<!-- Atribut class: berbeda untuk item pertama dan lainnya -->
<b:attr cond='data:i == 0' name='class' value='card card-featured'/>
<b:attr cond='data:i != 0' name='class' value='card'/>
<!-- Atribut data-title: menyimpan judul postingan -->
<b:attr name='data-title' expr:value='data:post.title'/>
<!-- Atribut style: background hanya jika ada thumbnail -->
<b:if cond='data:post.thumbnailUrl'>
<b:attr name='style'
expr:value='"background-image: url(" + data:post.thumbnailUrl + ");"'/>
</b:if>
<h2><data:post.title/></h2>
</div>
</b:loop>
Hasil untuk item pertama (punya thumbnail):
<div id='post-111222333'
class='card card-featured'
data-title='Postingan Unggulan'
style='background-image: url(https://example.com/gambar.jpg);'>
<h2>Postingan Unggulan</h2>
</div>
Hasil untuk item lainnya (tanpa thumbnail):
<div id='post-444555666'
class='card'
data-title='Postingan Biasa'>
<h2>Postingan Biasa</h2>
</div>
-
<b:attr>menimpa atribut yang sudah ada.
Jika elemen sudah punyaclass='awal'dan<b:attr>mengaturname='class'denganvalue='baru', maka hasilnya adalahclass='baru'- bukan class='awal baru'. Atribut lama ditimpa, bukan ditambahkan. Jadi, tulis ulang semua class yang Anda butuhkan di dalamvalue. -
Boleh ada banyak
<b:attr>dalam satu elemen.
Anda bisa menambahkan 2, 3, bahkan 10 tag<b:attr>di dalam satu elemen. Masing-masing mengatur atribut yang berbeda. -
condsangat powerful - manfaatkan.
Dengancond, Anda bisa membuat dua versi<b:attr>untuk atribut yang sama - satu untuk kondisitrue, satu lagi untukfalse. Ini sepertiif-elsekhusus untuk atribut. -
Gunakan
expr:valueuntuk penggabungan string.
Jika nilai atribut Anda perlu dicampur antara teks biasa dan data Blogger, gunakanexpr:value. Formatnya:expr:value='"teks statis" + data:variabel + "teks lagi"'.