Sunday, June 19, 2016

Menggunakan `b:with`

Tag <b:with> berfungsi untuk membuat variabel alternatif dari sebuah data atau bahkan dari variabel yang lain. Pada contoh di bawah, <data:name/> akan menampilkan teks Taufik Nurrohman:

<b:with var='name' value='Taufik Nurrohman'>
  <h1><data:name/></h1>
</b:with>

Dan pada contoh di bawah, variabel site akan memiliki nilai yang sama dengan blog. Di sini, tag <b:with> hanya berfungsi sebagai alias variabel blog:

<b:with var='site' value='data:blog'>
  <b:if cond='data:site.url == data:blog.url'>
    <p><mark>OK!</mark></p>
  </b:if>
</b:with>

Nilai value pada tag <b:with> tidak harus berupa data primitif. Anda juga bisa menuliskan data berupa koleksi, misalnya seperti ini:

<b:with var='page' value='{
    title: "Page Title",
    description: "Page description.",
    author: "Taufik Nurrohman",
    link: "//example.com",
    tags: ["Foo", "Bar", "Baz"]
}'>

  <article>
    <h2>
      <a expr:href='data:page.link'>
        <data:page.title/>
      </a>
    </h2>
    <p><data:page.description/></p>
    <p>
      <strong>Tags:</strong>
      <b:loop values='data:page.tags' var='tag'>
        <data:tag/>
      </b:loop>
    </p>
  </article>

</b:with>

Salah satu kekurangan fitur ini menurut Saya adalah bahwa setiap variabel hanya berlaku di dalam cakupan masing-masing tag <b:with> karena sifat tag ini memang tidak sama dengan tag yang dapat berdiri sendiri seperti misalnya <b:class>. Oleh karena itu, ketika kita ingin membuat beberapa nama variabel sekaligus dalam satu tema, maka kita perlu membuat lingkup tag <b:with> berkali-kali seperti ini, yang mana akan membuat kode menjadi makin tidak nyaman untuk dibaca:

<b:with var='date' value=' … '>
  <b:with var='language' value=' … '>
    <b:with var='site' value=' … '>
      <b:with var='url' value=' … '>

        <body> … </body>

      </b:with>
    </b:with>
  </b:with>
</b:with>

Solusi yang paling mudah dan sesuai prosedur tentunya adalah dengan mengubah data sebagai objek dan menyimpannya ke dalam satu nama variabel:

<b:with var='vars' value='{
    date: … ,
    language: … ,
    site: … ,
    url: … ,
}'>

  <body> … </body>

</b:with>

Satu hal yang Saya harapkan untuk ke depannya jika Blogger memang benar masih tetap akan terus dikembangkan adalah adanya sebuah tag yang memiliki fungsi seperti tag <b:with> namun dengan sintaks dan sifat yang sama dengan <b:class>, dengan harapan bahwa kita akan dapat membuat nama variabel secara inline dimana cakupan tidak lagi didasarkan pada tag tersebut melainkan didasarkan pada tag induk:

<b:var name='foo' value='ABC'/>

<data:foo/> <!-- “ABC” -->

<div>

  <b:var name='foo' value='DEF'/>
  <b:var name='bar' value='123'/>
  <b:var name='baz' value='["Foo", "Bar", "Baz"]'/>

  <data:foo/> <!-- “DEF” -->

</div>

<data:foo/> <!-- “ABC” -->

Labels: ,

3 Comments:

At Tuesday, June 21, 2016 at 12:57:00 AM GMT+7, Blogger Admin Coeg said...

dapet pertamax :D :D :D oyee

 
At Tuesday, June 21, 2016 at 4:24:00 AM GMT+7, Blogger Sinto said...

Memang ini yang terbaru

 
At Friday, May 11, 2018 at 9:02:00 PM GMT+7, Blogger Dihak M Nur A said...

Wah, bisa jadi inovasi baru nih \o/ akhirnya bisa buat variable \o/

 

Post a Comment

<< Home