Membuat PHP Template Engine Sederhana
Maret 30, 2008
Inginnya posting artikel ini sejak sebelum-sebelumnya, tapi karena saya terlalu sibuk dengan deadline tugas, jadi baru sempat sekarang.
Berawal dari kebingungan yang saya alami dalam mengerjakan tugas kuliah Perograman Internet, khususnya dalam membuat fitur memilih template (Ohya, buat yang belum tahu, tugasnya itu membuat CMS sederhana dengan PHP). Bagaimana caranya membuat fitur memilih template yang:
- sederhana;
- mudah digunakan oleh programmer;
- reusable, dapat digunakan untuk kode program yang lain;
- template dapat ditambah tanpa harus mengkode ulang;
- template dapat dibuat terpisah (mandiri) oleh desainer;
Titik terang mulai tampak ketika saya melihat seorang teman menggunakan sesuatu yang disebut Template Engine, namanya Smarty. Konsep yang saya tangkap waktu itu adalah tag-replacing. Sederhana, tapi sama sekali tidak terpikir olehku sebelumnya. Sebenarnya Smarty tidak sesederhana itu, masih banyak fitur yang lain. Bisa dibaca-baca di situsnya.
Tadinya saya mau menggunakan Smarty untuk mengerjakan tugas, tapi akhirnya saya memutuskan untuk mencoba-coba membuat template engine yang mirip namun jauh lebih sederhana. Hasilnya adalah sebuah kelas yang diberi nama MySmarty (terinspirasi dari Smarty =) ). Konsepnya pun sederhana, hanya tag-replacing.
Untuk menjelaskannya, saya akan menggunakan contoh berupa langkah-langkah berikut:
- Pertama-tama, tentunya import kelas MySmarty dan instansiasi,
- Tuliskan kode berikut untuk membuat welcome message dan side menu,
- Tampilkan web sesuai desain template yang diinginkan, dalam contoh ini nama template-nya adalah “elegant”
- Web ditampilkan sesuai template sebagaimana dapat dilihat pada gambar di bawah ini. Bagian yang dilingkari adalah top message dan menu vertikal yang kita masukkan dengan method setTop() dan setLeft().
require_once("MySmarty.php");
//Instansiasi kelas MySmarty
$ms = new MySmarty();
//Top Message
$topMsg = "Welcome, ".$_SESSION["role"]." ! ";
if($_SESSION["role"] == "admin")
$topMsg .= " | Logout";
else if($_SESSION["role"] == "guest")
$topMsg .= " | Login as Administrator";
//Tempatkan message di bagian top dengan method setTop
$ms->setTop($topMsg);
//Menu Vertikal
$arrMenu = array("Home" => "home.php","Guest Book" => "home.php?menu=guest_book");
//Tempatkan menu di bagian left
$ms->setLeft("Menu ".$ms->vMenu($arrMenu));
$ms->display("elegant");
Jika kita memanggil method display() dengan nama template yang berbeda, maka tampilan web pun akan berbeda. Berikut ini adalah contoh pemanggilan method tersebut dengan template “orange” dan “simple”.
Singkat kata, dengan menggunakan template engine, banyak kemudahan yang didapatkan dalam men-develop situs. Secara umum, kemudahan tersebut dirasakan oleh programmer dan desainer:
- Bagi programmer, dia dapat mengkode tanpa harus memikirkan desain, seperti yang dicontohkan di atas.
- Bagi desainer, dia dapat mendesain web secara independen dengan membuat template yang dapat diaplikasikan untuk kode manapun. Nah, bagaimana cara membuat template? Mudah-mudahan sempat saya tuliskan di artikel berikutnya.
Download kode class MySmarty : MySmarty.php
Untuk yang suka baca dokumen yang agak teknis, bisa download Dokumentasi Kelas MySmarty


Mei 9, 2008 at 7:06 am
Weih, bagus bagus … terus berkarya!. Sudah pasti bisa buat framework sendiri donk hehehe.
Menurut saya, template engine itu untuk memisahkan antara logika bisnis kayak CRUD dengan presentasi. Jadi apa pun yang terjadi pada business logic, si presentasi tidak memerlukan perubahan radikal.
Agustus 3, 2008 at 5:52 pm
waduh, bagus… asik kalo diterusin
Agustus 5, 2008 at 8:42 am
Mo komen aja soal Smarty, Dit. Hehe…
Pengalaman make Smarty pas Progin kemarin gue ngerasa kurang nyaman aja pake Smarty. Apalagi pas kemarin itu gue coba2 bikin pake MVC hasil rancangan sendiri (gak pake framework), alhasil kerjaan yang mestinya 2 ato 3 hari kelar jadi molor banget…
so, gue menghindari pake Smarty kalo pas ngerancang aplikasi, logic separation-nya nggak terancang dengan baik. Kalo udah dari awal desainnya bener kayaknya Smarty bakal bikin mudah
.
Oiya, satu lagi… hal yang bikin Smarty ribet tuh menurut gue Smarty pake pola assigment variabel… CMIIW (eksplornya gak dalem2 amat soalnya, hehe)… sama koding ala Smarty-nya yang kurang powerful. Ya, semoga ke depan Smarty, bisa lebih keren lagi.
Agustus 5, 2008 at 11:40 am
@nurasto: wah, terima kasih dukungannya
@muhibbuddin: hehe, sebenarnya agak malas juga kalo harus “re-inventing the wheel”, sekedar latihan saja. Kalau untuk diseriusin saya prefer pakai/mengembangkan yg sudah ada saja ;p
@KnightDNA: iya bener Yaz, kalo rancangannya nggak dibuat rapi dari awal memang bakal tambah susah. Tapi klo dibuat rapi akan ngebantu banget apalagi klo aplikasinya besar.
Pengalaman gw waktu modif aplikasi open source “moregroupware”, aplikasinya dikembangin pake Smarty, itu jadi enak modifnya, logic bisnis dan tampilannya gak terlalu saling pengaruh.
September 30, 2008 at 12:12 am
Kalau saya sewaktu pakai Smarty, penggunaan variabel dan coding ala smarty saya minimalisir banget. Karena menurut saya, menjadi parsing berulang dan pembelajaran ulang. Karena pemrograman gaya smarty diparsig oleh smarty dulu baru ntar diparsing oleh PHP. Dan gaya pemrogramannya yang jauh berbeda dengan PHP memaksa harus belajar ulang. Jadi saya lebih suka programming sepenuhnya pada PHP, Nha di Smartynya tinggal template. Kecuali untuk hal-hal tertentu seperti pembuatan tabel, lebih suka perulangan pada smarty.
Cukup lama cari template engine yang sederhana, mudah dipelajari, bisa dikembangkan sendiri kembali sesuai kebutuhan, cepat, dan tidak terkompilasi (karena sering juga membuat dalam versi Web On CD, jadi gak bisa pakai smarty). Akhirnya ketemu dengan site ini. Thanx berat ……..
Februari 18, 2009 at 1:37 am
Abdilez.blogspot.com
Mei 25, 2009 at 7:41 am
klu ga pake smarty boleh ga??
Mksdud aku buat class sendiri utk manajemen template???