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

0 Response to "Menggunakan `b:with`"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel