CodeIgniter

CI-Blog : Source Code Basic CMS dengan CodeIgniter 3.0.3

Gaes..

Ini ceritanya nostalgia coding dengan CodeIgniter setelah cukup lama gak update ilmu mengenai fremwek php paling femes sak dunia gegara lebih sering proyekan pake fremwek lain.. uupps. 😐

Ternyata udah rilis versi 3.0.3 yah, terakhir koding pake versi 2.x :))

Singkat cerita aku bikin semacam blog engine dasar gitu selama beberapa hari ini. Beberapa kodingan sih kopas dari arsip lama, dan ternyata secara umum masih jalan mulus kodenya di versi terbaru ini.

Gak usah banyak cingcong ya gaes.. langsung aja ni list fitur basic cms yang aku bikin dengan CodeIgniter 3.0.3:

  • Auth system dengan Ion Auth (admin & members)
  • Static Page
  • Posts
  • Tags
  • Categories
  • Single Post
  • Dashboard Features : manage posts, categories, pages, users, groups, multilevel menu,
  • HMVC Concept

Kodingan selo ini terinspirasi dari tutorial yang aweseme disini gaes http://avenir.ro/create-cms-using-codeigniter-3/ dengan beberapa modifikasi dan pengembangan sesuai seleraku. Sebenarnya belum kelar jg sih fiturnya dan masih banyak bugs :)))

Ini beberapa skrinsutnya gaes :

Live Demo bisa dilihat disini ya :

http://products.gie-art.com/ci-blog

akun admin dan password => admin@admin.com  password

untu member => members@website.com 12345678

 

Sekiranya source code ini ada gunanya buat kalian, bisa langsung sedot di sini gaes:

Basic CMS CodeIngiter 3.0.3 - CI Blog (6091 downloads)

Untuk link reponya di sini ya https://github.com/gieart87/ci-blog  , smisal ada bugs ato ada saran bisa dibuat issuenya ato langsung kirim email ke sugiarto@gie-art.com.

Cara installnya manual seperti biasa gaes.. tinggal copas ke folder ke www , bikin database, import file sql, sesuaikan konfigurasi kemudian liat apa yang akan terjadi. :)) (detail install ada di Readme file ya)

Sekian, semoga bermanfaat 🙂

 

Credits :

  • CodeIgniter
  • Ion Auth
  • https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
  • DBlog Bootstrap Theme
  • AdminLTE  Dashboard Theme
  • Pexels.com
  • Line Control Editor
  • JQuery
  • Bootstrap
  • Bootstrap Datepicker
  • dan lain sebagainya.

 

TokoKita : Source Code Toko Online Sederhana dengan CodeIgniter 2.x.x

Warning: Source code tokokita versi 2.x ini tidak dikembangkan lagi, saya sedang menyusun ulang konsepnya dan akan dibuat dengan CI versi 3.x. Saat ini saya sudah membuat Basic CMS dengan CI 3 dan kemungkinan untuk tokokita ini akan di koding ulang dengan konsep Basic CMS yang telah saya buat tersebut. Terima kasih telah berkunjung di blog ini 🙂

 

Hae..

Sebelumnya aku udah share theme TokoKita yang dibuat dengan bootstrap    yang mungkin bisa utk sekedar latihan2 bagi yang belum pernah pake bootstrap.  Klo yg udah mahir bootststrap ya maap.. amburadul gitu buatanku..bahahak 😐

Nah.. kali ini aku mau share sistem nya yg dulu aku bikin pake CodeIgniter 2.x.x. Awalnya aku bikin sistem toko online ini krn ada niatan (red:wacana) menulis buku sederhana tentang pembuatan toko online dengan framework CodeIgniter. Tetapi setelah menulis bab2 pembuka.. eh ternyata kebentur project2 yg tak bisa ku tahan godaanya.. dan akhirnya niatan menulis buku berakhir jadi wacana juga 🙁 , meskipun aku udah selesai bikin sistem toko onlinenya (basic). haha.

Nah.. dari pada membusuk dan berjamur di hardisk.. aku share disini aja deh. Siapa tau diantara kalian ada yg membutuhkan, mungkin utk belajar2 CodeIgniter.. ato untuk di modifikasi agar fiturnya makin lengkap 🙂

Oke deh.. gak usah banyak cing cong yee.. link downloadnya di bawah ini:

Web Toko Online CodeIgniter 2.x (16047 downloads)

SQL databasenya sudah ada di dalamnya “tokokitadb.sql” , kemudian utk login admin:

username : admin@gie-art.com

password : admin

Demo Online TokoKita

Semoga bermanfaat 🙂

Website Sekolah CodeIgntier IX: Menampilkan Posts di halaman depan (front page)

Heii bro n sista,

Emm.. mau ngucapin selamat menjalankan ibadah puasa ramadhan dulu ah.. bagi yng menjalankan. Smoga lancar dn semua ibadah kita di terima Allah. amiin 😀

Okey.. kali ini aku akan lanjutin tutorial web sekolahnya tentang bagaimana menampilkan ‘Posts’ di halaman depan (front page).

Let’s Go !!

Sebelumnya kita telah mempunya controller ‘Pages’  utk bagian front yg tersimpan pada controllers/pages.php dan di dalamnya terdapat fungsi home(), nah kita akan memodifikasi fungsi ini agar bisa menampilkan ‘Posts’ di halaman depan. Okey, ubah controller ‘Pages’ (controller/pages.php) menjadi seperti berikut (di replace aja code seblumnya) :

<?php

class Pages extends CI_Controller {

var $template = 'template';

function __construct() {
parent::__construct();
$this->load->model('Posts_model');
}

function home() {
$data['posts'] = $this->Posts_model->findActive(5);
$data['page'] = 'pages/home';
$this->load->view($this->template, $data);
}

}

?>

Selanjutnya modifikasi juga view ‘home’ yang ada di views/pages/home.php menjadi seperti berikut:


<div><img src="<?php echo base_url(); ?>public/images/img06.jpg" alt="" width="510" height="250" /></div>
<?php if (!empty($posts)): ?>
<?php foreach ($posts as $post): ?>
<div>
<h1><a href="<?php echo site_url('posts/detail/' . $post['permalink']); ?>"><?php echo $post['title'] ?></a></h1>
<p><small><?php echo $post['created']; ?> by <a href="#"><?php echo $post['username']; ?></a></small></p>
<div>
<?php if (!empty($post['image'])): ?>
<img src="<?php echo base_url() . $post['image'] ?>" width="510" height="250"/>
<?php endif; ?>
<?php echo word_limiter($post['body'], 30); ?><br/>
<?php echo anchor('posts/detail/' . $post['permalink'], 'baca selengkapnya..'); ?>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>

Oh iya.. di view di atas dipanggil fungsi word_limiter yang ada pada helper “text” utk membatasi jumlah kata. Utk menggunakan itu kita harus mengaktifkan helpernya, bisa di panggil di autoload (config/autoload.php) dgn baris berikut:


$autoload['helper'] = array('url','form','tinymce','text');

Sampe di sini klo skrg kita akses localhost/sekolahku maka akan ditampilkan ‘Posts’ di halaman depan.

Selanjutnya adalah kita akan membuat tampilan detail dari artikel / posts tersebut kita di klik linknya. Maka pertama kita akan membuat controller Posts  dan simpen padacontrollers/posts.php kemudian ketikan kode berikut ini:


<?php

class Posts extends CI_Controller {

var $template = 'template';

function __construct() {
parent::__construct();
$this->load->model('Posts_model');
}

function detail($permalink = null) {
if ($permalink == null) {
redirect('pages/home');
}
$data['post'] = $this->Posts_model->findByPermalink($permalink);

$data['page'] = 'posts/detail';
$this->load->view($this->template, $data);
}

}

?>

Kemudian terakhir kita buat view ‘detail’ dan simpan pada views/posts/detail.php dan ketikan kode program seperti berikut:

<?php if (!empty($post)): ?>

<div>
<h1><?php echo $post['title'] ?></h1>
<p><small><?php echo $post['created']; ?></small></p>
<div>
<?php if (!empty($post['image'])): ?>
<img src="<?php echo base_url() . $post['image'] ?>" width="510" height="250"/>
<?php endif; ?>
<?php echo $post['body'] ?><br/>

</div>
</div>

<?php endif; ?>

Selesaaiiii… selamat mencoba 😀

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

Website Sekolah CodeIgniter VIII: Membuat Admin Modul Posts (with upload Image)

Hey mas bro.. and mbak sist

Aku lagi lumayan semangat nulis nih.. utk melanjutkan tutorial Membuat Website Sekolah dengan CodeIgniter.. haha. Postingan seblumya kita udah bahas tentang Modul Categories, utk kali ini aku akan menulis tentang membuat Admin Modul Posts. Modul ini terkait (berelasi) dengan modul Categories, karena setiap ‘Post’ akan masuk dalam ‘Category’ tertentu. Pada prinsipnya tetep sama menggunakan konsep CRUD, cuma ada tambahan untuk Upload Image / Foto yang nantinya akan ditampilkan dalam artikel tersebut.

Okey.. Let’s Go!!

Buat tabel ‘posts’ dengan SQL berikut (klo blum buat):

[sql]

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`image` varchar(255) NOT NULL,
`status` tinyint(4) NOT NULL,
`categories_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

[/sql]

Buat Model  “Posts_model” dan simpan pada application/models/posts_model.php , kemudian ketikan kode berikut (note: jika sudah ad model post model, kodenya di replace semua aja) :

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Posts_model extends CI_Model {

var $table = ‘posts’;
var $status = array(
0 => ‘draft’,
1 => ‘published’
);

function __construct() {
parent::__construct();
}

function findAll($limit = null, $offset = null, $q = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
if ($q != null) {
$this->db->like(‘title’, $q);
}
$this->db->limit($limit, $offset);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findActive($limit = null, $offset = null, $q = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
if ($q != null) {
$this->db->like(‘posts.title’, $q);
$this->db->or_like(‘posts.body’, $q);
}
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findByCategoryId($categories_id, $limit = null, $offset = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->where(‘posts.categories_id’, $categories_id);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findOthersInCategory($categories_id, $article_id, $limit = null, $offset = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
$this->db->where(‘posts.categories_id’, $categories_id);
$this->db->where(‘posts.id !=’, $article_id);
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findById($id) {
$this->db->select(‘posts.*’);
$this->db->where(‘id’, $id);
$query = $this->db->get($this->table, 1);

if ($query->num_rows() == 1) {
return $query->row_array();
}
}

function findByPermalink($permalink) {
$this->db->select(‘posts.*’);
$this->db->where(‘permalink’, $permalink);
$query = $this->db->get($this->table, 1);

if ($query->num_rows() == 1) {
return $query->row_array();
}
}

function countAll() {
$query = $this->db->get($this->table);
return $query->num_rows();
}

function create($params = array()) {
if (empty($params)) {
$data = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘categories_id’ => $this->input->post(‘categories_id’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’),
‘created’ => date("Y-m-d H:i:s")
);
$this->db->insert($this->table, $data);
} else {
$this->db->insert($this->table, $params);
}
}

function update($id, $params) {
if (empty($params)) {
$data = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘categories_id’ => $this->input->post(‘categories_id’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’),
‘modified’ => date("Y-m-d H:i:s")
);

$this->db->where(‘id’, $id);
$this->db->update($this->table, $data);
} else {
$this->db->where(‘id’, $id);
$this->db->update($this->table, $params);
}
}

function destroy($id) {
$this->db->where(‘id’, $id);
$this->db->delete($this->table);
}

}

?>

[/php]

Buat Controller “Posts” dan simpan pada application/controllers/posts.php :

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Posts extends CI_Controller {

var $template = ‘admin/template’;
var $imagePath = ‘public/media/posts/’;
var $status = array(
0 => ‘draft’,
1 => ‘published’
);

function __construct() {
parent::__construct();
$this->general->checkAdmin();
$this->load->model(‘Posts_model’);
$this->load->model(‘Categories_model’);
}

function index($page = null) {

$this->load->library(‘pagination’);
$config[‘uri_segment’] = 4;
$config[‘total_rows’] = $this->Posts_model->countAll();
$config[‘per_page’] = 10;
$config[‘base_url’] = base_url() . ‘admin/posts/index/’;

if ($this->input->get(‘q’)):
$q = $this->input->get(‘q’);
$data[‘posts’] = $this->Posts_model->findAll($config[‘per_page’], $this->uri->segment(4), $q);
if (empty($data[‘posts’])) {
$this->session->set_flashdata(‘error’, ‘Data tidak ditemukan’);
redirect(‘admin/posts/index’);
}
$config[‘total_rows’] = count($data[‘posts’]);
else:
$data[‘posts’] = $this->Posts_model->findAll($config[‘per_page’], $this->uri->segment(4));
endif;
$this->pagination->initialize($config);
$data[‘status’] = $this->status;
$data[‘pagination’] = $this->pagination->create_links();
$data[‘content’] = ‘admin/posts/index’;
$this->load->view($this->template, $data);
}

function add() {

$this->form_validation->set_rules(‘title’, ‘title’, ‘required|xss_clean’);
$this->form_validation->set_rules(‘body’, ‘body’, ‘required|xss_clean’);
$this->form_validation->set_rules(‘categories_id’, ‘category’, ‘required|xss_clean’);
$this->form_validation->set_rules(‘status’, ‘status’, ‘required|xss_clean’);
$this->form_validation->set_error_delimiters(”, ‘<br/>’);
if ($this->form_validation->run() == TRUE) {

$params = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘categories_id’ => $this->input->post(‘categories_id’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’),
‘created’ => date("Y-m-d H:i:s")
);
if ($_FILES[‘image’][‘error’] != 4) {
$config[‘upload_path’] = $this->imagePath;
$config[‘allowed_types’] = ‘jpg|png|jpeg|gif’;
$config[‘max_size’] = ‘200000’;
$this->load->library(‘upload’, $config);

if ($this->upload->do_upload("image")) {
$image = $this->upload->data();
$params[‘image’] = $this->imagePath . $image[‘file_name’];
}
}

$this->Posts_model->create($params);
$this->session->set_flashdata(‘success’, ‘Post created’);
redirect(‘admin/posts’);
}
$data[‘categories’] = $this->Categories_model->findList();
$data[‘status’] = $this->Posts_model->status;
$data[‘content’] = ‘admin/posts/add’;
$this->load->view($this->template, $data);
}

function edit($id = null) {

if ($id == null) {
$id = $this->input->post(‘id’);
}
$this->form_validation->set_rules(‘title’, ‘title’, ‘required|xss_clean’);
$this->form_validation->set_rules(‘body’, ‘body’, ‘required|xss_clean’);
$this->form_validation->set_rules(‘categories_id’, ‘category’, ‘required|xss_clean’);
$this->form_validation->set_rules(‘status’, ‘status’, ‘required|xss_clean’);
$this->form_validation->set_error_delimiters(”, ‘<br/>’);
if ($this->form_validation->run() == TRUE) {

$params = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘categories_id’ => $this->input->post(‘categories_id’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’),
‘created’ => date("Y-m-d H:i:s")
);
if ($_FILES[‘image’][‘error’] != 4) {
$config[‘upload_path’] = $this->imagePath;
$config[‘allowed_types’] = ‘jpg|png|jpeg|gif’;
$config[‘max_size’] = ‘200000’;
$this->load->library(‘upload’, $config);

if ($this->upload->do_upload("image")) {
$image = $this->upload->data();
$params[‘image’] = $this->imagePath . $image[‘file_name’];
}
}

$this->Posts_model->update($id, $params);
$this->session->set_flashdata(‘success’, ‘Post edited’);
redirect(‘admin/posts’);
}

$data[‘post’] = $this->Posts_model->findById($id);
$data[‘categories’] = $this->Categories_model->findList();
$data[‘status’] = $this->status;
$data[‘content’] = ‘admin/posts/edit’;
$this->load->view($this->template, $data);
}

function delete($id = null) {
if ($id == null) {
$this->session->set_flashdata(‘error’, ‘Invalid post’);
redirect(‘admin/posts’);
} else {
$post = $this->Posts_model->findById($id);
if (file_exists($post[‘image’])) {
unlink($post[‘image’]);
}
$this->Posts_model->destroy($id);
$this->session->set_flashdata(‘success’, ‘Post deleted’);
redirect(‘admin/posts’);
}
}

}

?>

[/php]

Pada controller di atas terdapat kode program untuk upload image/foto. Image ato foto tersebut akan disimpan pada folder sesuai yang didefinisikan -> var $imagePath = ‘public/media/posts/’; Sehingga kita perlu buat folder media  dalam folder public, kemudian buat folder posts di dalam folder media. Serta jangan lupa permissionnya di set 777 (chmod 777).

Next, buat view index.php dan simpan pada application/views/admin/posts/index.php :

[php]

<h3>List Posts</h3>
<?php echo anchor(‘admin/posts/add’, ‘Add’); ?><br/>
<?php if ($this->session->flashdata(‘success’)): ?>
<i><?php echo $this->session->flashdata(‘success’); ?><i/>
<?php endif; ?>
<?php if ($this->session->flashdata(‘error’)): ?>
<i><?php echo $this->session->flashdata(‘error’); ?><i/>
<?php endif; ?>
<table border="1">
<tr>
<td>No</td>
<td>Image</td>
<td>Title</td>
<td>Category</td>
<td>Status</td>
<td>User</td>
<td>Action</td>
</tr>
<?php if (!empty($posts)): ?>
<?php $no = 1; ?>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $no; ?></td>
<td><img src="<?php echo base_url().$post[‘image’]; ?>" width="100" height="100"/></td>
<td><?php echo $post[‘title’]; ?></td>
<td><?php echo $post[‘name’]; ?></td>
<td><?php echo $status[$post[‘status’]]; ?></td>
<td><?php echo $post[‘username’]; ?></td>
<td>
<a href="<?php echo site_url(‘admin/posts/edit/’ . $post[‘id’]); ?>">Edit</a> |
<a href="<?php echo site_url(‘admin/posts/delete/’ . $post[‘id’]); ?>" onclick=" return confirm(‘Are you sure?’)">Delete</a>
</td>
</tr>
<?php $no++; ?>
<?php endforeach; ?>
<?php endif; ?>

</table>

[/php]

Next, buat view add.php dan simpan pada application/views/admin/posts/add.php :

[php]

<?php
echo initialize_tinymce();
?>
<h3>Add Post</h3><br/>
<?php echo validation_errors(); ?>
<?php echo form_open_multipart(‘admin/posts/add’); ?>
Title :<br/>
<?php echo form_input(array(‘name’ => ‘title’, ‘value’ => set_value(‘title’, isset($page[‘title’]) ? $page[‘title’] : ”))); ?><br/>
Body :<br/>
<?php echo form_textarea(array(‘name’ => ‘body’, ‘value’ => set_value(‘title’, isset($page[‘body’]) ? $page[‘body’] : ”))); ?><br/>
Category:<br/>
<?php echo form_dropdown(‘categories_id’,$categories);?><br/>
Image : <br/>
<?php echo form_upload(‘image’);?><br/>
Status:<br/>
<?php echo form_dropdown(‘status’, $status, isset($page[‘status’]) ? $page[‘status’] : ”); ?><br/>
<?php echo form_submit(‘submit’, ‘Save’); ?>

<?php echo form_close(); ?>

[/php]

Next, buat view edit.php dan simpan pada application/views/admin/posts/edit.php:

[php]

<h3>Edit Page</h3><br/>
<?php echo initialize_tinymce(); ?>
<?php echo validation_errors(); ?>
<?php echo form_open_multipart(‘admin/posts/edit’); ?>

<?php echo form_hidden(‘id’, $post[‘id’]); ?>
Title :<br/>
<?php echo form_input(array(‘name’ => ‘title’, ‘value’ => set_value(‘title’, isset($post[‘title’]) ? $post[‘title’] : ”))); ?><br/>
Body :<br/>
<?php echo form_textarea(array(‘name’ => ‘body’, ‘value’ => set_value(‘title’, isset($post[‘body’]) ? $post[‘body’] : ”))); ?><br/>
Category:<br/>
<?php echo form_dropdown(‘categories_id’, $categories,$post[‘categories_id’]); ?><br/>
Current Image : <br/>
<img src="<?php echo base_url().$post[‘image’];?>" width="150" height="150"/><br/>
Image : <br/>
<?php echo form_upload(‘image’); ?><br/>
Status:<br/>
<?php echo form_dropdown(‘status’, $status, isset($post[‘status’]) ? $post[‘status’] : ”); ?><br/>
<?php echo form_submit(‘submit’, ‘Save’); ?>

<?php echo form_close(); ?>

[/php]

Okey… saatnya uji coba.. dan taraaaaaaaaaaa hasilnya sperti gambar berikut:

Modul Posts

Modul Posts

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

Eh tapi sorry ya guys.. nulis tutorialnya maen next2 aja.. habis klo mo dijelasin detailnya pegel juga.haha , ntar klo butuh penjelasan kita interaktif aja via Komentar dibawah :D, okey. Semoga bermanfaat 🙂

Website Sekolah CodeIgniter VII : Membuat Admin Modul Categories

Hei guys..

Postingan ini merupakan lanjutan dari tutorial membuat website sekolah dengan CodeIgniter. Pada postingan sebelumnya telah dibahas tentang Menambahkan Editor TinyMce . Kali ini kita akan membuat admin modul Categories. Pada prinsipnya modul ini cuma menerapkan prinsip insert,update,delete seperti biasa dan mirip dengan Admin Modul Pages yang telah kita buat sebelumnya. Sehingga tidak perlu dibahas lebih detail lagi.

Okey.. pertama buat tabel di MySQL dengan nama ‘categories’ yang memiliki field (id,name,permalink,description). Anda bisa membuat tabelnya dengan SQL berikut ini:

[sql]

CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`permalink` varchar(255) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

[/sql]

Kedua, Buat model dengan nama ‘Categories_model’ dan simpan pada application/models/categories_model.php dan ketikan kode program seperti berikut ini:

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Categories_model extends CI_Model {

var $table = ‘categories’;

function __construct() {
parent::__construct();
}

function findAll($limit =null, $offset = null) {
$this->db->select(‘*’);
$this->db->limit($limit, $offset);
$this->db->order_by(‘name’,’ASC’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findList() {

$query = $this->db->get($this->table);
$data = array();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$data[$row[‘id’]] = $row[‘name’];
}
}
return $data;
}

function findById($id) {
$this->db->select(‘*’);
$this->db->where(‘id’, $id);
$query = $this->db->get($this->table, 1);

if ($query->num_rows() == 1) {
return $query->row_array();
}
}

function findByPermalink($permalink) {
$this->db->select(‘*’);
$this->db->where(‘permalink’, $permalink);
$query = $this->db->get($this->table, 1);

if ($query->num_rows() == 1) {
return $query->row_array();
}
}

function create() {
$data = array(
‘name’ => $this->input->post(‘name’),
‘permalink’ => url_title($this->input->post(‘name’)),
‘description’ => $this->input->post(‘description’)
);

$this->db->insert($this->table, $data);
}

function update($id) {

$data = array(
‘name’ => $this->input->post(‘name’),
‘permalink’ => url_title($this->input->post(‘name’)),
‘description’ => $this->input->post(‘description’)
);

$this->db->where(‘id’, $id);
$this->db->update($this->table, $data);
}

function destroy($id) {
$this->db->where(‘id’, $id);
$this->db->delete($this->table);
}

}

?>

[/php]

Karena categories ini nantinya akan mempunya relasi dengan posts, maka kita akan buat sekalian tabel dan model utk posts. Berikut ini SQL utk membuat tabel ‘posts’:

[sql]

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`image` varchar(255) NOT NULL,
`status` tinyint(4) NOT NULL,
`categories_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

[/sql]

Kemudian buat model ‘Post_model’ dan simpan pada application/models/posts_model.php kemudian ketikan kode berikut:

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Posts_model extends CI_Model {

var $table = ‘posts’;
var $status = array(
0 => ‘draft’,
1 => ‘published’
);

function __construct() {
parent::__construct();
}

function findAll($limit = null, $offset = null, $q = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
if ($q != null) {
$this->db->like(‘title’, $q);
}
$this->db->limit($limit, $offset);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findActive($limit = null, $offset = null, $q = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
if ($q != null) {
$this->db->like(‘posts.title’, $q);
$this->db->or_like(‘posts.body’, $q);

}
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findByCategoryId($categories_id, $limit = null, $offset = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->where(‘posts.categories_id’, $categories_id);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findPreviousposts($limit = null, $offset = null, $postsIds = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
$this->db->where_not_in(‘posts.id’, $postsIds);
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findOthersInCategory($categories_id, $article_id, $limit = null, $offset = null) {
$this->db->select(‘posts.*,categories.name, users.username’);
$this->db->join(‘categories’, ‘categories.id = posts.categories_id’);
$this->db->join(‘users’, ‘users.id = posts.users_id’);
$this->db->where(‘posts.categories_id’, $categories_id);
$this->db->where(‘posts.id !=’, $article_id);
$this->db->limit($limit, $offset);
$this->db->where(‘posts.status’, 1);
$this->db->order_by(‘id’, ‘desc’);
$query = $this->db->get($this->table);

if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findById($id) {
$this->db->select(‘posts.*’);
$this->db->where(‘id’, $id);
$query = $this->db->get($this->table, 1);

if ($query->num_rows() == 1) {
return $query->row_array();
}
}

function findByPermalink($permalink) {
$this->db->select(‘posts.*’);
$this->db->where(‘permalink’, $permalink);
$query = $this->db->get($this->table, 1);

if ($query->num_rows() == 1) {
return $query->row_array();
}
}

function countAll() {
$query = $this->db->get($this->table);
return $query->num_rows();
}

function create() {
$data = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘categories_id’ => $this->input->post(‘categories_id’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’),
‘created’ => date("Y-m-d H:i:s")
);

$this->db->insert($this->table, $data);
}

function update($id) {

$data = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘categories_id’ => $this->input->post(‘categories_id’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’),
‘modified’ => date("Y-m-d H:i:s")
);

$this->db->where(‘id’, $id);
$this->db->update($this->table, $data);
}

function destroy($id) {
$this->db->where(‘id’, $id);
$this->db->delete($this->table);
}

}

?>

[/php]

Membuat controller categories (application/controlles/admin/categories.php):

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Categories extends CI_Controller {

var $template = ‘admin/template’;

function __construct() {
parent::__construct();
$this->general->checkAdmin();
$this->load->model(‘Categories_model’);
$this->load->model(‘Posts_model’);

}

function index() {
$data[‘categories’] = $this->Categories_model->findAll();
$data[‘content’] = ‘admin/categories/index’;
$this->load->view($this->template, $data);
}

function add() {
$this->form_validation->set_rules(‘name’, ‘name’, ‘required’);
$this->form_validation->set_error_delimiters(”, ‘<br/>’);

if ($this->form_validation->run() == TRUE) {
$this->Categories_model->create();
$this->session->set_flashdata(‘success’, ‘Category created’);
redirect(‘admin/categories’);
}
$data[‘content’] = ‘admin/categories/add’;
$this->load->view($this->template, $data);
}

function edit($id = null) {
if ($id == null) {
$id = $this->input->post(‘id’);
}

$this->form_validation->set_rules(‘name’, ‘name’, ‘required’);
$this->form_validation->set_error_delimiters(”, ‘<br/>’);

if ($this->form_validation->run() == TRUE) {
$this->Categories_model->update($id);
$this->session->set_flashdata(‘success’, ‘Category edited’);
redirect(‘admin/categories’);
}
$data[‘category’] = $this->Categories_model->findById($id);
$data[‘content’] = ‘admin/categories/edit’;
$this->load->view($this->template, $data);
}

function delete($id = null) {
if ($id == null) {
$this->session->set_flashdata(‘error’, ‘Invalid category’);
redirect(‘admin/categories’);
} else {
$articles = $this->Posts_model->findByCategoryId($id);
if (!empty($articles)) {
$this->session->set_flashdata(‘error’, ‘This category could not deleted cause have some articles’);
} else {
$this->Categories_model->destroy($id);
$this->session->set_flashdata(‘success’, ‘Category deleted’);
}
redirect(‘admin/categories’);
}
}

}

?>

[/php]

Membuat view index  (application/views/admin/categories/index.php):

[php]

<h3>Categories</h3>
<?php echo anchor(‘admin/categories/add’, ‘Add’); ?><br/>

<?php if ($this->session->flashdata(‘success’)): ?>

<?php echo $this->session->flashdata(‘success’); ?>
<?php endif; ?>
<?php if ($this->session->flashdata(‘error’)): ?>

<?php echo $this->session->flashdata(‘error’); ?>
<?php endif; ?>

<table cellpadding="0" cellspacing="0" border="1">
<tr>
<th>Name</th>
<th>Description</th>
<th>Action</th>
</tr>
<?php if ($categories): ?>
<?php foreach ($categories as $category): ?>
<tr>
<td><?php echo $category[‘name’]; ?></td>
<td><?php echo $category[‘description’]; ?></td>
<td>
<a href="<?php echo site_url(‘admin/categories/edit/’ . $category[‘id’]) ?>">Edit</a> |
<a href="<?php echo site_url(‘admin/categories/delete/’ . $category[‘id’]) ?>" onclick="return confirm(‘Anda yakin akan menghapus ini?’);">Hapus</a>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</table>

[/php]

Membuat view add (application/views/admin/categories/add.php):

[php]

<h3>Add Category</h3><br/>
<?php echo validation_errors(); ?>
<?php echo form_open_multipart(‘admin/categories/add’); ?>
Name : <br/>
<?php echo form_input(array(‘name’ => ‘name’, ‘value’ => set_value(‘name’))); ?><br/>
Description: <br/>
<?php echo form_textarea(array(‘name’ => ‘description’, ‘value’ => set_value(‘description’))); ?>
<br/>
<input type="submit" value="Submit"/>
<?php echo form_close(); ?>

<!–end #article–>

[/php]

Membuat view edit (application/views/admin/categories/edit.php):

[php]

<h3>Edit Category</h3><br/>
<?php echo validation_errors();?><br/>
<?php echo form_open_multipart(‘admin/categories/edit’); ?>
<?php echo form_hidden(‘id’, $category[‘id’]) ?>
Name : <br/>
<?php echo form_input(array(‘name’ => ‘name’, ‘value’ => set_value(‘name’, isset($category[‘name’]) ? $category[‘name’] : ”))); ?><br/>
Description : <br/>
<?php echo form_textarea(array(‘name’ => ‘description’, ‘value’ => set_value(‘description’, isset($category[‘description’]) ? $category[‘description’] : ”))); ?><br/>

<input type="submit" value="Submit"/>
<?php echo form_close(); ?>

[/php]

Sekarang tambahkan menu pada header yang terletak pada file application/views/admin/template.php, sehingga file template.php menjadi seperti berikut:

[php]

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Admin Panel Sekolahku</title>
<meta name="keywords" content="" />
<meta name="Premium Series" content="" />

</head>
<body>
<table>
<tr>
<td>
<h2>Admin Panel</h2>
</td>
</tr>
<tr>
<td>
<?php echo anchor(‘admin/pages’, ‘Pages’) ?> |
<?php echo anchor(‘admin/categories’, ‘Categories’) ?> |
<?php echo anchor(‘users/logout’, ‘Logout’) ?>
<hr/>
</td>
</tr>
<tr>
<td>
<?php if (!empty($content)): ?>
<?php $this->load->view($content); ?>
<?php endif; ?>
</td>
</tr>
<tr>
<td>
<hr/>
Admin Panel Sekolahku
</td>
</tr>
</table>
</body>
</html>

[/php]

Okey.. skrg saatnya melakukan uji coba. silahkan login dengan akun admin kemudian klik menu ‘Categories’ atau ketika url http://localhost/sekolahku/admin/categories/ , jika tidak ada kesalahan maka akan tampil seperti berikut:

modul admin categories

modul admin categories

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

UPDATE – CodeIgniter 3# Contoh Aplikasi Manipulasi Database (insert,update,delete)

Sepertiny membuat program sederhana untuk memanipulasi database ( insert,update,delete,select) merupakan aplikasi yng sangat penting dan fundamental.  Pada postingan sebelumnya CodeIgniter 3# Contoh Aplikasi Manipulasi Database (insert,update,delete) aku sudah membahas ini, tpi waktu itu masih CodeIgniter versi 1.7, jdi banyak pembaca yang bingung/ mendapatkan error ketika di coba pada CodeIgniter versi 2.x. Oleh karena itu pada kesempatan kali ini aku mencoba update dari postingan sebelumnya di atas. Semoga bisa bermanfaat bagi rekan2 semua.. hehe.. Langsung aja yak !

Source Code Manipulasi Database (CRUD) CodeIgniter (2088 downloads)

Note : Disini langsung ditampilkan source code masing2 file, tidak akan diberikan penjelasan ulang, karena pada prinsipnya sama dengan postingan sebelumnya.

Model MPegawai

application/models/mpegawai.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MPegawai extends CI_Model{
var $table = 'pegawai';
function _construct(){
parent::_construct();
}

//fungsi untuk mendapatkan pegawai berdasarkan id
function getPegawai($id){
$data = array();
$this->db->where('id',$id);
$this->db->limit(1);
$query = $this->db->get($this->table);

if($query->num_rows() > 0)
{
$data = $query->row_array();
}
return $data;
}

//fungsi untuk mendapatkan semua data pegawai
function getAllPegawai(){
$this->db->order_by('nama','asc');
$query = $this->db->get($this->table);
if($query->num_rows() > 0)
{
return $query->result_array();
}

}

//fungsi untuk menambah data pegawai ke alam tabel dari form isian
function addPegawai(){
$data = array(
'nip' => $this->input->post('nip'),
'nama' => $this->input->post('nama'),
'pekerjaan' => $this->input->post('pekerjaan'),
'alamat' => $this->input->post('alamat')
);
$this->db->insert($this->table,$data);
}

//fungsi untuk mengedit data pegawai berdasarkan id
function editPegawai($id){
$data = array(
'nip' => $this->input->post('nip'),
'nama' => $this->input->post('nama'),
'pekerjaan' => $this->input->post('pekerjaan'),
'alamat' => $this->input->post('alamat')
);
$this->db->where('id',$id);
$this->db->update($this->table,$data);
}

//fungsi untuk menghapus data pegawai berdasarkan id pegawai
function deletePegawai($id){
$this->db->where('id',$id);
$this->db->delete($this->table);
}
}

Controller pegawai

application/controllers/pegawai.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Pegawai extends CI_Controller{

function __construct(){
parent::__construct();
$this->load->model('MPegawai');
}

public function index(){
$data['title'] = "Data Pegawai";
$data['pegawai']=$this->MPegawai->getAllPegawai();
$this->load->view('pegawai_home',$data);
}

function add(){
$this->form_validation->set_rules('nip','NIP','required');
$this->form_validation->set_rules('nama','nama','required');
if($this->form_validation->run() == TRUE){
$this->MPegawai->addPegawai();
$this->session->set_flashdata('message','Berhasil menambah data pegawai');
redirect('pegawai','refresh');
}

$data['title'] = "Tambah Pegawai Data";
$this->load->view('pegawai_add', $data);

}

function edit($id = null){
if($id == null){
$id = $this->input->post('id');
}
$this->form_validation->set_rules('nip','NIP','required');
$this->form_validation->set_rules('nama','nama','required');
if($this->form_validation->run() == TRUE){
$this->MPegawai->editPegawai($id);
$this->session->set_flashdata('message','Data pegawai berhasil diedit');
redirect('pegawai','refresh');
}

$data['title'] = "Edit Data";
$data['pegawai'] = $this->MPegawai->getPegawai($id);

$this->load->view('pegawai_edit',$data);

}

function delete($id){
if(!empty($id)){
$this->MPegawai->deletePegawai($id);
$this->session->set_flashdata('message','Pegawai Data has been DELETE !');
redirect('pegawai/index','refresh');
}
}

}

View

application/views/pegawai_home.php

[php]

<h2><?php echo $title;?></h2>
<p><a href=”<?php echo base_url()?>index.php/pegawai/add”> Add</a></p>

<?php
if($this->session->flashdata(‘message’)){
echo “<p><i>”.$this->session->flashdata(‘message’).”</i></p>”;
}
?>
<table width=”450″ border=”1″>
<tr>
<td width=”27″>NIP</td>
<td width=”99″>Nama</td>
<td width=”101″>Pekerajaan</td>
<td width=”91″>Alamat</td>
<td width=”200″>Aksi</td>
</tr>
<?php
if(!empty($pegawai)){
foreach($pegawai as $peg){
?>
<tr>
<td><?php echo $peg[‘nip’];?></td>
<td><?php echo $peg[‘nama’];?></td>
<td><?php echo $peg[‘pekerjaan’];?></td>
<td><?php echo $peg[‘alamat’];?></td>
<td>
<a href=”<?=base_url()?>index.php/pegawai/edit/<?php echo $peg[‘id’];?>”>Edit</a> |
<a href=”<?=base_url()?>index.php/pegawai/delete/<?php echo $peg[‘id’];?>”  onclick=”return confirm(‘Anda yakin akan menghapus data?’)”>Delete</a>
</td>
</tr>
<?php
}
}
?>
<tr>
<td colspan=”4″>Total</td>
<td><?php echo count($pegawai);?></td>
</tr>
</table>
<p>&nbsp;</p>

[/php]

application/views/pegawai_add.php

[php]

<h2><?php echo $title;?></h2>

<form name=”form1″ id=”form1″ action=”<?=base_url()?>index.php/pegawai/add” method=”post”>
<?php
if($this->session->flashdata(‘message’)){
echo “<i>”.$this->session->flashdata(‘message’).”</i>”;
}

echo validation_errors();
?>
<table width=”400″ border=”1″>
<tr>
<td colspan=”2″><div align=”center”><strong>Tambah data Pegawai</strong></div></td>
</tr>
<tr>
<td>NIP</td>
<td><input name=”nip” type=”text” id=”nip” value=”<?php echo set_value(‘nip’);?>”></td>
</tr>
<tr>
<td>Name</td>
<td><input name=”nama” type=”text” id=”nama” value=”<?php echo set_value(‘nama’);?>”></td>
</tr>
<tr>
<td>Pekerajaan</td>
<td><input name=”pekerjaan” type=”text” id=”pekerjaan” value=”<?php echo set_value(‘pekerjaan’);?>”></td>
</tr>
<tr>
<td>Alamat</td>
<td><input name=”alamat” type=”text” id=”alamat” value=”<?php echo set_value(‘alamat’);?>”></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name=”Add” type=”submit” id=”add” value=”Submit”></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href=”<?php echo base_url()?>index.php/pegawai”>Home>> </a></td>
</tr>
</table>
</form>

[/php]

application/views/pegawai_edit.php

[php]

<h2><?php echo $title;?></h2>
<form id=”form1″ action=”<?=base_url()?>index.php/pegawai/edit” method=”post” name=”form1″>
<?php
if($this->session->flashdata(‘message’)){
echo “<i>”.$this->session->flashdata(‘message’).”</i>”;
}

echo validation_errors();
?>
<?php echo form_hidden(‘id’,$pegawai[‘id’]);?>
<table width=”400″ border=”1″>
<tr>
<td colspan=”2″><div align=”center”><strong>Edit Data Pegawai</strong></div></td>
</tr>
<tr>
<td>NIP</td>
<td><input name=”nip” type=”text” id=”nip” value=”<?php echo set_value(‘nip’,isset($pegawai[‘nip’])?$pegawai[‘nip’] :”);?>”></td>
</tr>
<tr>
<td>Name</td>
<td><input name=”nama” type=”text” id=”nama” value=”<?php echo set_value(‘nama’,isset($pegawai[‘nama’])?$pegawai[‘nama’] :”);?>”></td>
</tr>
<tr>
<td>Pekerajaan</td>
<td><input name=”pekerjaan” type=”text” id=”pekerjaan” value=”<?php echo set_value(‘pekerjaan’,isset($pegawai[‘pekerjaan’])?$pegawai[‘pekerjaan’] :”);?>”></td>
</tr>
<tr>
<td>Alamat</td>
<td><input name=”alamat” type=”text” id=”alamat” value=”<?php echo set_value(‘alamat’,isset($pegawai[‘alamat’])?$pegawai[‘alamat’] :”);?>”></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name=”Add” type=”submit” id=”add” value=”Submit”></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><a href=”<?php echo base_url()?>index.php/pegawai”>Home>> </a></td>
</tr>
</table>

</form>

[/php]


Source Code Manipulasi Database (CRUD) CodeIgniter (2088 downloads)

Website Sekolah CodeIgniter V : Membuat Library Pengecekan Hak Akses User

Warning: Source code website sekolah versi 2.x ini tidak dikembangkan lagi, saya sedang menyusun ulang konsepnya dan akan dibuat dengan CI versi 3.x. Saat ini saya sudah membuat Basic CMS dengan CI 3 dan kemungkinan untuk website sekolah ini akan di koding ulang dengan konsep Basic CMS yang telah saya buat tersebut. Terima kasih telah berkunjung di blog ini 🙂

 

Heii..

Pada postingan sebelumnya kita telah membahas tentang membuat Admin Modul Pages untuk kemudahan Admin dalam membuat konten website. Tetapi fitur2 modul tersebut masih bisa di akses dengan mengetikan url nya langsung, misal => http://localhost/sekolahku/index.php/admin/pages   tanpa melakukan proses login terlebih dahulu. Nah.. pada kesempatan kali ini dibuat lah Library untuk pengecekan hak akses user untuk mencegah hal2 seperti itu. Pengecekan hak akses ini meliputi tipe2 user yng telah didefinisikan sebelumnya, yaitu Admin, Teachers, Students,  Alumni. Berikut ini adalah langkah-langkah pembuatan Library Hak Akses User:

1. Buat file General.php pada folder application/libraries

2. Ketik kode program berikut pada file General.php tersebut:

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
* Description of General
*
* @author gieart
*/
class General {

//put your code here
var $ci;

function __construct() {
$this->ci = &get_instance();
}

function isLogin() {
if ($this->ci->session->userdata(‘is_login’) == TRUE) {
return TRUE;
} else {
return FALSE;
}
}

function isAdmin() {
if ($this->ci->session->userdata(‘type’) == ‘admin’) {
return TRUE;
} else {
return FALSE;
}
}

function isTeacher() {
if ($this->ci->session->userdata(‘type’) == ‘teachers’) {
return TRUE;
} else {
return FALSE;
}
}

function isStudent() {
if ($this->ci->session->userdata(‘type’) == ‘students’) {
return TRUE;
} else {
return FALSE;
}
}

function isAlumni() {
if ($this->ci->session->userdata(‘type’) == ‘alumni’) {
return TRUE;
} else {
return FALSE;
}
}

function checkAdmin() {
if (($this->isLogin() && $this->isAdmin()) != TRUE) {
$this->ci->session->set_flashdata(‘error’, ‘Maaf, Anda tidak memiliki hak akses sebagai admin’);
redirect(‘users/login’);
}
}

function checkTeacher() {
if (($this->isLogin() && $this->isTeacher()) != TRUE) {
$this->ci->session->set_flashdata(‘error’, ‘Maaf, Anda tidak memiliki hak akses sebagai guru’);
redirect(‘users/login’);
}
}

function checkStudent() {
if (($this->isLogin() && $this->isStudent()) != TRUE) {
$this->ci->session->set_flashdata(‘error’, ‘Maaf, Anda tidak memiliki hak akses sebagai siswa’);
redirect(‘users/login’);
}
}

function checkAlumni() {
if (($this->isLogin() && $this->isAlumni()) != TRUE) {
$this->ci->session->set_flashdata(‘error’, ‘Maaf, Anda tidak memiliki hak akses sebagai alumni’);
redirect(‘users/login’);
}
}

}

?>

[/php]

3. Buka file autoload.php pada folder application/config kemudian pada bagian pemanggilan libraries tambahkan pemanggilan library General  yang kita buat saat ini. Sehingga menjadi seperti ini :

[php]

$autoload[‘libraries’] = array(‘database’,’session’,’form_validation’,’General’);

[/php]

4. Lakukan pemanggilan library pada tempat2 yang dibutuhkan. Misal untuk memproteksi Admin Modul Pages, maka kita tambahkan pada constructor pada  file application/controllers/admin/pages , sehingga pada fungsi constructor menjadi seperti berikut:

[php]

function __construct() {
parent::__construct();

$this->general->checkAdmin(); // Pengecekan Hak Akses Admin, jika bukan Admin maka akan diredirect ke form Login

$this->load->model(‘Pages_model’);
}

[/php]

5. Selesaii.. :), coba lakukan pengecekan dengan mengakses http://localhost/sekolahku/index.php/admin/pages  tanpa melakukan proses login. Jika Library ini berjalan dengan baik maka saat pengaksesan tersebut akan diredirect ke form login ada peringatan yng menyatakan bahwa anda tidak memiliki hak akses.

Terima kasih… 🙂

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

username : admin

password : admin

Website Sekolah CodeIgniter IV : Membuat Admin Modul Pages (Halaman)

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

username : admin

password : admin

Haloo temen2 semua.

Kali ini aku akan melanjutkan tutorialku membuat website sekolah dengan codeIgniter yaitu membuat Admin Modul Pages. Modul Pages ini digunakan utk menampilkan halaman2 statis sperti profil, sejarah singkat, visi misi, dan sebagainya. Tabel yng di gunakan utuk modul Pages ini adalah pages sesuai dengan rancangan database yng telah ada pada postingan sebelumnya.  Di dalam modul Pages ini nantinya seorang admin dapat menambah, mengedit, melihat, dan menghapus halaman (pages)  yang ada  di website. Berikut ini step2 pembuatan Admin Modul Pages.

1. Membuat Model ‘pages_model’

Model ‘pages_model’ ini merupakan representasi dari tabel ‘pages’ yang ada di MySQL, yang mana di dalam model ini terdapat perintah-perintah untuk memanipulasi tabel ‘pages’ tersebut. Buatlah file ‘pages_model.php‘ dan simpan pada folder application/models/. Isi dari pages_model adalah sebagai berikut:

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Pages_model extends CI_Model {

var $table = ‘pages’;

function __construct() {
parent::__construct();
}

function find($limit = null, $offset = null) {
$this->db->select(‘pages.*,users.username’);
$this->db->join(‘users’, ‘pages.users_id=users.id’);
$this->db->order_by(‘id’, ‘DESC’);
$query = $this->db->get($this->table);
if ($query->num_rows() > 0) {
return $query->result_array();
}
}

function findById($id) {
$this->db->where(‘id’, $id);
$query = $this->db->get($this->table, 1);
return $query->row_array();
}

function create() {
$data = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’)
);
$this->db->insert($this->table, $data);
}

function update($id) {
$data = array(
‘title’ => $this->input->post(‘title’),
‘permalink’ => url_title($this->input->post(‘title’)),
‘body’ => $this->input->post(‘body’),
‘status’ => $this->input->post(‘status’),
‘users_id’ => $this->session->userdata(‘id’)
);
$this->db->where(‘id’, $id);
$this->db->update($this->table, $data);
}

function delete($id) {
$this->db->where(‘id’, $id);
$this->db->delete($this->table);
}

}

?>

[/php]

2. Membuat Controller ‘pages’ untuk admin

Langkah selanjutnya adalah membuat controllernya. Pertama buatlah folder dengan nama ‘admin’ di dalam folder ‘controllers’. Ini sekedar untuk mengelompokkan saja, agar controller untuk bagian admin di kelompokkan menjadi satu. Setelah itu buat file ‘pages.php’ di dalam folder ‘application/controllers/admin’ dan ketikkan kode-kode program seperti berikut ini:

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Pages extends CI_Controller {

var $template = ‘admin/template’;
var $status = array(
0 => ‘draft’,
1 => ‘published’
);

function __construct() {
parent::__construct();
$this->load->model(‘Pages_model’);
}

function index() {
$data[‘pages’] = $this->Pages_model->find();
$data[‘content’] = ‘admin/pages/index’;
$data[‘status’] = $this->status;
$this->load->view($this->template, $data);
}

function add() {
$this->form_validation->set_rules(‘title’, ‘title’, ‘required’);
$this->form_validation->set_rules(‘body’, ‘body’, ‘required’);
$this->form_validation->set_error_delimiters(”, ‘<br/>’);
if ($this->form_validation->run() == TRUE) {
$this->Pages_model->create();
$this->session->set_flashdata(‘success’, ‘Add success’);
redirect(‘admin/pages/index’);
}
$data[‘status’] = $this->status;
$data[‘content’] = ‘admin/pages/add’;
$this->load->view($this->template, $data);
}

function edit($id = null) {
if ($id == null) {
$id = $this->input->post(‘id’);
}
$this->form_validation->set_rules(‘title’, ‘title’, ‘required’);
$this->form_validation->set_rules(‘body’, ‘body’, ‘required’);
$this->form_validation->set_error_delimiters(”, ‘<br/>’);
if ($this->form_validation->run() == TRUE) {
$this->Pages_model->update($id);
$this->session->set_flashdata(‘success’, ‘Edit success’);
redirect(‘admin/pages/index’);
}
$data[‘page’] = $this->Pages_model->findById($id);

$data[‘status’] = $this->status;
$data[‘content’] = ‘admin/pages/edit’;
$this->load->view($this->template, $data);
}

function delete($id = null) {
if ($id == null) {
$this->session->set_flashdata(‘error’, ‘Error delete’);
} else {
$this->Pages_model->delete($id);
$this->session->set_flashdata(‘success’, ‘Delete success’);
}
redirect(‘admin/pages/index’);
}

}

?>
[/php]

3. Membuat Template / Layout Admin

Selanjutkan kita menuju ke bagian View / Tampilan. Pertama buat folder ‘admin’ di dalam folder ‘application/views’. Kemudian buat file ‘template.php’ di dalam folder ‘application/views/admin’.  Sehingga struktur folder untuk view menjadi seperti ini:

struktur folder view

struktur folder view

Template ini merupakan layout yng digunakan utk tampilan admin. Pada kesempatan kali ini tampilannya sangat terbatas, sehingga temen2 semua nantinya bisa memodifikasi sendiri utk tampilan yng lebih baik. Berikut ini adalah isi dari file ‘template.php’ :

[php]

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Admin Panel Sekolahku</title>
<meta name="keywords" content="" />
<meta name="Premium Series" content="" />

</head>
<body>
<table>
<tr>
<td>
<h2>Admin Panel</h2>
</td>
</tr>
<tr>
<td>
<?php echo anchor(‘admin/pages’, ‘Pages’) ?> |
<hr/>
</td>
</tr>
<tr>
<td>
<?php if (!empty($content)): ?>
<?php $this->load->view($content); ?>
<?php endif; ?>
</td>
</tr>
<tr>
<td>
<hr/>
Admin Panel Sekolahku
</td>
</tr>
</table>
</body>
</html>

[/php]

4. Membuat View  untuk Admin Modul Pages

Setelah template admin telah dibuat.. maka skrg adalah membuat view dari admin Modul Pages. View untuk modul ini terdiri dari 3 file yaitu ‘index.php‘, ‘add.php’, dan ‘edit.php’. Buatlah ketiga file tersebut dan simpan di folder application/views/admin/pages/.

Berikut ini adalah kode-kode program dari masing-masing file tersebut:

index.php’

[php]

<h3>List Pages</h3>
<?php echo anchor(‘admin/pages/add’, ‘Add’); ?><br/>
<?php if ($this->session->flashdata(‘success’)): ?>
<i><?php echo $this->session->flashdata(‘success’); ?><i/>
<?php endif; ?>
<?php if ($this->session->flashdata(‘error’)): ?>
<i><?php echo $this->session->flashdata(‘error’); ?><i/>
<?php endif; ?>
<table border="1">
<tr>
<td>No</td>
<td>Title</td>
<td>Status</td>
<td>User</td>
<td>Action</td>
</tr>
<?php if (!empty($pages)): ?>
<?php $no = 1; ?>
<?php foreach ($pages as $page): ?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $page[‘title’]; ?></td>
<td><?php echo $status[$page[‘status’]]; ?></td>
<td><?php echo $page[‘username’]; ?></td>
<td>
<a href="<?php echo site_url(‘admin/pages/edit/’ . $page[‘id’]); ?>">Edit</a> |
<a href="<?php echo site_url(‘admin/pages/delete/’ . $page[‘id’]); ?>" onclick=" return confirm(‘Are you sure?’)">Delete</a>
</td>
</tr>
<?php $no++; ?>
<?php endforeach; ?>
<?php endif; ?>

</table>

[/php]

‘add.php’

[php]

<h3>Add Page</h3><br/>
<?php echo validation_errors(); ?>
<?php echo form_open(‘admin/pages/add’); ?>
Title :<br/>
<?php echo form_input(array(‘name’ => ‘title’, ‘value’ => set_value(‘title’, isset($page[‘title’]) ? $page[‘title’] : ”))); ?><br/>
Body :<br/>
<?php echo form_textarea(array(‘name’ => ‘body’, ‘value’ => set_value(‘title’, isset($page[‘body’]) ? $page[‘body’] : ”))); ?><br/>
Status:<br/>
<?php echo form_dropdown(‘status’, $status, isset($page[‘status’]) ? $page[‘status’] : ”); ?><br/>
<?php echo form_submit(‘submit’, ‘Save’); ?>

<?php echo form_close(); ?>

[/php]

‘edit.php’

[php]

<h3>Edit Page</h3><br/>
<?php echo validation_errors(); ?>
<?php echo form_open(‘admin/pages/edit’); ?>

<?php echo form_hidden(‘id’, $page[‘id’]); ?>
Title :<br/>
<?php echo form_input(array(‘name’ => ‘title’, ‘value’ => set_value(‘title’, isset($page[‘title’]) ? $page[‘title’] : ”))); ?><br/>
Body :<br/>
<?php echo form_textarea(array(‘name’ => ‘body’, ‘value’ => set_value(‘title’, isset($page[‘body’]) ? $page[‘body’] : ”))); ?><br/>
Status:<br/>
<?php echo form_dropdown(‘status’, $status, isset($page[‘status’]) ? $page[‘status’] : ”); ?><br/>
<?php echo form_submit(‘submit’, ‘Save’); ?>

<?php echo form_close(); ?>

[/php]

5. Demo Admin Modul Pages

Tibalah saat nya kita untuk melihat / mencoba dari pembuatan admin Modul Pages ini. Berikut ini adalah screenshoot dari admin Modul Pages.

Tampilan List Pages /Halaman

Modul Pages List

Modul Pages List

Tampilan Form Input Pages

Input Pages

Input Pages

DOWNLOAD FULL SOURCE CODE | ONLINE DEMO

Baik.. sampai disini utk postingan membuat modul Pages pada kesempatan kali ini. Sampe jumpa di postingan2 berikutnya. 🙂

Tutorial CodeIgniter : Upload File ke Amazon S3

Beberapa hari ini aku sedang ngerjain project yng menggunakan service  Amazon S3. Seperti kita tau Amazon S3 (Simple Storage Service) adalah layanan penyimpanan online yang diberikan oleh Amazon kepada public yang dapat digunakan dengan memanfaatkan beberapa teknologi web service sperti REST, SOAP, Bit  Torent. Lebih lengkapnya baca di http://en.wikipedia.org/wiki/Amazon_S3 yak!! 🙂

Okey.. tuk kesempatan kali ini aku akan tulis langkah-langkah upload file ke Amazon S3 di CodeIgnter 2.0.2. Library dan referensi yang aku gunakan bisa dibuka di http://getsparks.org/packages/amazon-s3/versions/HEAD/show. Berikut step2 singkatnya:

1. Buat folder project baru (misal: amazon) , dan install codeigniter dalam folder project itu. Instalasi bisa di baca di tulisan terdahulu => http://gie-art.com/2009/07/codeigniter-1-instalasi-konfigurasi/

2. Download Libary Amazone S3 di http://github.com/phused/CodeIgniter-S3. Ada 2 file utama yaitu s3.php yang merupakan file konfigurasi. Sehingga file ini kita kopikan ke dalam application/config. File yng kedua yaitu S3.php. Ini adalah librarynya, dan ini kita kopikan ke dalam application/libraries.

3. Setting Access Key dan Secret Key pada config/s3.php

Ganti sesuai dengan Access Key  dan Secret Key yang Anda miliki pada baris program berikut:

[php]

$config[‘access_key’] = ‘Your Access Key’;
$config[‘secret_key’] = ‘Your Secret Key’;

[/php]

3. Buat Controller untuk proses upload dan View untuk form uploadnya. Berikut ini adalah controller dan view yang aku buat.

Controller amazon.php

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Amazon extends CI_Controller {

var $bucket = ‘mybucket’;

function __construct() {
parent::__construct();
$this->load->library(‘s3’);
}

function upload_file() {

if (!empty($_FILES) && $_FILES[‘file’][‘error’] != 4) {

$fileName = $_FILES[‘file’][‘name’];
$tmpName = $_FILES[‘file’][‘tmp_name’];

if ($this->s3->putObjectFile($tmpName, $this->bucket, $fileName, S3::ACL_PUBLIC_READ)) {
$this->session->set_flashdata(‘success’, ‘Berhasil upload file’);
redirect(‘amazon/lihat_file’);
} else {
$this->session->set_flashdata(‘error’, ‘Gagal upload file’);
redirect(‘amazon/upload_file’);
}
}

$this->load->view(‘upload_file’);
}

function lihat_file() {

$data[‘files’] = $this->s3->getBucket($this->bucket);
$this->load->view(‘lihat_file’, $data);
}

}

?>
[/php]

 

View upload_file.php

[php]

<h1>Upload file ke Amazon S3</h1><br/>
<?php echo form_open_multipart(‘amazon/upload_file’) ?>
File :<?php echo form_upload(‘file’); ?> <?php echo form_submit(‘Submit’, ‘Upload’); ?>
<?php echo form_close(); ?>

[/php]

 

View lihat_file.php

[php]

<h1>Daftar File</h1>
<table border=”1″>
<thead>

<th>File Name</th>
<th>URL</th>
</thead>
<tbody>
<?php if ($files): ?>
<?php foreach ($files as $file): ?>
<tr>
<td><?php echo $file[‘name’] ?></td>
<td><?php echo ‘http://mybucket.s3.amazonaws.com/’, $file[‘name’] ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>

</tbody>

</table>

[/php]

 

Okey.. #sekian dulu ak share ttg Amazon S3 di CodeIgniter. Semoga bermanfaat. 🙂

Website Sekolah CodeIgniter III: Memasang Template (Free CSS Theme)

Warning: Source code website sekolah versi 2.x ini tidak dikembangkan lagi, saya sedang menyusun ulang konsepnya dan akan dibuat dengan CI versi 3.x. Saat ini saya sudah membuat Basic CMS dengan CI 3 dan kemungkinan untuk website sekolah ini akan di koding ulang dengan konsep Basic CMS yang telah saya buat tersebut. Terima kasih telah berkunjung di blog ini 🙂

Hey semua…

Melanjutkan postingan aku tentang membuat website sekolah dengan CodeIgniter. Kali ini aku akan menguraikan langkah2 dalam memasang template HTML+CSS. Mungkin ada cara2 yng lebih canggih dalam sistem templating ini (sperti : pake SMARTY, dll), tapi di sini aku hanya akan menuliskan membuat template sistem yang sngat sederhana aja. (karena itu yng aku bisa…hahaha). Oke langsung aja ke langkah2 konkritnya 🙂

DOWNLOAD FULL SOURCE CODE  | ONLINE DEMO

1.  Download Free CSS+HTML template yang kamu suka

Pada tutorial ini aku pake PREMIUM SERIES yang bisa anda download di sini. Perlu kalian tau, aku punya hobi unik, yaitu mengoleksi free css template semacam ini…hehe, maklum gak bisa desain. Programmer Tulen gitu loh…:D

2. Siapkan Folder2 untuk menyimpan file2 pendukung yang ada dalam tempate itu

Secara umum file2 pendukung  ada dalam template terdiri dari : images, css, javascript. Jadi kita akan membuat folder utk menampung file2 itu. Oh iya, utk COdeIgniter versi 2.0 ke atas,  secara default kita hanya di ijin kan meletakkan file2 itu di root folder. Jadi kita akan membuat folder2 nya jg di root folder. Folder yng di buat yang pertama kita diberi nama public, kemudian di dalam folder tersebut, kita buat 3 buah folder baru yaitu css, images, js. Sehingga struturnya menjadi seperti berikut:

Struktur Folder File Asset

Struktur Folder File Asset

kemudian dari template yang telah di download tadi, masukkan file2 nya sesuai dengan folder masing2. Klo file css ya ke folder css, image ya ke folder images. dst.

3. Memecah Template (file index.html) ke dalam beberapa bagian

Pada template yang di download tadi ada file yang bernama index.html. Itu adalah file html yg akan kita pake untuk template di halaman2 web kita. Agar kita lebih efisien, dan lebih rapi koding nya, Maka file index.html tersebut akan kita pecah2 ke dalam beberapa bagian yaitu : template.php, header.php, footer.php, left.php, dan right.php. Semua file ini kita simpan di folder VIEWS. Adapun isi dari masing file dalah sebagai berikut:

template.php

[php]

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<!–
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License

Name : Premium Series
Description: A three-column, fixed-width blog design.
Version : 1.0
Released : 20090303

–>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
<title>Premium Series by Free CSS Templates</title>
<meta name=”keywords” content=”” />
<meta name=”Premium Series” content=”” />
<link href=”<?php echo base_url() ?>public/css/default.css” rel=”stylesheet” type=”text/css” media=”screen” />
</head>
<body>
<!– start header –>
<?php $this->load->view(‘header’) ?>
<!– end header –>
<div id=”wrapper”>
<!– start page –>

<div id=”page”>
<?php $this->load->view(‘left’) ?>
<!– start content –>
<div id=”content”>
<?php if (!empty($page)): ?>
<?php $this->load->view($page); ?>
<?php else: ?>
<?php $this->load->view(‘error_page’); ?>
<?php endif; ?>
</div>
<!– end content –>
<!– start sidebars –>
<?php $this->load->view(‘right’) ?>
<!– end sidebars –>
<div style=”clear: both;”>&nbsp;</div>
</div>
<!– end page –>
</div>
<?php $this->load->view(‘footer’) ?>
</body>
</html>

[/php]

Pada bagian ini yang perlu di perhatikan adalah pemanggilan file css, harus benar path/  alamatnya. Contoh disini : <?php ?>/public/css/default.css.  Selain itu pada template.php ada beberapa baris program yang akan membuat content dari template (bagian tengah) akan dinamis. Yaitu pada bagian if(!empty($page)): dstt…

header.php

[php]
<div id=”header”>
<div id=”logo”>
<h1><a href=”#”><span>Premium</span>Series</a></h1>
<p>Designed By Free CSS Templates</p>
</div>
<div id=”menu”>
<ul id=”main”>
<li class=”current_page_item”><a href=”<?php echo site_url(‘/’)?>”>Home</a></li>
<li><a href=”<?php echo site_url(‘pages/read/profil’)?>”>Profil</a></li>
<li><a href=”<?php echo site_url(‘pages/read/sejarah-singkat’)?>”>Sejarah Singkat</a></li>
<li><a href=”<?php echo site_url(‘pages/read/visi-misi’)?>”>Visi Misi</a></li>
<li><a href=”<?php echo site_url(‘pages/contact’)?>”>Kontak</a></li>
<li><a href=”<?php echo site_url(‘users/login’)?>”>Login</a></li>
</ul>

</div>

</div>
[/php]

footer.php

[php]

<div id=”footer”>
<p class=”copyright”>&copy;&nbsp;&nbsp;2009 All Rights Reserved &nbsp;&bull;&nbsp; Design by <a href=”http://www.freecsstemplates.org/”>Free CSS Templates</a>.</p>
<p class=”link”><a href=”#”>Privacy Policy</a>&nbsp;&#8226;&nbsp;<a href=”#”>Terms of Use</a></p>
</div>

[/php]

left.php

[php]
<div id=”sidebar1″ class=”sidebar”>
<ul>
<li>
<h2>Recent Posts</h2>
<ul>
<li><a href=”#”>Aliquam libero</a></li>
<li><a href=”#”>Consectetuer adipiscing elit</a></li>
<li><a href=”#”>Metus aliquam pellentesque</a></li>
<li><a href=”#”>Suspendisse iaculis mauris</a></li>
<li><a href=”#”>Proin gravida orci porttitor</a></li>
<li><a href=”#”>Aliquam libero</a></li>
<li><a href=”#”>Consectetuer adipiscing elit</a></li>
<li><a href=”#”>Metus aliquam pellentesque</a></li>
<li><a href=”#”>Suspendisse iaculis mauris</a></li>
<li><a href=”#”>Proin gravida orci porttitor</a></li>
</ul>
</li>
<li>
<h2>Categories</h2>
<ul>
<li><a href=”#”>Aliquam libero</a></li>
<li><a href=”#”>Consectetuer adipiscing elit</a></li>
<li><a href=”#”>Metus aliquam pellentesque</a></li>
<li><a href=”#”>Suspendisse iaculis mauris</a></li>
<li><a href=”#”>Urnanet non molestie semper</a></li>
<li><a href=”#”>Proin gravida orci porttitor</a></li>
</ul>
</li>
<li>
<h2>Archives</h2>
<ul>
<li><a href=”#”>September</a> (23)</li>
<li><a href=”#”>August</a> (31)</li>
<li><a href=”#”>July</a> (31)</li>
<li><a href=”#”>June</a> (30)</li>
<li><a href=”#”>May</a> (31)</li>
</ul>
</li>
</ul>
</div>

[/php]

right.php

[php]

<div id=”sidebar2″ class=”sidebar”>
<ul>
<li>
<form id=”searchform” method=”get” action=”#”>
<div>
<h2>Site Search</h2>
<input type=”text” name=”s” id=”s” size=”15″ value=”” />
</div>
</form>
</li>

</ul>
</div>
[/php]

4. Membuat Controller Utama (default controller)

Sebenarnya langkah ini bisa di skip aja, karena di master ci sudah ada defaut controller yng bernama welcome. Tetapi di sini aku akan membuat controler baru yng sama beri nama ‘pages‘ dan di dalamnya ada fungsi ‘home‘. Ini akan aku jadikan default controller di website sekolah ini. Yaa.. sebenarnya biar lebih rapi aja sih… jadi kalian boleh skip langkah ini. Oke controller pages yang aku buat isi kode programnya seperti ini:

[php]

<?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

class Pages extends CI_Controller {

var $template = ‘template’;

function __construct() {
parent::__construct();
}

function home() {
$data[‘page’] = ‘pages/home’;
$this->load->view($this->template, $data);
}

}

?>

[/php]

5. Membuat View dari fungsi ‘home’  dalam controller ‘pages’ tsb.

Sebenarnya isi dari view home ini adalah bagian tengah dari index.html template yang kita download tadi.  View ini kita beri nama home.php dan kita simpan pada folder pages (buat folder) dalam folder views. Isinya adalah sebagai berikut:

[php]

<div class=”flower”><img src=”images/img06.jpg” alt=”” width=”510″ height=”250″ /></div>
<div class=”post”>
<h1 class=”title”><a href=”#”>Selamat Datang di Website Sekolahku!</a></h1>
<p class=”byline”><small>Posted on October 1st, 2009 by <a href=”#”>Free CSS Templates</a></small></p>
<div class=”entry”>
<p><strong>Premium Series</strong> is a free, fully standards-compliant CSS template designed by <a href=”http://www.freecsstemplates.org/”>Free CSS Templates</a>. This free template is released under a <a href=”http://creativecommons.org/licenses/by/2.5/”>Creative Commons Attributions 2.5</a> license, so you’re pretty much free to do whatever you want with it (even use it commercially) provided you keep the links in the footer intact. Have fun with it :)</p>
<p class=”links”><a href=”#” class=”more”>&laquo;&laquo;&nbsp;&nbsp;Read More&nbsp;&nbsp;&raquo;&raquo;</a></p>
</div>
</div>

[/php]

6. Membuat View Error Page

Ini adalah view yang akan ditampilkan ketika halaman/ layout yang di akses tidak ada. Isinya adalah sebagai berikut:

[php]

<div class=”post”>
<h1 class=”title”>Mohon Maaf, Halaman tidak ditemukan</h1>
</div>

[/php]

Jika langkah2 di atas dapat dilalui dengan lancar, maka hasilnya adalah seperti berikut:

Homepage Website Sekolahku

Homepage Website Sekolahku

Ok..  Smp  disini tutorial memasang template kali ini … #Sekian

DOWNLOAD FULL SOURCE CODE  | ONLINE DEMO

<?php/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/class Pages extends CI_Controller {function __construct() {
parent::__construct();
}

function home() {
$data[‘page’] = ‘pages/home’;
$this->load->view(‘template’, $data);
}

}

?>