Di sebuah aplikasi yang berbasis web, adalah hal yang wajar jika Fields ditampilkan dalam bentuk tabular. Artinya, Label yang berisi penjelasan dari suatu field akan ditempatkan pada posisi sebelah kiri, sedangkan Data atau Elemen yang terdapat di sebuah form (seperti TextBox, ComboBox, Radio Button, dan sebagainya) untuk menginput data ke field tersebut berada di sebelah kanannya. Nah, kadang-kadang kita ingin mengubah layout field yang standar tadi dan biasa ditampilkan pada halaman View, Add, dan Edit agar sesuai dengan kebutuhan kita. Katakanlah kita ingin agar posisi Label berada di atas dari posisi Data atau Elemen di sebuah form. Nah, pertanyaannya adalah, apakah hal ini bisa diterapkan di aplikasi web yang dibangkitkan oleh PHPMaker?
Sejak versi 9, PHPMaker memperkenalkan sebuah fitur baru bernama Custom Templates. Fitur ini memungkinkan Web Developer untuk mengubah layout tampilan field di ketiga halaman tadi dengan cepat. Web Developer tidak perlu melakukan kostumisasi file Template. Web Developer juga tidak perlu mengubah kode di file skrip yang sudah dibangkitkan oleh PHPMaker. Semuanya dapat dilakukan dengan sangat mudah dari dalam project PHPMaker. Artinya, kode yang digunakan di Custom Templates akan disimpan ke dalam file PHPMaker project (.pmp), dan dapat dimuat kembali ketika Anda menjalankan file project tadi jika ingin mengubahnya lagi di waktu mendatang.
Penting untuk diingat, bahwa istilah Custom Templates yang kita gunakan di artikel ini berbeda dengan istilah Customizing Templates. Istilah yang kedua mengacu kepada kegiatan untuk melakukan kostumisasi file Template yang digunakan oleh PHPMaker. Sedangkan istilah pertama mengacu kepada Template yang bisa dikostumisasi, tanpa harus menyentuh atau mengubah file Template. Bisa dikatakan, bahwa Custom Templates mirip sekali dengan salah satu fitur utama di sebuah PHP Framework, yaitu: View dari konsep MVC (Model-View-Controller). Jadi, dengan menaruh kode Anda di bagian Custom Templates dari PHPMaker, Anda bisa mengubah tampilan (View) dari layout Field dan Data yang berada di suatu form atau halaman.
Jika Anda mendefiniskan kode di bagian Custom Template di file project Anda, maka PHPMaker akan memisahkan kode asli dalam banyak Template kecil di sisi klien. Template yang berada di sisi klien adalah kode HTML yang diapit dengan tag <script type=”text/html”> dan </script>. Karena browser tidak tahu bagaimana mengeksekusi skrip “text/html”, maka browser akan mengabaikannya. Jadi hal ini memungkinkan untuk menyusun kembali HTML dari Template-template kecil di sisi klien menggunakan JavaScript berdasarkan Custom Template yang Anda sediakan. Dengan kata lain, dia cukup mengatur ulang bagian HTML yang sudah ada di browser.
Selama proses pembangkitan skrip berlangsung, PHPMaker mengkonversi Custom Template Anda ke Template yang berada di sisi klien dan menggunakan JavaScript untuk melakukan render pada Template. Template yang berada di sisi klien di-rendered oleh JsRender (lihat topik Third-Party Tools dari file Bantuan di PHPMaker) yang merupakan mesin template JavaScript pihak ketiga yang dioptimasi untuk melakukan proses render string dengan performansi tinggi. Skrip yang dibangkitkan hanya menggunakan fitur Template Composition untuk me-render HTML dari Template eksternal lainnya. Custom Template Anda meskipun demikian dapat membuat penggunaan fitur JsRender lainnya jika Anda membutuhkannya. (Catatan: JsRender saat ini masih dalam status Beta, jika Anda menggunakan fitur-fiturnya secara langsung, Anda harus memperhatikan adanya beberapa perubahan yang terjadi di waktu mendatang.).
Custom Templates mengijinkan Web Developer untuk mengkostumisasi layout Fields yang awalnya ditempatkan di kode HTML tabel utama dari sebuah halaman. Custom Templates tidak dapat mengkostumisasi HTML yang berada di luar area tersebut. Adapun area-area yang dapat dikostumisasi dengan menggunakan Custom Templates adalah sebagai berikut:
- CustomTemplateSearch, area panel Cari yang berada di bagian atas dari halaman List
- CustomTemplateHeader, area header atau judul kolom dari tabel utama yang berada di halaman List. Area ini juga termasuk yang terdapat di halaman konfirmasi sebelum melakukan penghapusan record (Delete).
- CustomTemplateBody, area badan (Body) dari tabel utama yang berada di halaman List. Area ini juga termasuk yang terdapat di halaman konfirmasi sebelum melakukan penghapusan record (Delete).
- CustomTemplateFooter, area kaki (Footer) dari tabel utama yang berada di halaman List. Area ini biasanya berisi nilai jumlah (SUM) dari data angka di suatu kolom. Area ini juga termasuk yang terdapat di halaman konfirmasi sebelum melakukan penghapusan record (Delete).
- CustomTemplate, area utama yang berada di halaman Add, Copy, Edit, Search, dan View
Supaya kode yang terdapat di dalam Custom Templates bisa dikenali oleh PHPMaker sebagai kode yang berasal dari Custom Templates, maka harus ada penanda atau Tag khusus yang digunakan. PHPMaker mendukung Tag khusus yang dibuat untuk kode di Custom Template. Karena JsRender menggunakan Tag yang diapit dengan {{ dan }} (kurung kurawal ganda), supaya Anda dapat menggunakannya juga di Custom Templates, maka Tag di Custom Template menggunakan {{{ dan }}} (tiga buah kurung kurawal) untuk membedakannya. Tag Custom Template akan dikonversi menjadi tag JsRender selama proses pembangkitan skrip, dan mereka hanya dapat digunakan di antarmuka PHPMaker. Mereka tidak dapat digunakan di tempat lainnya seperti di file Template (ZIP) atau di file skrip yang sudah dibangkitkan oleh PHPMaker.
rahmatdi mengatakan
tulisan anda semuanya bagus, tapi sayang kurang gambarnya untuk lebih menjelaskan maksudnya! jadi pembaca(saya) agak pusing kalo di terangkan secara tulisan.
saran saya alangkah baiknya jika di muat beberapa gambar sebagai penjelasnya. satu gambar memuat sejuta kata, itu lho maksud saya hahah…..
tetap semangat nulisnya gan! terimakasih !
Masino Sinaga mengatakan
Terima kasih atas feedback-nya, dan akan dipertimbangkan. 🙂
Abdullah Arief mengatakan
Lanjutkan Pak Oprek-oprek PHPMaker nya.. Saya tertarik belajar nya.. Saran Saya Kalo bisa Lengkapi dengan tutorial penggunaan semua aplikasi Fitur-fitur yang ada PHPMaker…
Masino Sinaga mengatakan
Terima kasih atas masukannya. Iya nih, akhir-akhir ini lagi sibuk, sekalian ada urusan dikit sama perusahaan yang satu ini, perlu agak disomasi, supaya melek matanya. Lho, kok jadi curhat, hehehe… 😉
Husen mengatakan
Setelah baca artikel pak masino sinaga saya akhirnya beli produk phpmaker 2018. Sudah 8 bulan saya pakai ternyata beneran kompleks nih program
Masino Sinaga mengatakan
Apalagi yang versi 2019, siap-siap saja untuk berdecak kagum dibuatnya, hehehe… 🙂 😛
iwan mengatakan
Mau tanya mas Masino, kalo untuk menghilangkan border atau table di listpage bisa nggak ya?
Artinya hanya data2 saja yang muncul tanpa bentuk tabel
Masino Sinaga mengatakan
Bisa dong. Gunakan jQuery code dan taruh di bagian Startup Script di bawah Client Scripts -> Table-Specific -> List Page. Anda harus mengetahui nama class atau id selector dari table yang digunakan pada halaman List tadi.
Dirto mengatakan
Aplikasi yg di generate dg phpmaker tampilannya gitu2 aja, om bikin tutorial mempercantik tampilan app web dari phpmaker. Trims
Masino Sinaga mengatakan
Malas ah, daripada bikin tutorial mempercantik tampilan app web; terlalu rumit, dan saya yakin Anda pasti pusing mengikutinya, hehehe…
Mendingan saya mengimplementasikan langsung template yang cantik ke dalam project PHPMaker melalui pemakaian Masino Extensions. Kan sudah ada contohnya untuk versi 2019.
Deka mengatakan
Bagaimana saya bisa mendapatkan template Masino Extensions?
Masino Sinaga mengatakan
Ikuti petunjuk di halaman ini: http://www.ilovephpmaker.com/membership-options-page/.
andika mengatakan
Pak kalo JsRender dari Number kan hanya di tulus 1000 kalo di convert ke tulisan Rp. 10.000 Formatnya gimana Pak mohon petunjuk terimkasih.
Masino Sinaga mengatakan
Bisa pakai server event Row_Rendered.
Gunakan funtion PHP yang bernama number_format: https://www.w3schools.com/php/func_string_number_format.asp
Jilan mengatakan
pak mau bertanya, jika ingin membuat custom table dengan result merge row apakah bisa? jika iya bagaimana kah tahapannya pak? terima kasih
Masino Sinaga mengatakan
Seharusnya bisa.
Tahapannya ya langsung dicoba saja dengan menulis kode HTML yang merge row-nya.