Welcome to Abdul Malik Ikhsan's Blog

Template Layout helper pada CodeIgniter

Posted in Tutorial PHP by samsonasik on April 30, 2009

Pernah ga ngerasa capek (bosen) nge-include header / footer pada setiap halaman yang kita buat? jelas ga banget kan? Nah, di CI, saya membuat helper untuk templating layout biar enak, biar ga susah2 lagi melakukan hal2 yang membuang waktu tersebut.Pertama, kita buat dulu helpernya, kita simpan di ./system/application/helpers/using_template.php :

<?php
    if ( ! function_exists('show'))
    {
        function  show($view, $data)
        {
           global $template;
           $ci = &get_instance();
           $data['view'] = $view;
           $ci->load->view('templates/'.$template.'/template_page_view', $data);
        }
    }
/* End of file using_template.php */
/* Location: ./system/application/helpers/using_template.php */

Nah, kita load deh di autoload.php

//......................
global $template;
// saya buat template bernama sample
$template = "sample";
$autoload['helper'] = array('url','using_template');
//........................

Nah, kita sekarang buat folder di system/application/views/templates/sample (nama folder sama dengan nama template)

Nah, setelah itu, kita isi template_page_view.php dengan layout ,berisi header, content, dan footer (bisa dimodifikasi).

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
        global $template;
?>
<html>
    <head>
        <title>Testing Template Layout</title>
        <!-- load css -->
	<link href="<?=base_url()?>system/application/views/templates/<?=$template?>/css/style.css"
              media="all" rel="stylesheet" type="text/css" />     

        <!-- load javascript -->
        <script src="<?=base_url()?>system/application/views/templates/<?=$template?>/javascript/jquery-1.3.1.js"></script>
    </head>

    <body>
<div id="MyWrapper">
<div id="MyHeader">
<div id="MyTitle">
                INI HEADER<hr></div>
</div>
<div id="MyContent">
 <!-- load CONTENT nya -->
                <?php $this->load->view($view);    ?></div>
<div id="MyFooter">
                <hr>INI FOOTER</div>
</div>
</body>
</html>

Nah, isi controller nya, tidak lagi $this->load->view, tapi kita panggil helper using_template kita seperti di bawah ini :

.........................
       $view = "test/sampleview";
       $data = array();
       $data['identitas'] = array(
                                "0"=>array(
                                    "id"=>"007",
                                    "nama"=>"James Bond"
                                    ),
                                "1"=>array(
                                    "id"=>"006",
                                    "nama"=>"victor"
                                    ),
                                 "2"=>array(
                                    "id"=>"009",
                                    "nama"=>"agus"
                                 )
                                );
       show($view, $data);
....................
Advertisements

27 Responses

Subscribe to comments with RSS.

  1. abdee said, on May 17, 2009 at 2:55 pm

    wahhhh….

    makasih banget neeh tutornya
    bermanfaat bgt!

    tapi saya mau tanya neeh!

    path dari
    $view = “test/sampleview”;

    itu letaknya dimana???
    soalnya saya letakkan di sub direktori “template”
    koq error

    makasih atas pencerahannya!

  2. samsonasik said, on May 17, 2009 at 4:15 pm

    buat aja di dalam folder application/views folder bernama test, dengan nama file di dalamnya : sampleview.php

  3. rhio said, on October 14, 2009 at 5:21 pm

    controllernya kasih apa tu yak??

    pusinggg……….

  4. samsonasik said, on October 14, 2009 at 9:18 pm

    ya itu kan contoh sederhananya, tentu nya ada function-nya, buat uri yg nanti nya akan dipanggil 🙂

  5. phenom said, on February 2, 2010 at 8:28 am

    saya pakai ya mas sistemnya… =)
    o iya,kemarin konsultan di kantor saya juga pakai cara ini
    dan saya rasa sangat amat persis
    terima kasih mas

  6. fanjavaakhmad said, on November 2, 2010 at 3:38 am

    i get this error ,,gan

    Fatal error: Call to undefined function show() in C:\wamp\www\codeigniter\system\application\controllers\template.php on line 24

    help me… 😦
    pliis

    thanks. 🙂

  7. samsonasik said, on November 2, 2010 at 7:38 am

    helpernya udah ditambahin di autoload.php belum ?
    $autoload[‘helper’] = array(‘url’,’using_template’); ???
    coba cek jg naruh file helpernya udah bener apa belum 🙂

  8. fanjavaakhmad said, on November 2, 2010 at 10:22 am

    udah mas..

    yang saya tanyakan,. code controller di atas ditaruh di fungsi index() kah??

  9. samsonasik said, on November 2, 2010 at 4:09 pm

    bisa di fungsi mana aja 🙂

  10. fanjavaakhmad said, on November 3, 2010 at 4:13 am

    alhmdulillah 🙂 mantap, mas,, 🙂

    nice tuts.. 😀

    matur nuhun.. 🙂

  11. widi said, on November 9, 2010 at 8:20 am

    kalo error yang ni gmn ngatasinya gan?

    An Error Was Encountered

    Unable to load the requested file: helpers/using_template_helper.php

    sorry ni newbie..hehe 😀

  12. samsonasik said, on November 9, 2010 at 9:42 am

    coba nama file nya di ganti jadi using_template_helper.php

  13. firman_id said, on January 1, 2011 at 12:05 pm

    thanks bangatt ya tutoralnya…

  14. fajar said, on February 20, 2011 at 8:34 pm

    punten mas, kbtln sy br di ci, yg code $data[‘identitas’] itu guna’a bwt ap y mas?
    spy tampil di view gmn cr’a mas? sblm’a mksh tutorial’a, lancar n gk ad eror2’a

  15. samsonasik said, on February 20, 2011 at 11:52 pm

    untuk contoh passing data ke view aja :). kalau mau ditampilin semua, ya tinggal dilooping aja di view dengan memanggil variable $identitas, selengkapnya bisa baca user guide codeigniter di sini http://codeigniter.com/user_guide/general/views.html

  16. jhono said, on June 28, 2011 at 1:26 pm

    Thanks Banget mas Samsoasik…???Akhirnya Bisa juga templating dengan CI…!!!Jadi makin semangat belajar CI

  17. hyu44 said, on August 16, 2011 at 10:15 am

    Nubitol Need Help…!!!

    coba nama file nya di ganti jadi using_template_helper.php
    =======
    Setelah saya coba ganti using_template_helper.php, hasilnya

    An Error Was Encountered

    Unable to load the requested file: templates/samplesampleext/template/template_page_view.php

    ==============
    file template_page_view ana letakkan di
    system/application/views/template/ext/template/sample
    ===============
    Pertanyaan berikutnya

    Nah, kita sekarang buat folder di system/application/views/template/sampe (nama folder sama dengan nama template)
    …maksud pernyataan di atas untuk file apa ya?
    sample.php kan?

    Mohon pencerahannya kembali….
    terimakasih sebelumnya

  18. samsonasik said, on August 16, 2011 at 2:33 pm

    salah penempatan aja berarti, kalau file template ada di system/application/views/template/ext/template/sample , berarti codingnya :

    $ci->load->view('template/ext/template/sample/template_page_view', $data);

    sample itu nama folder 🙂

  19. TEWEDE said, on July 24, 2012 at 12:53 pm

    http://localhost/ci/system/application/views/templates/sample/css/style.css

    Itu kan direktorinya forbidden, jadi gimana tu ya?
    CSS jadi tidak bisa di load

    • samsonasik said, on July 24, 2012 at 2:02 pm

      tinggal tambahin file .htaccess di folder css nya dan tambahkan
      Options +Indexes

      • TEWEDE said, on July 24, 2012 at 10:25 pm

        Bukan, masalahnya itu karena ada .htaccess di folder application, saya make CI 2
        isinya
        Deny from all

        kalau itu dihapus jadi bisa, tapi kan riskan juga kalau direktori application bisa diakses sembarangan.
        ada solusi?

  20. TEWEDE said, on July 24, 2012 at 10:46 pm

    Mas tulis lagi donk mas trik lain untuk templating ini. Yang lebih modern.
    Yang support CI 2, dan agar bisa bikin folder template seperti model wordpress (setidaknya menyerupai)

    Kalau model wordpress berarti banyak function yang bisa dipanggil langsung dari views ya?
    Bagaimana dengan controller, dan model? apa mungkin disatukan dalam satu folder template tertentu?
    Jadi sistem bisa reuseable dan tinggal edit folder template jika ingin ganti tampilan.

    Mungkin gak tu ya?
    Saya butuh sekali untuk bisa mengganti2 template dari database.
    Tapi bingung karena struktur ci yang MVC.

  21. samsonasik said, on July 25, 2012 at 12:02 am

    pertama, mas pisahkan dulu assets dan application, misal dengan membuat folder public dan memisahkan di luar folder application.
    lalu, baca deh presentasi saya tentang two step view implementation di CI :
    http://www.slideshare.net/samsonasik/codeigniter-two-step-view-concept-implementation
    kalau sudah, silakan download contoh aplikasi menggunakan helper layout di sini :
    http://www.4shared.com/zip/O47pUfMd/ci212_layout.html
    atau bisa lihat list nya di sini untuk bisa mendowload contoh2 dan modul yang lain :
    https://samsonasik.wordpress.com/download/ , untuk CI 212 dengan implementasi layout bisa download link bertuliskan Codeigniter 2.1.2 With Layout ( Two step View implementation ) ,
    setelah terdownload, silakan akses misal :
    http://localhost/ci212_layout/public/
    semoga membantu.

  22. topidesta said, on July 1, 2016 at 11:00 am

    Terima kasih, akhirnya gak bentrok sama layout yang udah ada 🙂 mohon izin buat di tulis ulang ya, tapi pake bahasa dan kondisi dari aplikasi saya mksh


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: