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:

  1. Pertama-tama, tentunya import kelas MySmarty dan instansiasi,
  2. require_once("MySmarty.php");

    //Instansiasi kelas MySmarty
    $ms = new MySmarty();

  3. Tuliskan kode berikut untuk membuat welcome message dan side menu,
  4. //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));

  5. Tampilkan web sesuai desain template yang diinginkan, dalam contoh ini nama template-nya adalah “elegant”
  6. $ms->display("elegant");

  7. 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().

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

Double Template

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

16 Responses to “Membuat PHP Template Engine Sederhana”

  1. nurasto Says:

    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.

  2. muhibbuddin Says:

    waduh, bagus… asik kalo diterusin

  3. KnightDNA Says:

    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.

  4. Aditya Says:

    @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.

  5. Suwondo Says:

    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 ……..

  6. Philips Tel Says:

    klu ga pake smarty boleh ga??

    Mksdud aku buat class sendiri utk manajemen template???

  7. agungX2 Says:

    Smarty di peruntukan untuk desinger yg tidak ingin bersusah payah dengan koding php,. untuk skala enterprise menurut pengalaman2x akang2x yang d atas mungkin ada benar nya juga. saya baru pake beberapa hari ini untuk proyes web kampus saya.. terima kasih untuk tutor nya.. ada refrensi lain gk mas.. ? yang english maybe ^_^ agar lebih banyak cakupan bahasannya

  8. agus Says:

    email:
    passwort:

  9. affu adi matera Says:

    ok bro…tx


  10. […] 45. Membuat PHP Template Engine Sederhana […]

  11. sinauw Says:

    maturnuwon mas. Atas infonya

  12. Eko Says:

    masih belajar. belum seberapa ngerti…🙂
    btw.. than’x buat sharingnya

  13. Robota Says:

    Matur Tengqu ya …..

  14. adri Says:

    gue mau ttanya nie gimana logikanya utk tampilkan invis bro,,
    misalkan ita beli barang 1 dengan kode ER2Y,,nah supaya tampil di menu invois di user gimana y?
    ini menu invois sdh disediakan hanya logikanya saya binggung,apa ada yg bs bantu,tks


  15. wah ada mastah php dsni.tak baca dulu ya,


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: