trading head

Cara Membuat CMS Sendiri Lengkap

oleh
oleh
Cara Membuat CMS Sendiri

Sebelum kita memasukki Cara Membuat CMS Sendiri menggunakan PHP. Mimin akan membahas sedikit mengenai CMS.

CMS Merupakan singkatan dari Content Manajement System. Sebuah aplikasi yang digunakan untuk management website, hampir semua website menggunakan CMS nya masing – masing kecuali website status. Sebuah CMS umumnnya dapat melakukan update artikel, update halaman, mengatur menu dan tampilan website.

CMS website yang terkenal saat ini mungkin kalian tahu yaitu CMS WordPress. Diluarr sana mungkin telah banyak sekali CMS yang sifatnya gratis bukan hanya CMS WordPress, namun ada kalanya sebuah fitur yang kita inginkan tidak tersedia pada CMS tersebut. Tidak ada salahnya membuat CMS Sendiri dengan membuat fitur sesuai yang kita inginkan, sehingga menjadikan website yang kita buat menjadi semakin baik dan kompleks.

Keuntungan Membuat CMS Sendiri

Dibandingkan dengan CMS yang beredar, kita memiliki keuntungan tersendiri jika membuat CMS kita sendiri, diantaranya.

  1. Kita dapat membuat fitur sesuai dengan kebutuhan
  2. memiliki cirikhas tersendiri, setiap karya dari prograer cenderung terbilang unik dari programer lainnya, sehingga jika kita membuat CMS Sendiri, kita memiliki keunikan tersendiri dari CMS yang kita buat.
  3. Terlihat menjadi lebih professional
  4. Mengasah dan Upskill dalam bidang pemprograman WEB.
  5. Dapat menjadi portofolio.

Bahasa Pemrograman Yang Digunakan

bahasa pemrograman yang digunakan untuk membuat CMS ini yaitu bahsa PHP sebagai bahasa Server Side kemudian akan kita kombinasikan dengan HTML, CSS dan JS agar membuat tampilan baik itu CMS atau websitenya agar dapat berinteraksi dengan pengguna. Database yang digunakan yaitu MySql, oleh karena itu kita juga memerlukan bahasa SQL agar dapat berinteraksi kepada databasenya.

Aplikasi yang dibutuhkan

aplikasi yang dibutuhkan yaitu kode text editor, kalian dapat menggunakan sublim text, visual code, notepad++ atau aplikasi serupa lainnya yang dapat kalian gunakan sebagai kode editor.

sealin kode editor, kalian pasti juga perlu aplikasi paket web server, pengguna windows kalian dapat menggunakan XAMPP dan jika kalian pengguna Linux kalian dapat melakukan instalasi paket server web seperti apache, mysql, phpmyadmin dan lainnya.

aplikasi berikutnya adlah web browser. Aplikasi yang bisa kalian gunakan sebagai prambanan untuk berselancar di dunia maya, kalian dapat menggunakan aplikasi seperti google crome, mozilla firefox atau aplikasi sejenis lainnya.

Fitur CMS yang akan dibuat

Hal penting dari pembuatan CMS ini kita harus menargetkan dan merumuskan fitur apa saja yang akan kita buat pada CMS. CMS yang baik haruslah memiliki fitur yang sering sekali dibutuhkan, bukan hanya itu, haruslah mampu membawa kemudahan didalam fiturnya.

fitur yang akan kita buat dalam CMS ini yaitu

  1. Manajement artikel dan halamn
  2. Manajement tag dan kategori
  3. Manajement Komentar
  4. Manajement Modul
  5. Manajement Menu dan Widget
  6. Manajement Template/Tema
  7. Manajement Pengguna
  8. Backup dan restore
  9. Pengaturan Website
  10. Penyesuaian SEO

Struktur Tabel

dalam pebuatan CMS ini kita memiliki beberapa tabel untuk menyimpan beberapa data, seperti kategori, tag, artikel dan lainnya.

pada kasus kali ini, mimin membuat database dengan nama rccms, untuk struktur tabel ERD dari database yang akan dibuat seperti gambar berikut ini

pembuatan databse dari ERD di atas seperti berikut.

rc_kategori

rc_komentar

rc_menu

rc_modul

rc_post

rc_setting

rc_tag

rc_template

rc_user

rc_widget

Struktur Folder

pebuatan CMS ini memiliki beberapa struktur folder yang dimana akan dibagi antara adamin/author dan para pengunjung website.

struktur folder seperti berikut

isi di dalam folder admin

isi di dalam folder media

pada pembuatan CMS ini mimin menggunakan beberapa plugin yang ada pada folder plugin

agar dapat mengikuti tutorial ini kalian bisa mendapatkan plugin tersebut pada link google drive berikut

plugin – GD

Pembuatan kode program

setelah kita menentukan struktur tabel dan membuatnya pada database mysql, langkah berikutnya kita masuk kedalam tahap pengkodeaan atau pembuatan skrip PHP untuk membangun CMS yang akan kita buat.

Library

tahap pertama kita akan membuat komponen skrip library, di dalam library ini mengandung skrip untuk mendukung CMS kita nantinya

kita akan membuat sebuah sript PHP yang nantika akan selalu kita butuhkan, yang berisikan function – function yang siap kita pakai disepanjang pengkodean.

file pendukung ini akan kita masukan pada folder library. Beberapa file pendukung ini yaitu config.php, function_antiinjector.php, function_date.php, function_form.php, function_menu.php, function_remove.php, function_seo.php, funtion_tabel.php, function_template.php, function_unzip.php.

config.php

script yang berisikan konfigurasi antara program dan databse dan pengaturan lainnya.

<?php
$host	= "localhost";
$user	= "root";
$pass	= "";
$db	= "rc_cms";

error_reporting(0);

$mysqli = new mysqli($host, $user, $pass, $db);


date_default_timezone_set('Asia/Jakarta'); 

$nama_hari 	= array("Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu");
$hari		= date("w");
$hari_ini 	= $nama_hari[$hari];

$tgl_sekarang = date("d");
$bln_sekarang = date("m");
$thn_sekarang = date("Y");

$tanggal 	= date('Ymd');
$jam 		= date("H:i:s");

pada bagian

$host = “localhost”;
$user = “root”;
$pass = “”;
$db = “rc_cms”;

sesuaikan dengan server kalian, karena mimin menggunakan XAMPP tanpa mimin konfigurasi ulang, maka pengaturan defauldnya adalah pengguna root password kosong.

Jika masa pengerjaan mimin sarankan untuk menghilangkan kode

error_reporting(0);

untuk mengetahui bagian error pada program, maka bagian kode di atas harus dihilangkan.

function_antiinjection.php

function ini berguna untuk menangkal serangan injector kedalam website.

<?php
function antiinjeksi($text){
	global $mysqli;
	$safetext = $mysqli->real_escape_string(stripslashes(strip_tags(htmlspecialchars($text,ENT_QUOTES))));
	return $safetext;
}
?>

function_date.php

function ini berfungdi untuk mengubah tanggal, bulan dan tahun ke format indonesia

<?php
function tgl_indonesia($tgl){
	$nama_bulan = array(1=>"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember");
		
	$tanggal = substr($tgl,8,2);
	$bulan = $nama_bulan[(int)substr($tgl,5,2)];
	$tahun = substr($tgl,0,4);
	
	return $tanggal.' '.$bulan.' '.$tahun;		 
}	
?>

function_form.php

function ini berfungsi untuk membuat sebuah form

<?php
function buka_form($link, $id, $aksi){
	echo'<form method="post" action="'.$link.'&show=action" class="form-horizontal" enctype="multipart/form-data">
			<input type="hidden" name="id" value="'.$id.'">
			<input type="hidden" name="aksi" value="'.$aksi.'">';
}

function buat_textbox($label, $nama, $nilai, $lebar='4', $tipe="text"){
	echo'<div class="form-group" id="'.$nama.'">
			<label for="'.$nama.'" class="col-sm-2 control-label">'.$label.'</label>
			<div class="col-sm-'.$lebar.'">
			  <input type="'.$tipe.'" class="form-control" name="'.$nama.'" value="'.$nilai.'">
			</div>
		 </div>';
}

function buat_textarea($label, $nama, $nilai, $class=''){
	echo'<div class="form-group" id="'.$nama.'">
			<label for="'.$nama.'" class="col-sm-2 control-label">'.$label.'</label>
			<div class="col-sm-10">
			  <textarea class="form-control '.$class.'" rows="8" name="'.$nama.'">'.$nilai.'</textarea>
			</div>
		 </div>';
}

function buat_combobox($label, $nama, $list, $nilai, $lebar='4'){
	echo'<div class="form-group" id="'.$nama.'">
			<label for="'.$nama.'" class="col-sm-2 control-label">'.$label.'</label>
			<div class="col-sm-'.$lebar.'">
			  <select class="form-control" name="'.$nama.'">';
		foreach($list as $ls){
			$select = $ls['val']==$nilai ? 'selected' : '';
			echo'<option value='.$ls['val'].' '.$select.'>'.$ls['cap'].'</option>';
		}
	echo'	  </select>
			</div>
		 </div>';
}

function buat_checkbox($label, $nama, $list){
	echo'<div class="form-group" id="'.$nama.'">
			<label class="col-sm-2 control-label">'.$label.'</label>
			<div class="col-sm-10">';
		foreach($list as $ls){
			echo' <input type="checkbox" name="'.$nama.'[]" value="'.$ls['val'].'" '.$ls['check'].'> '.$ls['cap'];
		}
	echo'	</div>
		</div>';
}

function buat_radio($label, $nama, $list, $req=NULL){
	echo'<div class="form-group" id="'.$nama.'">
			<label class="col-sm-2 control-label">'.$label.'</label>
			<div class="col-sm-10">';
		foreach($list as $ls){
			echo'<label  for="'.$nama.$ls['val'].'" id="label_'.$nama.$ls['val'].'"> 
					<input type="radio" name="'.$nama.'" id="'.$nama.$ls['val'].'" value="'.$ls['val'].'" '.$ls['check'].' '.$req.'> '.$ls['cap'].' 
				</label>';
		}
	echo'	</div>
		</div>';
}

function buat_imagepicker($label, $nama, $nilai, $lebar='4'){
?>
	<script>
		$(function(){
			$('#modal-<?php echo $nama; ?>').on('hidden.bs.modal', function (e) {
				var url = $('#<?php echo $nama; ?>').val();
				if(url != "") $('.tampil-<?php echo $nama; ?>').html('<img src="../media/thumbs/'+url+'" width="150" style="margin-bottom: 10px">');
			})
		});
	</script>
<?php
	echo'<div class="form-group imagepicker">
			<label for="'.$nama.'" class="col-sm-2 control-label">'.$label.'</label>
			<div class="col-sm-'.$lebar.'">
			<div class="tampil-'.$nama.'">';
		if($nilai != "") echo'<img src="../media/thumbs/'.$nilai.'" width="150" style="margin-bottom: 10px">';
	echo'	</div>
			<div class="input-group">
			  <input type="text" class="form-control input-'.$nama.'" id="'.$nama.'" name="'.$nama.'" value="'.$nilai.'" readonly>
			  <a data-toggle="modal" data-target="#modal-'.$nama.'" class="input-group-addon btn btn-primary pilih-'.$nama.'">...</a>
			</div>
			</div>
			<div class="modal fade" id="modal-'.$nama.'" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
				<div class="modal-dialog modal-lg">
					<div class="modal-content">
						<div class="modal-header">
							<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
							<h4 class="modal-title" id="myModalLabel">File Manager</h4>
						</div>
						<div class="modal-body">
							<iframe src="../plugin/filemanager/dialog.php?type=1&field_id='.$nama.'&relative_url=1" width="100%" height="400" style="border: 0"></iframe>
						</div>
					</div>
				</div>
			</div>
		 </div>';
}

function tutup_form($link){
	echo'<div class="form-group">
			<div class="col-sm-offset-2 col-sm-10">
				<button type="submit" class="btn btn-primary">
					<i class="glyphicon glyphicon-floppy-disk"></i> Simpan 
				</button>
				<a class="btn btn-warning" href="'.$link.'">
					<i class="glyphicon glyphicon-arrow-left"></i> Batal 
				</a>
			</div>
		</div>
	</form>';
}
?>

function_menu.php

function ini berfungsi ketika kita ingin membuat sebuah menu.

<?php
function buat_menu($link, $ikon, $judul,  $leveluser=array("admin")){
	foreach($leveluser as $level){
		if($_SESSION['leveluser']==$level) echo'<li><a href="?content='.$link.'"><i class="glyphicon glyphicon-'.$ikon.'"></i> '.$judul.'</a></li>';
	}
}

function buat_submenu($link, $judul, $leveluser=array("admin")){
	foreach($leveluser as $level){
		if($_SESSION['leveluser']==$level) echo'<li><a href="?content='.$link.'"> '.$judul.'</a></li>';
	}
}

function buka_dropdown($ikon, $judul, $leveluser=array("admin")){
	foreach($leveluser as $level){
		if($_SESSION['leveluser']==$level) 
			echo'<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">
			<i class="glyphicon glyphicon-'.$ikon.'"></i> '.$judul.' <b class="caret"></b></a>
			<ul class="dropdown-menu">';
	}
}
function tutup_dropdown($leveluser=array("admin")){
	foreach($leveluser as $level){
		if($_SESSION['leveluser']==$level) echo'</ul></li>';
	}
}
?>

function_remove.php

function ini berfungsi ketika kita ingin menghapus modul atau tema yang sudah tidak kita gunakan lagi.

<?php
function hapus_folder($path) {
 	$files = glob($path . '/*');
	foreach ($files as $file) {
		is_dir($file) ? hapus_folder($file) : unlink($file);
	}
	rmdir($path);
 	return;
}
?>

function_seo.php

function ini berfungsi untuk membuat slug, menjadikan spasi menjadi tanda strip dan mengubah huruf besar menjadi huruf kecil, serta membuang karakter didalam slug.

<?php
function convert_seo($kata) {
    $simbol = array ('-','/','\\',',','.','#',':',';','\'','"','[',']','{','}',')','(','|','`','~','!','@','%','$','^','&','*','=','?','+');
	
    $kata = str_replace($simbol, '', $kata); 
    
    $kata = strtolower(str_replace(' ', '-', $kata)); 
    
	return $kata;
}
?>

function_table.php

function ini berfungsi ketika kita ingin membuat sebuah tabel.

<?php
function buka_tabel($judul){
	echo'<div class="table-responsive">
		<table class="table-data table table-striped" width="100%">
		<thead>
			<tr>
				<th style="width: 10px">No</th>';
	foreach($judul as $jdl){
		echo '<th>'.$jdl.'</th>';
	}
				
	echo'		<th style="width: 60px">Aksi</th>
			</tr>
		</thead>
		<tbody>';
}

function isi_tabel($no, $data, $link, $id, $edit=true, $hapus=true){
	echo'<tr>
			<td valign="top">'.$no.'</td>';
	foreach($data as $dt){
		echo'<td valign="top">'.$dt.'</td>';
	}
	echo'<td valign="top">';
	if($edit){
		echo'<a href="'.$link.'&show=form&id='.$id.'" class="btn btn-primary btn-sm">
				<i class="glyphicon glyphicon-pencil"></i>
			</a> ';
	}
	if($hapus){
		echo'<a href="'.$link.'&show=delete&id='.$id.'" class="btn btn-danger btn-sm">
				<i class="glyphicon glyphicon-trash"></i>
			</a>';
	}
	echo'</td>
		</tr>';
}

function tutup_tabel(){
	echo'		</tbody>	
			</table>
		</div>';
}
?>

function_template.php

function ini berfungsi untuk mengatur semua yang akan di display di template/tema yang nanti akan diperuntukkan pada tampilan website untuk pengunjung.

<?php
function folder_template(){
	global $mysqli;
	$qtemplate = $mysqli->query("SELECT * FROM rc_template WHERE aktif='Y'");
	$tpl = $qtemplate->fetch_array();
	return 'template/'.$tpl['folder'];
}

function cari_link($rmenu){	
	global $mysqli;
	
	if($rmenu['jenis_link'] == "halaman"){
		// echo "SELECT * FROM rc_post WHERE id_post='$rmenu[link]'";
		$qhalaman = $mysqli->query("SELECT * FROM rc_post WHERE id_post='$rmenu[link]'");
		$rhal = $qhalaman->fetch_array();
		// var_dump($rhal);
		$link = web_info('url').'/'.permalink($arr_link = explode ("-", $rhal['tanggal']))."$rhal[judul_seo]";
	}elseif($rmenu['jenis_link'] == "kategori"){
		$qkategori = $mysqli->query("SELECT * FROM rc_kategori WHERE id_kategori='$rmenu[link]'");
		$rkat = $qkategori->fetch_array();
		$link = web_info('url')."/kategori/$rkat[kategori_seo]";
	}else{
		$link = $rmenu['link'];
	}
	
	return $link;
}

function template_halaman($template, $id){
	global $mysqli;

	$qhalaman = $mysqli->query("SELECT * FROM rc_post WHERE id_post='$id'");
	$r = $qhalaman->fetch_array();
		$template_halaman = $template;
		
		$breadcrumb = '<ul class="breadcrumb">
						<li><a href="'.web_info('url').'">Home</a></li>
						<li class="active">'.$r['judul'].'</li>
					</ul>';
		$template_halaman = str_replace('{breadcrumb}', $breadcrumb, $template_halaman);
		
		
		$template_halaman = str_replace('{judul}', $r['judul'], $template_halaman);

		if($r['gambar'] != ""){
			$gambar = web_info('url')."/media/source/".$r['gambar'];
			$template_halaman = str_replace('{gambar}',	'<img src="'.$gambar.'">', $template_halaman);
		}else{
			$template_halaman = str_replace('{gambar}',	'', $template_halaman);
		}
		
		$konten = str_replace("../media/", web_info('url')."/media/", $r['isi']);
		$template_halaman= str_replace('{konten}', $konten, $template_halaman);
		
		echo $template_halaman;
	
	if($r['id_modul']!= 0){
		$qmodul = $mysqli->query("SELECT * FROM rc_modul WHERE id_modul='$r[id_modul]'");
		$rmd = $qmodul->fetch_array();
		$_FOLDER_MODUL = 'module/'.$rmd['folder'];
		if(file_exists("module/$rmd[folder]/content.php")) include "module/$rmd[folder]/content.php";
	}
}

function web_info($parameter){
	global $mysqli;
	$query = $mysqli->query("SELECT * FROM rc_setting WHERE parameter='$parameter'");
	$setting = $query->fetch_array();
	return $setting['nilai'];
}

function artikel_skema(){
	echo $skema_artikel ='<script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Article",
      "headline": "'.web_info('judul').'",
      "image": [
        "'.web_info('url')."/media/source/".web_info('icon').'"
       ],
      "author": [{
          "@type": "Person",
          "name": "republiccode",
		  "url" : "'.web_info('url').'"
        }]
    }
    </script>';
}

function meta_header(){
	global $mysqli;

	$content = (isset($_GET['seo'])) ? $_GET['seo'] : "home";
	// $_GET['seo'] ="";
		$query = "SELECT * FROM rc_post WHERE judul_seo='$content'";
		$nil = mysqli_num_rows($mysqli->query($query));

	if($nil >0){
		$qartikel = $mysqli->query($query);
		$artikel = $qartikel->fetch_array();
		$judul = $artikel['judul'].' - '.web_info('judul');

		$des = explode("<p>",$artikel['isi']);
		// var_dump($des);
		$deskripsi = strip_tags(substr($des[1],0,150));
		$keyword = $artikel['judul'];
		$tanggal = $artikel['tanggal'];
		$judul_seo = $artikel['judul_seo'];
		$img = '
		<meta property="og:image" content="'.web_info('url')."/media/source/".$artikel['gambar'].'" />
		<meta property="og:image:width" content="1280" />
		<meta property="og:image:height" content="720" />
		<meta property="og:image:alt" content="'.$judul.'" />
		<meta property="og:image:type" content="image/png" />';
		$met_robot ='<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>';
		$met_type ='<meta property="og:type" content="article" />';
	}else{
		$judul = web_info('judul');
		$deskripsi = web_info('deskripsi');
		$keyword = web_info('keyword');
		$tanggal ="";
		$judul_seo ="";
		$img ='';
		$met_robot='<meta name="robots" content="follow, index"/>';
		$met_type ='<meta property="og:type" content="website" />';
	}

	$icon = web_info('url')."/media/source/".web_info('icon');

	echo'<title>'.$judul.'</title>
	'.artikel_skema().'
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="description" content="'.$deskripsi.'">
	'.$met_robot.'
	<link rel="canonical" href="'.web_info('url').'/'.permalink(explode ("-", $tanggal)).$judul_seo.'" />
	<meta name="keywords" content="'.$keyword.'">
	<meta property="og:locale" content="id_ID" />
	'.$met_type.'
	<meta property="og:title" content="'.$judul.'" />
	<meta property="og:description" content="'.$deskripsi.'" />
	<meta property="og:url" content="'.web_info('url').'/'.permalink(explode ("-", $tanggal)).$judul_seo.'" />
	<meta property="og:site_name" content="'.$judul.'" />
	'.$img.'
	
	<meta http-equiv="Copyright" content="'.web_info('url').'">
	<meta name="author" content="'.web_info('judul').'">
	<meta name="revisit-after" content="7">
	<meta name="webcrawlers" content="all">
	<meta name="rating" content="general">
	<meta name="spiders" content="all">
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	
	<link rel="shortcut icon" href="'.$icon.'" />		
	<link rel="stylesheet" type="text/css" href="'.web_info('url').'/plugin/bootstrap/css/bootstrap.min.css">
	<link rel="stylesheet" type="text/css" href="'.web_info('url').'/'.folder_template().'/css/style.css">
	
	<script type="text/javascript" src="'.web_info('url').'/plugin/jquery/jquery-2.0.2.min.js"></script>
	<script src="https://www.google.com/recaptcha/api.js"></script>';	
}

function template_header(){
	include folder_template()."/header.php";
}

function form_pencarian($tombol = "Search", $placeholder = "Search here..."){
	echo'<form method="post" action="'.web_info('url').'/pencarian" class="form form-inline form-search">
			<input type="text" name="kata" class="form-control" placeholder="'.$placeholder.'">
			<button type="submit" class="btn btn-default">'.$tombol.'</button>
		</form>';
}

function template_footer(){
	include folder_template()."/footer.php";
	echo '<script type="text/javascript" src="'.web_info('url').'/plugin/bootstrap/js/bootstrap.min.js"></script>';			
}

function querypermalink($data=array()){

	$permalink = web_info('permalink');
	if($permalink == "postname"){
		$query = 'judul_seo = "'.$data[0].'"';
	}elseif($permalink == "date/postname"){
		 $query = 'tanggal = "'.$data[0].'-'.$data[1].'-'.$data[2].'" AND judul_seo="'.$data[3].'"';
	}else{
		$link = web_info('url');
	}
	// echo $link;
	return $query;

}

function permalink($data=array()){
	$permalink = web_info('permalink');
	if($permalink == "postname"){
		$link = NULL;
	}elseif($permalink == "date/postname"){
		 $link = $data[0].'/'.$data[1].'/'.$data[2].'/';
	}else{
		$link = web_info('url');
	}
	// echo $link;
	return $link;
}

function template_artikel($template, $limit=10, $panjang=300){	
	global $mysqli;
	
	$batas 	= $limit;	
	$hal 	= isset($_GET['hal']) ? $_GET['hal'] : 1;
	$posisi = isset($_GET['hal']) ? ($hal-1) * $batas : 0;

	$qartikel = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='post' AND status_post='publish' ORDER BY id_post DESC limit $posisi,$batas");
	while($r = $qartikel->fetch_array()){
		$template_artikel = $template;
		
		$arr_link = explode ("-", $r['tanggal']);
		$link = web_info('url').'/'.permalink($arr_link).''.$r['judul_seo'];
		// $link = web_info('url')."/artikel/$r[id_post]/$r[judul_seo]";
		$template_artikel = str_replace('{link}', $link, $template_artikel);
		
		if($r['gambar'] != "") $gambar = web_info('url')."/media/thumbs/".$r['gambar'];
		else $gambar = web_info('url')."/media/thumbs/blank.png";
		$template_artikel = str_replace('{gambar}',	$gambar, $template_artikel);
		
		
		$template_artikel = str_replace('{judul}', $r['judul'], $template_artikel);
		
		$quser = $mysqli->query("SELECT * FROM rc_user WHERE id_user='$r[id_user]'");
		$u = $quser->fetch_array();			
		$meta= $u['nama_lengkap'].' | '.$r['hari'].', '.tgl_indonesia($r['tanggal']).' '.$r['jam'].' WIB'; 
		$template_artikel = str_replace('{meta}', $meta, $template_artikel);
		
		$konten = substr($r['isi'], 0, $panjang);
		$konten = substr($r['isi'], 0, strrpos($konten, " ") );
		$konten = str_replace("../media/", web_info('url')."/media/", $konten);
		$template_artikel = str_replace('{konten}', $konten, $template_artikel);
		
		echo $template_artikel;
	}
	
	$qartikel = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='post' AND status_post='publish'");
	$jmldata = $qartikel->num_rows;
	
	if($jmldata>$batas){
		echo buat_paging("home", "", $batas, $jmldata, $hal);
	}
}

function buat_paging($link1, $link2, $batas, $jmldata, $halaktif){
	$link1 = web_info('url').'/'.$link1;
	$jmlhalaman = ceil($jmldata/$batas);
	$class = 'btn btn-sm btn-default';
	$link_halaman = '';	
	$link_halaman .= '<div style="text-align: center">';
	
	// Link ke halaman pertama (first) dan sebelumnya (prev)
	if($halaktif > 1){
		$prev = $halaktif-1;
		$link_halaman .= '<a href="'.$link1.'/1'.$link2.'" class="'.$class.'"><< First </a>  
						  <a href="'.$link1.'/'.$prev.$link2.'" class="'.$class.'">< Prev </a>';
	}
	else{ 
		$link_halaman .= '<a href="#" class="'.$class.' disabled"><< First </a>  
						  <a href="#" class="'.$class.' disabled">< Prev </a>';
	}

	// Link halaman 1,2,3, ...
	$angka = ($halaktif > 3 ? "...  " : " "); 
	for ($i=$halaktif-2; $i<$halaktif; $i++){
		if ($i < 1) continue;
		$angka .= '<a href="'.$link1.'/'.$i.$link2.'" class="'.$class.'">'.$i.'</a> ';
	}
	
	$angka .= '<a href="" class="btn btn-sm btn-primary disabled">'.$halaktif.'</a> ';
	  
    for($i=$halaktif+1; $i<($halaktif+3); $i++){
		if($i > $jmlhalaman) break;
		$angka .= '<a href="'.$link1.'/'.$i.$link2.'" class="'.$class.'">'.$i.'</a> ';
	}
	
	$angka .= ($halaktif+2<$jmlhalaman ? '... <a href="'.$link1.'/'.$jmlhalaman.$link2.'" class="'.$class.'">'.$jmlhalaman.'</a> ' : ' ');

	$link_halaman .= $angka;

	// Link ke halaman berikutnya (Next) dan terakhir (Last) 
	if($halaktif < $jmlhalaman){
		$next = $halaktif+1;
		$link_halaman .= '<a href="'.$link1.'/'.$next.$link2.'" class="'.$class.'"> Next > </a>  
						  <a href="'.$link1.'/'.$jmlhalaman.$link2.'" class="'.$class.'"> Last >> </a>';
	}
	else{
		$link_halaman .= '<a href="#" class="'.$class.' disabled"> Next > </a>  
						  <a href="#" class="'.$class.' disabled"> Last >> </a>';
	}
	
	$link_halaman .= '</div>';
	echo $link_halaman;
}

function template_artikel_detail($template){	
	global $mysqli;

	$qartikel = $mysqli->query("SELECT * FROM rc_post WHERE status_post='publish' AND id_post='$_GET[id]'");
	$r = $qartikel->fetch_array();
	
	$qkategori = $mysqli->query("SELECT * FROM rc_kategori WHERE id_kategori='$r[kategori]'");
	$rkat = $qkategori->fetch_array();
	echo'
	<style>
    .breadcrumb > li + li:before {
		color: #ccc;
		content: ">";
		padding: 0 5px;
	}
</style>
	<nav>
		<ul class="breadcrumb">
			<li><a class="breadcrumb-item" href="'.web_info('url').'">Home</a></li>
			<li><a class="breadcrumb-item" href="'.web_info('url').'/kategori/'.$rkat['kategori_seo'].'">'.$rkat['kategori'].'</a></li>
		</ul>
	</nav>';
		
	//Menampilkan artikel detail
		$template_artikel = $template;
		
		if($r['gambar'] != "") $gambar = web_info('url')."/media/source/".$r['gambar'];
		else $gambar = web_info('url')."/media/source/blank.png";
		$template_artikel = str_replace('{gambar}',	$gambar, $template_artikel);
		
		$template_artikel = str_replace('{judul}', $r['judul'], $template_artikel);
		$template_artikel = str_replace('{alt}', $r['judul'].' - '.web_info('judul'), $template_artikel);
		
		$quser = $mysqli->query("SELECT * FROM rc_user WHERE id_user='$r[id_user]'");
		$u = $quser->fetch_array();			
		$meta= $u['nama_lengkap'].' | '.$r['hari'].', '.tgl_indonesia($r['tanggal']).' '.$r['jam'].' WIB'; 
		$template_artikel = str_replace('{meta}', $meta, $template_artikel);
		
		$konten = str_replace("../media/", web_info('url')."/media/", $r['isi']);
		$template_artikel = str_replace('{konten}', $konten, $template_artikel);
		
		echo $template_artikel;
	
	//Menampilkan artikel terkait
	echo '<h4 class="page-header">Artikel Terkait:</h4>
			<div class="row">';
			// echo "SELECT * FROM rc_post WHERE status_post='publish' AND kategori='$r[kategori]' and id_post!='$r[id_post]' ORDER BY rand() LIMIT 4";
	$qkategori = $mysqli->query("SELECT * FROM rc_post WHERE status_post='publish' AND kategori='$r[kategori]' and id_post!='$r[id_post]' ORDER BY rand() LIMIT 4");
	while($rkat = $qkategori->fetch_array()){		
		$link = web_info('url').permalink(explode ("-", $r['tanggal']))."/$rkat[judul_seo]";
		echo '<div class="col-md-3 col-xs-6">';
		
		if($rkat['gambar']!="") $gambar = web_info('url')."/media/thumbs/".$rkat['gambar'];
		else $gambar = web_info('url')."/media/thumbs/blak.png";
		
		echo '<img src="'.$gambar.'" width="100%">';
		echo '<br><a href="'.$link.'">'.$rkat['judul'].'</a></div>';
	}
	echo '</div>';
	
	//Update data kolom hits pada artikel
	$mysqli->query("UPDATE rc_post set hits=hits+1 WHERE id_post='$r[id_post]'");
	
	//Menampilkan list komentar
	$qkomentar = $mysqli->query("SELECT * FROM rc_komentar WHERE id_post='$r[id_post]' ORDER BY id_komentar DESC");
	$jmlkomentar = $qkomentar->num_rows;
	
	echo '<h4 class="page-header" id="header-komentar">'.$jmlkomentar.' Komentar: </h4>';
	while($rkom = $qkomentar->fetch_array()){
		$gravatar = 'http://www.gravatar.com/avatar.php?gravatar_id='.md5(strtolower($rkom['email']));
		echo '<div class="row">
				<div class="col-xs-3 col-md-2">
					<img src="'.$gravatar.'" class="gravatar">
				</div>
				<div class="col-xs-9 col-md-10">
				<b>'.$rkom['nama'].'</b><br>
				<small class="tex-muted">'.tgl_indonesia($rkom['tanggal']).'</small>
				<p>'.$rkom['komentar'].'</p>
				</div>
			</div><hr>';
	}

	echo '<h4 class="page-header">Isi Komentar: </h4>';
	
	//Mengatur validasi form komentar dan menyimpan komentar ke database
	if(isset($_POST['kirim-komentar'])){
		$msg = '';
		if(trim($_POST['nama'])=="") $msg .= '<li>Nama belum diisi</li>';
		if(trim($_POST['email'])=="") $msg .= '<li>Email belum diisi</li>';
		if(trim($_POST['komentar'])=="") $msg .= '<li>Komentar belum diisi</li>';
		 
		$email_pattern = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/';  
		if(!preg_match($email_pattern, $_POST['email'])) $msg .= '<li>Email tidak valid</li>';
		
		$captcha = isset($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : '';
		if($captcha == "") $msg .= '<li>Captcha belum diverifikasi</li>';
		
		$secret_key = '6Ldb7RYTAAAAANbdwAm25Ax8OiaKuF1zPqGEDpuu';
		$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secret_key) . '&response=' . $captcha;   
	    $recaptcha = file_get_contents($url);
		$recaptcha = json_decode($recaptcha, true);
		if (!$recaptcha['success']) $msg .= '<li>Verifikasi cpatcha belum benar</li>';
	   
		if($msg==''){
			$nama = antiinjeksi($_POST['nama']);
			$email = antiinjeksi($_POST['email']);
			$komentar = addslashes($_POST['komentar']);
			$tgl = date("Y-m-d");
			
			
			$quser = $mysqli->query("SELECT * FROM user WHERE level='admin'");
			$rus = $quser->fetch_array();
			$pesan = "$nama mengirim pesan pada website ".web_info('judul');
			mail($rus['email'], "Komentar Website", $pesan);
			
			$mysqli->query("INSERT INTO komentar SET
				nama = '$nama',
				email = '$email',
				komentar = '$komentar',
				tanggal = '$tgl',
				id_post = '$r[id_post]'
			");
			
			header('location: artikel/'.$id.'/'.$judul_seo.'#header-komentar');
		}else{
			echo'<div class="alert alert-warning"><ul>'.$msg.'</ul></div>
				<script> window.location.href="#form-komentar";</script>';
		}
	}
	
	//Menampilkan form komentar
	echo'<form method="post" class="form-horizontal form-komentar" id="form-komentar">';
	
	echo'<div class="form-group">
			<label for="nama" class="col-sm-2 control-label">Nama</label>
			<div class="col-sm-6">
			  <input type="text" class="form-control" name="nama" id="nama">
			</div>
		 </div>';
		 
	echo'<div class="form-group">
			<label for="email" class="col-sm-2 control-label">Email</label>
			<div class="col-sm-6">
			  <input type="text" class="form-control" name="email" id="email">
			</div>
		 </div>';
		 
	echo'<div class="form-group">
			<label for="komentar" class="col-sm-2 control-label">Komentar</label>
			<div class="col-sm-10">
			  <textarea class="form-control" name="komentar" id="komentar" cols="8"></textarea>
			</div>
		 </div>';
	echo'<div class="form-group">
			<div class="col-sm-10 col-md-offset-2">
			  <div class="g-recaptcha" data-sitekey="6Ldb7RYTAAAAAOIg65wh5cQuxzr3EsQRFBis9g3o"></div>
			</div>
		 </div>';
		 
	echo'<div class="form-group">
			<div class="col-sm-offset-2 col-sm-10">
				<button type="submit" class="btn btn-default" name="kirim-komentar">
					Kirim Komentar
				</button>
			</div>
		</div>
	</form>';
}

function template_menu($kategori='main'){
	global $mysqli;					
	$qmenu = $mysqli->query("SELECT * FROM rc_menu WHERE kategori_menu='$kategori' AND induk='0' ORDER BY urut");
	// echo $kategori;
	while($menu = $qmenu->fetch_array()){
		$qsubmenu = $mysqli->query("SELECT * FROM rc_menu WHERE induk='$menu[id_menu]' ORDER BY urut");
		if($qsubmenu->num_rows > 0){
			echo '<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">
					'.$menu['judul'].' <b class="caret"></b></a>
					<ul class="dropdown-menu">';
					while($sub = $qsubmenu->fetch_array()){
						echo'<li><a href="'.cari_link($sub).'">'.$sub['judul'].'</a></li>';			
					}
			echo'	</ul></li>';
		}else{
			echo'<li><a href="'.cari_link($menu).'">'.$menu['judul'].'</a></li>';
		}
	}
}

function template_widget($tpl_judul, $awal_konten, $akhir_konten, $posisi = 1){
	global $mysqli;
	
	$qsidebar = $mysqli->query("SELECT * FROM rc_widget WHERE posisi='$posisi' and aktif='Y' ORDER BY urut");
	while($r = $qsidebar->fetch_array()){
		echo '<div class="blok-widget">';
		$judul = $tpl_judul;
		$judul = str_replace('{judul}', $r['judul'], $judul);
		if($r['judul']!="") echo $judul;
		
		echo $awal_konten;
		if($r['tipe'] == "terbaru"){
			echo '<ul class="list-artikel">';
			$qartikel = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='post' ORDER BY id_post DESC LIMIT 5");
			while($r = $qartikel->fetch_array()){
				echo '<li><a href="'.web_info('url').'/'.permalink($arr_link = explode ("-", $r['tanggal'])).''.$r['judul_seo'].'">'.$r['judul'].'</a></li>';
			}
			echo '</ul>';
		}elseif($r['tipe'] == "populer"){
			echo '<ul class="list-artikel">';	
			$qartikel = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='post' ORDER BY hits DESC LIMIT 5");	
			while($r = $qartikel->fetch_array()){
				echo '<li><a href="'.web_info('url').'/artikel/'.$r['id_post'].'/'.$r['judul_seo'].'">'.$r['judul'].'</a></li>';
			}
			echo '</ul>';
		}elseif($r['tipe'] == "kategori"){
			echo '<ul class="list-kategori">';
			$qartikel = $mysqli->query("SELECT * FROM rc_kategori");
			while($r = $qartikel->fetch_array()){
				echo '<li><a href="'.web_info('url').'/kategori/'.$r['kategori_seo'].'">'.$r['kategori'].'</a></li>';
			}
			echo '</ul>';
		}elseif($r['tipe'] == "menu"){
			echo '<ul class="menu-widget">';
			template_menu($r['id_widget']);
			echo '</ul>';
		}elseif($r['tipe'] == "skrip"){
			echo $r['konten'];
		}else{
			$qmodul = $mysqli->query("SELECT * FROM rc_modul where id_modul='$r[konten]'");
			$mdl = $qmodul->fetch_array();
			$_FOLDER_MODUL = 'module/'.$mdl['folder'];
			include 'module/'.$mdl['folder'].'/widget.php';
		}
		
		echo $akhir_konten;		
		echo '</div>';
	}	
}

function template_kategori($template, $limit=10, $panjang=300){
	global $mysqli;
	
	$qkategori = $mysqli->query("SELECT * FROM rc_kategori WHERE kategori_seo='$_GET[kategoriSeo]'");
	$rkat = $qkategori->fetch_array();
	echo'<ul class="breadcrumb">
			<li><a href="'.web_info('url').'">Home</a></li>
			<li class="active">'.$rkat['kategori'].'</li>
		</ul>';
	
	$batas 	= $limit;	
	$hal 	= isset($_GET['hal']) ? $_GET['hal'] : 1;
	$posisi = isset($_GET['hal']) ? ($hal-1) * $batas : 0;
			
	$qartikel = $mysqli->query("SELECT * FROM rc_post LEFT JOIN rc_kategori ON rc_post.kategori=rc_kategori.id_kategori WHERE kategori_seo='$_GET[kategoriSeo]' AND status_post='publish' ORDER BY id_post DESC  LIMIT $posisi, $batas");
	while($r = $qartikel->fetch_array()){
		$template_artikel = $template;
		$link = web_info('url')."/$r[judul_seo]";
		$template_artikel = str_replace('{link}', $link, $template_artikel);
		
		if($r['gambar'] != "") $gambar = web_info('url')."/media/thumbs/".$r['gambar'];
		else $gambar = web_info('url')."/media/thumbs/blank.png";
		$template_artikel = str_replace('{gambar}',	$gambar, $template_artikel);
		
		$template_artikel = str_replace('{judul}', $r['judul'], $template_artikel);
		
		$quser = $mysqli->query("SELECT * FROM rc_user WHERE id_user='$r[id_user]'");
		$u = $quser->fetch_array();			
		$meta= $u['nama_lengkap'].' | '.$r['hari'].', '.tgl_indonesia($r['tanggal']).' '.$r['jam'].' WIB'; 
		$template_artikel = str_replace('{meta}', $meta, $template_artikel);
		
		$konten = substr($r['isi'], 0, $panjang);
		$konten = substr($r['isi'], 0, strrpos($konten, " ") );
		$konten = str_replace("../media/", web_info('url')."/media/", $konten);
		$template_artikel = str_replace('{konten}', $konten, $template_artikel);
		
		echo $template_artikel;
	}
	
	$qartikel = $mysqli->query("SELECT * FROM rc_post LEFT JOIN rc_kategori ON rc_post.kategori=rc_kategori.id_kategori WHERE kategori_seo='$_GET[kategoriSeo]'");
	$jmldata = $qartikel->num_rows;
	
	if($jmldata>$batas){
		echo buat_paging('kat/'.$_GET['id'], '/'.$rkat['kategori_seo'], $batas, $jmldata, $hal);
	}
	
}

function template_pencarian($template, $limit=20, $panjang=300){
	global $mysqli;
	
	echo'<ul class="breadcrumb">
			<li><a href="'.web_info('url').'">Home</a></li>
			<li class="active">Hasil Pencarian</li>
		</ul>';
	
	$batas 	= $limit;	
	$hal 	= isset($_GET['hal']) ? $_GET['hal'] : 1;
	$posisi = isset($_GET['hal']) ? ($hal-1) * $batas : 0;
	
	$kata = htmlentities(htmlspecialchars($_REQUEST['kata']), ENT_QUOTES);
	$arrkata = explode(" ", $kata);
	// echo "SELECT * FROM rc_post WHERE status_post='publish' AND judul LIKE '%$kata%' OR isi LIKE '%$kata%'";
	$sql = "SELECT * FROM rc_post WHERE (judul LIKE '%$kata%' OR isi LIKE '%$kata%'";
	
	foreach($arrkata as $rkata){
		$sql .= " OR judul LIKE '%$rkata%' OR isi LIKE '%$rkata%'";
	}

	$sql .= ") AND status_post='publish' ORDER BY id_post DESC";		
	$sql1 =  $sql." LIMIT $posisi, $batas";
	$qartikel = $mysqli->query($sql1);
	
	echo '<h3>Hasil pencarian dari kata <b style="color: blue">'.$kata.'</b></h3>';
	
	while($r = $qartikel->fetch_array()){
		$template_artikel = $template;
		
		$link = web_info('url')."/artikel/$r[id_post]/$r[judul_seo]";
		$template_artikel = str_replace('{link}', $link, $template_artikel);
		
		if($r['gambar'] != "") $gambar = web_info('url')."/media/thumbs/".$r['gambar'];
		else $gambar = web_info('url')."/media/thumbs/blank.png";
		$template_artikel = str_replace('{gambar}',	$gambar, $template_artikel);
		
		$template_artikel = str_replace('{judul}', $r['judul'], $template_artikel);
		
		$quser = $mysqli->query("SELECT * FROM rc_user WHERE id_user='$r[id_user]'");
		$u = $quser->fetch_array();			
		$meta= $u['nama_lengkap'].' | '.$r['hari'].', '.tgl_indonesia($r['tanggal']).' '.$r['jam'].' WIB'; 
		$template_artikel = str_replace('{meta}', $meta, $template_artikel);
		
		$konten = substr($r['isi'], 0, $panjang);
		$konten = substr($r['isi'], 0, strrpos($konten, " ") );
		$konten = str_replace("../media/", web_info('url')."/media/", $konten);
		$template_artikel = str_replace('{konten}', $konten, $template_artikel);
		
		echo $template_artikel;
	}
	
	$qartikel = $mysqli->query($sql);
	$jmldata = $qartikel->num_rows;
	
	if($jmldata>$batas){
		echo buat_paging('pencarian', '/'.$_REQUEST['kata'], $batas, $jmldata, $hal);
	}
}

function_unzip.php

function ini berfungsi untuk mengekstrak file ber ekstensi .rar nantinya, baik itu tema ataupun modul.

<?php
function unzip_file($filename, $source,  $target){
	$target_path = $target.$filename; 
	move_uploaded_file($source, $target_path);
	$zip = new ZipArchive();
	$x = $zip->open($target_path);
	if ($x === true) {
		$zip->extractTo($target);
		$zip->close();
	
		unlink($target_path);
	}
}
?>

Admin

Berikutnya yang akan dilakukan pengkodeaan yaitu pada sisi admin, file yang akan kita buat di dalam folder admin yaitu content.php, index.php, login.php, logout.php, menu.php, sidebar.php dan .htaccess.

kita akan menulikan kode pada file index.php

index.php

index.php ini berfungsi sebagai skrip yang pertama kali di eksekusi ketika masuk kedalam admin.

<?php
session_start();
ob_start();
define("INDEX",true);

include "../library/config.php";
include "../library/function_seo.php";
include "../library/function_menu.php";
include "../library/function_table.php";
include "../library/function_form.php";
include "../library/function_date.php";

$timeout = $_SESSION['timeout'];
if(time()<$timeout){
	$_SESSION['timeout'] = time()+5000;
}else{
	$_SESSION['login'] = 0;
}

if(empty($_SESSION['username']) or empty($_SESSION['password']) or $_SESSION['login']==0){
	header('location:../404');
}else{
?>

<html>
<head>
	<title>Halaman Administrator</title>

	<meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0" />

	<link rel="stylesheet" type="text/css" href="../plugin/bootstrap/css/bootstrap.min.css"/>
	<link rel="stylesheet" type="text/css" href="css/style.css"/>
	
	<script type="text/javascript" src="../plugin/jquery/jquery-2.0.2.min.js"></script>
</head>
<body>

<nav class="navbar navbar-inverse navbar-fixed-top"> 
	<div class="container-fluid">
		<?php include "menu.php"; ?> 
	</div>
</nav>	

<section class="container-fluid"> 	
	<div class="row">
		<div class="col-md-2 col-sm-3 hidden-xs sidebar">
			<?php include "sidebar.php"; ?> 
		</div>
		<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
			<?php include "content.php"; ?> 
		</div>
	</div>
</section>

<footer class="navbar navbar-fixed-bottom footer"> 
	<div class="container-fluid">
		<p class="text-center">Copyright &copy; rccms. All right reserved.</p>
	</div>
</footer>

	<script type="text/javascript" src="../plugin/bootstrap/js/bootstrap.min.js"></script>
	 	
	<link type="text/css" rel="stylesheet" href="../plugin/dataTables/css/dataTables.bootstrap.css">
	
	<script type="text/javascript" src="../plugin/dataTables/js/jquery.dataTables.min.js"></script>
	<script type="text/javascript" src="../plugin/dataTables/js/dataTables.bootstrap.min.js"></script>
	
	<script type="text/javascript" src="js/myscript.js"></script>
</body>
</html>

<?php } ?>

login.php

login.php ini berfungsi untuk menampilkan halam skuriti login untuk pengguna

<?php
// echo $_GET['log'];
session_start();
include "../library/config.php";
include "../library/function_antiinjection.php";

function web_info($parameter){
	global $mysqli;
	$query = $mysqli->query("SELECT * FROM rc_setting WHERE parameter='$parameter'");
	$setting = $query->fetch_array();
	return $setting['nilai'];
}

if(web_info('linkLogin')!=$_GET['log']){
	header('location:../404');
}
?>

<html>
<head>
	<title>Halaman Administrator</title>
	
	<meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0" />

	<link rel="stylesheet" type="text/css" href="../plugin/bootstrap/css/bootstrap.min.css"/>
	<link rel="stylesheet" type="text/css" href="css/login.css"/>
	
	<script type="text/javascript" src="../plugin/jquery/jquery-2.0.2.min.js"></script>
</head>
<body>

<div class="container-fluid"> 	
	<div class="row">
		<div class="col-md-4 col-md-push-4 form-login">
		
<?php
if(isset($_POST['login'])){
	$username = antiinjeksi($_POST['username']);
	$password = antiinjeksi(md5($_POST['password']));

	$cekuser = $mysqli->query("SELECT * FROM rc_user WHERE username='$username' AND password='$password'");
	$jmluser = $cekuser->num_rows;
	$data = $cekuser->fetch_array();

	if ($jmluser> 0){

	  $_SESSION['username']     = $data['username'];
	  $_SESSION['namalengkap']  = $data['nama_lengkap'];
	  $_SESSION['password']     = $data['password'];
	  $_SESSION['iduser']     	= $data['id_user'];
	  $_SESSION['leveluser']    = $data['level'];
	  
	  $_SESSION['timeout'] = time()+1000;
	  $_SESSION['login'] = 1;
	  
	  header('location: index.php');
	}else{
	  echo'<div class="alert alert-danger login-alert" role="alert"><b>Sorry!</b> Username atau password salah.</div>';
	}
}
?>

			<div class="panel panel-primary">
			   <div class="panel-heading">
				  <b>Login Administrator</b>
			   </div>
			   <div class="panel-body">
				  <form method="post" action="login.php" class="form-horizontal">
					<div class="input-group">
						<div class="input-group-addon"><i class="glyphicon glyphicon-user"></i></div>
						<input type="text" name="username" placeholder="Username" autofocus class="form-control">
					</div>
					<br/>
					<div class="input-group">
						<div class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></div>
						<input type="password" name="password" placeholder="Password" class="form-control">
					</div>
					<br/>
					<button type="submit" name="login" class="btn btn-primary pull-right">
						<i class="glyphicon glyphicon-log-in"></i> Login Administrator
					</button>
				  </form>
			   </div>
			</div>
		</div>
	</div>
</div>

</body>
</html>

logout.php

skrip ini dijalankan ketika pengguna keluar/log out pada aplikasi bagian admin

<?php
  session_start();
  session_destroy();
  echo "<script>
		alert('Anda telah logout'); 
		window.location = '..';
		</script>";
?>

menu.php

skrip ini berisikan bagian menu yang ada pada bagian admin

<?php
if(!defined("INDEX")) header('location: index.php');
?>
<div class="navbar-header">
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" href="#">ADMINISTRATOR</a>
</div>

<div id="navbar" class="navbar-collapse collapse">
	<ul class="nav navbar-nav visible-xs">
<?php
	buat_menu("dashboard", "home", "Dashboard", array("admin", "author"));
	buka_dropdown("list-alt", "Artikel");
		buat_submenu("artikel", "Artikel");
		buat_submenu("kategori", "Kategori");
		buat_submenu("tag", "Tag");
	tutup_dropdown();
	buat_menu("artikel", "list-alt", "Artikel", array("author"));
	buat_menu("halaman", "file", "Halaman", array("admin", "author"));
	buat_menu("komentar", "comment", "Komentar", array("admin", "author"));
	buat_menu("media", "picture", "Media", array("admin"));
	buat_menu("user", "user", "User", array("admin", "author"));

	buat_menu("modul", "tasks", "Modul");
	buka_dropdown("th-list", "Tampilan");
		buat_submenu("template", "Template");
		buat_submenu("menu", "Menu");
		buat_submenu("widget", "Widget");
	tutup_dropdown();
	buka_dropdown("wrench", "Setting");
		buat_submenu("setting", "Umum");
		buat_submenu("permalink", "PermaLink");
	tutup_dropdown();
	buat_menu("backuprestore", "floppy-save", "Backup dan Restore");
	
	$query = $mysqli->query("SELECT * FROM rc_modul WHERE menu='Y' AND aktif='Y'");
	while($data = $query->fetch_array()){
		if(file_exists("../module/$data[folder]/menu.php")){
			include "../module/$data[folder]/menu.php";
		}
	}

?>		
	</ul>
	<ul class="nav navbar-nav navbar-right">
		<li><a target='_blank' href="../"><i class="glyphicon glyphicon-eye-open"></i> Lihat Web</a></li>
		<li><a href="logout.php"><i class="glyphicon glyphicon-log-out"></i> Keluar</a></li>
	</ul>
</div>

sidebar.php

skrip ini merupakan bagian sidebar pada bagian admin

<ul class="nav">
<?php
if(!defined("INDEX")) header('location: index.php');

	buat_menu("dashboard", "home", "Dashboard", array("admin", "author"));
	buka_dropdown("list-alt", "Artikel");
		buat_submenu("artikel", "Artikel");
		buat_submenu("kategori", "Kategori");
		buat_submenu("tag", "Tag");
	tutup_dropdown();
	
	buat_menu("artikel", "list-alt", "Artikel", array("author"));
	buat_menu("halaman", "file", "Halaman", array("admin", "author"));
	buat_menu("komentar", "comment", "Komentar", array("admin", "author"));
	buat_menu("media", "picture", "Media", array("admin"));
	buat_menu("user", "user", "User", array("admin", "author"));
	
	buat_menu("modul", "tasks", "Modul");
	buka_dropdown("th-list", "Tampilan");
		buat_submenu("template", "Template");
		buat_submenu("menu", "Menu");
		buat_submenu("widget", "Widget");
	tutup_dropdown();
	// buat_menu("setting", "wrench", "Setting");

	buka_dropdown("wrench", "Setting");
		buat_submenu("setting", "Umum");
		buat_submenu("permalink", "PermaLink");
	tutup_dropdown();

	buat_menu("backuprestore", "floppy-save", "Backup dan Restore");
	
	$query = $mysqli->query("SELECT * FROM rc_modul WHERE menu='Y' AND aktif='Y'");
	while($data = $query->fetch_array()){
		if(file_exists("../module/$data[folder]/menu.php")){
			include "../module/$data[folder]/menu.php";
		}
	}
?>		
</ul>

content.php

pada skrip ini, bertugas untuk menampilkan konten apa saja ketika pengguna mengklik menu yang ada pada admin.

<?php
if(!defined("INDEX")) header('location: index.php');
	
$content = isset($_GET['content']) ? $_GET['content'] : 'dashboard';
$kosong = true;

$page = array('dashboard', 'artikel', 'kategori', 'tag', 'halaman', 'komentar', 'media', 'modul', 'template', 'menu', 'widget', 'user', 'setting', 'backuprestore','permalink');
foreach($page as $pg){
	if($content == $pg and $kosong){
		include 'content/'.$pg.'.php';
		$kosong = false;
	}
}

$query = $mysqli->query("SELECT * FROM rc_modul WHERE menu='Y'");
while($data = $query->fetch_array()){
	if(file_exists("../module/$data[folder]/admin.php")){
		if($content == $data['folder'] and $kosong){
			$_FOLDER_MODUL = "../module/$data[folder]";
			include "../module/$data[folder]/admin.php";
			
			$kosong = false;
		}
	}
}

if($kosong){
	echo '<br><br><div class="alert alert-warning"><b>Sorry</b>, Halaman tidak ditemukan!</div>';
}	
?>

.htaccess

file ini berfungsi untuk menyembunyikan index.php ketika berada pada halaman pertama admin (login)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ login.php?log=$1 [L]
</IfModule>

agar setiap menu di klik dapat menampilkan conten yang dimaksud, beberapa skrip tersebut disimpan pada folder content

di dalam folder content ada beberapa script php yang akan kita buat, yaitu artikel, bacuprestore, dashboard, halaman, kategori, komentar, media, menu, modul, permalink, setting, tag, teplate, user dan widget. Semua file tersebut berekstensi *.php.

kita mulai dengan

dashboard.php

<?php
if(!defined("INDEX")) header('location: index.php');

function buat_tombol($label, $name, $icon, $link, $warna, $kondisi=NULL){
	global $mysqli;
	$query = $mysqli->query("select * from $name $kondisi");
	$jml_data = $query->num_rows;
	echo'<div class="col-md-3 col-xs-6"><a href="'.$link.'">
			<div class="panel panel-'.$warna.' dashboard-panel">
				<div class="panel-heading">
					<i class="glyphicon glyphicon-'.$icon.'"></i>
					<span class="pull-right">'.$jml_data.'</span>					
				</div>
				<div class="panel-body">'.$label.'</div>
			</div>
		</a></div>';
}

?>
<br>
<div class="row">
<?php

	buat_tombol("Artikel","rc_post", "list-alt", "?content=artikel", "danger", "WHERE jenis_post='post'");
	buat_tombol("Menu","rc_menu", "list", "?content=menu", "success");
	buat_tombol("Halaman","rc_post", "file", "?content=halaman", "info","WHERE jenis_post='halaman'");
	buat_tombol("Modul","rc_modul", "tasks", "?content=modul", "warning");
?>
</div>


<div class="row">
	<div class="col-md-6">
<?php

	function dapatkan_nilai($parameter){
		global $mysqli;
		$query 	= $mysqli->query("SELECT * FROM rc_setting WHERE parameter='$parameter'");
		$data	= $query->fetch_array();
		return $data['nilai'];
	}
	

	$homepage = dapatkan_nilai("homepage");
	if($homepage == 0){
		$str_homepage = "Artikel Terbaru";
	}else{

		$queryhal = $mysqli->query("SELECT * FROM rc_post WHERE id_post='$homepage'");
		$datahal = $queryhal->fetch_array();
		$str_homepage = $datahal['judul'];
	}
	

?>
	<table class="table table-striped">
		<thead><tr><th colspan="2"><h3><b>Identitas Website</b></h3></th></tr></thead>
		<tbody>
		<tr><td><b>Judul Website</b></td>	<td>: <?=  dapatkan_nilai("judul"); ?></td></tr>
		<tr><td><b>URL Website</b></td>		<td>: <?=  dapatkan_nilai("url"); ?></td></tr>
		<tr><td><b>Folder</b></td>			<td>: <?=  dapatkan_nilai("folder"); ?></td></tr>
		<tr><td><b>Icon</b></td>			<td>: <img src="../media/thumbs/<?=  dapatkan_nilai("icon"); ?>" width="60"></td></tr>
		<tr><td><b>Keyword</b></td>			<td>: <?=  dapatkan_nilai("keyword"); ?></td></tr>
		<tr><td><b>Homepage</b></td>		<td>: <?=  $str_homepage; ?></td></tr>
		</tbody>
	</table>

	</div>
	<div class="col-md-6">
		
	<table class="table table-striped">
		<thead><tr><th colspan="2"><h3><b>Komentar Terbaru</b></h3></th></tr></thead>
		<tbody>
<?php

	$querykomen = $mysqli->query("SELECT * FROM rc_komentar ORDER BY id_komentar desc limit 4");
	while($datakomen = $querykomen->fetch_array()){
		$tanggal = tgl_indonesia($datakomen['tanggal']);
		if($datakomen['dibaca'] == 'N'){
			$nama = '<b>'.$datakomen['nama'].'</b>';
			$komentar = '<b>'.$datakomen['komentar'].'</b>';
		}else{
			$nama = $datakomen['nama'];
			$komentar = $datakomen['komentar'];
		}
		echo'<tr>
				<td valign="top">'.$nama.'</td>
				<td><small class="text-muted">'.$tanggal.'</small><br>'.$komentar.'</td>
			</tr>';
	} 
?>
		</tbody>
	</table>
	
	</div>
</div>

berikutnya kita akan membuat artikel.php

<script type="text/javascript" src="../plugin/tinymce/tinymce.min.js"></script>
<script type="text/javascript" src="js/tinymce_config.js"></script>

<?php
if(!defined("INDEX")) header('location: ../index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=artikel";
switch($show){

	//Menampilkan data
	default:
		echo '<h3 class="page-header"><b>Daftar Artikel</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
		
		buka_tabel(array("Judul Artikel", "Kategori","Status Artikel", "User", "Tanggal Posting"));
		$no = 1;
		$id_user = $_SESSION['iduser'];
		
		if($_SESSION['leveluser']=="admin") $query = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='post' ORDER BY id_post DESC");
		else $query = $mysqli->query("SELECT * FROM rc_post WHERE id_user='$id_user' ORDER BY id_post");
		while($data = $query->fetch_array()){
			$user = $mysqli->query("SELECT nama_lengkap FROM rc_user where id_user='$data[id_user]'");
			$us = $user->fetch_array();
			
			$kategori = $mysqli->query("SELECT * FROM rc_kategori where id_kategori='$data[kategori]'");
			$kat = $kategori->fetch_array();
			
			$tanggal = tgl_indonesia($data['tanggal']);
			
			isi_tabel($no, array($data['judul'], $kat['kategori'],$data['status_post'], $us['nama_lengkap'], $tanggal), $link, $data['id_post']);
			$no++;
		} 
		tutup_tabel();
		
	break;
	

	case "form":
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_post WHERE id_post='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
		}else{
			$data = array("id_post"=>"", "judul"=>"", "isi"=>"", "gambar"=>"", "kategori"=>"", "tag"=>"");
			$aksi 	= "Tambah";
		}
		
		if($aksi=="Edit" and $_SESSION['leveluser']!="admin" and $data['id_user']!=$_SESSION['iduser']){
			header('location:'.$link);
		}else{
			echo'<h3 class="page-header"><b>'.$aksi.' Artikel</b> </h3>';	
			buka_form($link, $data['id_post'], strtolower($aksi));
				buat_textbox("Judul Artikel", "judul", $data['judul'], 10);
				buat_textarea("Isi Artikel", "isi", $data['isi'], "richtext");
				buat_imagepicker("Gambar", "gambar", $data['gambar']);
				
				$kategori = $mysqli->query("SELECT * FROM rc_kategori");
				$list = array();
				while($k = $kategori->fetch_array()){
					$list[] = array('val'=>$k['id_kategori'], 'cap'=>$k['kategori']);
				}
				buat_combobox("Kategori", "kategori", $list, $data['kategori']);
				
				$tag = $mysqli->query("SELECT * FROM rc_tag");
				$arr_tag = explode(",", $data['tag']);
				$list = array();
				while($t = $tag->fetch_array()){
					$check = (array_search($t['tag_seo'], $arr_tag) === false) ? "" : "checked";
					$list[] = array("val"=>$t['tag_seo'], "cap"=>$t['tag'], "check"=>$check);
				}
				buat_checkbox("Tag", "tag", $list);
				// =================
				$kon = array('publish','konsep');
				$arr_kat = explode(",", $data['status_post']);

				$list = array();
				foreach($kon as $konsep){
					$arr_kon[]= $konsep;
					$check = (array_search($konsep, $arr_kat) === false) ? "" : "checked";
					$list[] = array("val"=>$konsep, "cap"=>$konsep, "check"=>$check);
				}
				buat_radio("Status Post", "konsep", $list);

			tutup_form($link);
		}
	break;	

	case "action":
		$judul		= addslashes($_POST['judul']);
		$judul_seo 	= convert_seo($_POST['judul']);
		$isi		= addslashes($_POST['isi']);
		$tag		= implode(",",$_POST['tag']);
		$user		= $_SESSION['iduser'];
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_post SET
				judul 		= '$judul',
				judul_seo 	= '$judul_seo',
				isi			= '$isi',
				hari		= '$hari_ini',
				tanggal		= '$tanggal',
				jam			= '$jam',
				id_user		= '$user',
				tag			= '$tag',
				kategori	= '$_POST[kategori]',
				gambar 		= '$_POST[gambar]',
				status_post = '$_POST[konsep]',
				jenis_post 	= 'post'				
			");
		}elseif($_POST['aksi'] == "edit"){
				$mysqli->query("UPDATE rc_post SET
					judul 		= '$judul',
					judul_seo 	= '$judul_seo',
					isi			= '$isi',
					hari		= '$hari_ini',
					tanggal		= '$tanggal',
					jam			= '$jam',
					id_user		= '$user',
					tag			= '$tag',
					kategori	= '$_POST[kategori]',
					gambar 		= '$_POST[gambar]',
					status_post = '$_POST[konsep]'
				WHERE id_post='$_POST[id]'");
		}
		header('location:'.$link);
	break;
	

	case "delete":
		$query 	= $mysqli->query("SELECT * FROM rc_post WHERE id_post='$_GET[id]'");
		$data	= $query->fetch_array();
		if($_SESSION['leveluser']=="admin" or $data['id_user']==$_SESSION['iduser']){
			$mysqli->query("DELETE FROM rc_post WHERE id_post='$_GET[id]'");
		}
		header('location:'.$link);
	break;
}
?>

kemudian kategori.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=kategori";
switch($show){

	default:
		echo '<h3 class="page-header"><b>Daftar Kategori</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
		
		buka_tabel(array("Kategori"));
		$no = 1;
		$query = $mysqli->query("SELECT * FROM rc_kategori ORDER BY id_kategori");
		while($data = $query->fetch_array()){
			isi_tabel($no, array($data['kategori']), $link, $data['id_kategori']);
			$no++;
		} 
		tutup_tabel();
		
	break;
	

	case "form":
		if(isset($_GET['id'])){
			$query = $mysqli->query("SELECT * FROM rc_kategori WHERE id_kategori='$_GET[id]'");
			$data = $query->fetch_array();
			$aksi = "Edit";
		}else{
			$data = array("id_kategori"=>"", "kategori"=>"");
			$aksi = "Tambah";
		}
		
		echo'<h3 class="page-header"><b>'.$aksi.' Kategori</b> </h3>';	
		
		buka_form($link, $data['id_kategori'], strtolower($aksi));
			buat_textbox("Nama Kategori", "kategori", $data['kategori']);
		tutup_form($link);	
	break;	
	
	case "action":
		$kategori_seo = convert_seo($_POST['kategori']);
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_kategori SET
				kategori = '$_POST[kategori]',
				kategori_seo = '$kategori_seo'
			");
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_kategori SET
				kategori = '$_POST[kategori]',
				kategori_seo = '$kategori_seo'
			WHERE id_kategori='$_POST[id]'");
		}
		header('location:'.$link);
	break;

	case "delete":
		$mysqli->query("DELETE FROM rc_kategori WHERE id_kategori='$_GET[id]'");
		header('location:'.$link);
	break;
	
}
?>

kemudian tag.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=tag";
switch($show){

	default:
		echo '<h3 class="page-header"><b>Daftar Tag</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
		
		buka_tabel(array("Tag"));
		$no = 1;
		$query = $mysqli->query("SELECT * FROM rc_tag ORDER BY id_tag");
		while($data = $query->fetch_array()){
			isi_tabel($no, array($data['tag']), $link, $data['id_tag']);
			$no++;
		} 
		tutup_tabel();
		
	break;
	

	case "form":
		if(isset($_GET['id'])){
			$query = $mysqli->query("SELECT * FROM rc_tag WHERE id_tag='$_GET[id]'");
			$data = $query->fetch_array();
			$aksi = "Edit";
		}else{
			$data = array("id_tag"=>"", "tag"=>"");
			$aksi = "Tambah";
		}
		
		echo'<h3 class="page-header"><b>'.$aksi.' Tag</b> </h3>';	
		
		buka_form($link, $data['id_tag'], strtolower($aksi));
			buat_textbox("Nama Tag", "tag", $data['tag']);
		tutup_form($link);	
	break;	
	

	case "action":
		$tag_seo = convert_seo($_POST['tag']);
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_tag SET
				tag = '$_POST[tag]',
				tag_seo = '$tag_seo'
			");
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_tag SET
				tag = '$_POST[tag]',
				tag_seo = '$tag_seo'
			WHERE id_tag='$_POST[id]'");
		}
		header('location:'.$link);
	break;
	
	case "delete":
		$mysqli->query("DELETE FROM rc_tag WHERE id_tag='$_GET[id]'");
		header('location:'.$link);
	break;
}
?>

berikutnya kita akan membuat halaman.php kode ini berfungsi untuk membuat sebuah halaman pada website, pada sebuah halaman dapat memuat sebuah modul.

<script type="text/javascript" src="../plugin/tinymce/tinymce.min.js"></script>
<script type="text/javascript" src="js/tinymce_config.js"></script>

<?php
if(!defined("INDEX")) header('location: ../index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=halaman";
switch($show){

	default:
		echo '<h3 class="page-header"><b>Daftar Halaman</b>';
						
		if($_SESSION['leveluser']=="admin"){
			echo'<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>';
		}
		
		echo '</h3>';
		
		buka_tabel(array("Judul Halaman", "User"));
		$no = 1;
		$query = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='halaman' ORDER BY id_post");
		while($data = $query->fetch_array()){
			$user = $mysqli->query("SELECT nama_lengkap FROM rc_user where id_user='$data[id_user]'");
			$us = $user->fetch_array();
			if($_SESSION['leveluser']=="admin") isi_tabel($no, array($data['judul'], $us['nama_lengkap']), $link, $data['id_post']);
			else  isi_tabel($no, array($data['judul'], $us['nama_lengkap']), $link, $data['id_post'], true, false);
			$no++;
		} 
		tutup_tabel();
		
	break;
	
	case "form":
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_post WHERE id_post='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
		}else{
			$data = array("id_post"=>"", "judul"=>"", "isi"=>"", "gambar"=>"", "id_modul"=>"");
			$aksi 	= "Tambah";
		}
		
		echo'<h3 class="page-header"><b>'.$aksi.' Halaman</b> </h3>';	
		if($aksi=="Tambah" and $_SESSION['leveluser']!="admin"){
			header('location:'.$link);
		}else{
			buka_form($link, $data['id_post'], strtolower($aksi));
				buat_textbox("Judul Halaman", "judul", $data['judul'], 10);
				buat_textarea("Isi Halaman", "isi", $data['isi'], "richtext");
				buat_imagepicker("Gambar", "gambar", $data['gambar']);
				
				$konten = $mysqli->query("SELECT * FROM rc_modul WHERE konten='Y' AND aktif='Y'");
				$list = array();
				$list[] = array('val'=>'0', 'cap'=>'Tidak Ada');
				while($kt = $konten->fetch_array()){
					$list[] = array('val'=>$kt['id_modul'], 'cap'=>$kt['judul']);
				}
				buat_combobox("Konten Modul", "konten", $list, $data['id_modul']);
				// ===============
				$kon = array('publish','konsep');
				$arr_kat = explode(",", $data['status_post']);
				$list = array();
				foreach($kon as $konsep){
					$arr_kon[]= $konsep;
					$check = (array_search($konsep, $arr_kat) === false) ? "" : "checked";
					$list[] = array("val"=>$konsep, "cap"=>$konsep, "check"=>$check);
				}
				buat_radio("Status Post", "konsep", $list);
				// echo $link;
			tutup_form($link);
		}
	break;	
	

	case "action":
		$judul		= addslashes($_POST['judul']);
		$judul_seo 	= convert_seo($_POST['judul']);
		$isi		= addslashes($_POST['isi']);
		$user		= $_SESSION['iduser'];
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_post SET
				judul 		= '$judul',
				judul_seo 	= '$judul_seo',
				isi			= '$isi',
				hari		= '$hari_ini',
				tanggal		= '$tanggal',
				jam			= '$jam',
				id_user		= '$user',
				id_modul	= '$_POST[konten]',
				gambar 		= '$_POST[gambar]',
				status_post = '$_POST[konsep]',
				jenis_post	= 'halaman'
			");

		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_post SET
				judul 		= '$judul',
				judul_seo 	= '$judul_seo',
				isi			= '$isi',
				hari		= '$hari_ini',
				tanggal		= '$tanggal',
				jam			= '$jam',
				id_user		= '$user',
				id_modul	= '$_POST[konten]',
				gambar 		= '$_POST[gambar]',
				status_post = '$_POST[konsep]'
			WHERE id_post='$_POST[id]'");

			echo "UPDATE rc_post SET
			judul 		= '$judul',
			judul_seo 	= '$judul_seo',
			isi			= '$isi',
			hari		= '$hari_ini',
			tanggal		= '$tanggal',
			jam			= '$jam',
			id_user		= '$user',
			id_modul	= '$_POST[konten]',
			gambar 		= '$_POST[gambar]',
			status_post = '$_POST[konsep]'
		WHERE id_post='$_POST[id]'";
		}

		header('location:'.$link);
	break;
	

	case "delete":
		if($_SESSION['leveluser']=="admin"){
			$mysqli->query("DELETE FROM rc_post WHERE id_post='$_GET[id]'");
		}
		header('location:'.$link);
	break;
	
}
?>

berikutnya kita akan membuat sebuah komentar.php file ini berfungsi untuk manajement komentar pada website kita.

<script type="text/javascript" src="../plugin/tinymce/tinymce.min.js"></script>
<script type="text/javascript" src="js/tinymce_config.js"></script>

<?php
if(!defined("INDEX")) header('location: ../index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=komentar";
switch($show){


	default:
		echo '<h3 class="page-header"><b>Daftar Komentar</b></h3>';
			
		buka_tabel(array("Author", "Komentar", "Artikel"));
		$no = 1;
		$query = $mysqli->query("SELECT * FROM rc_komentar ORDER BY id_komentar desc");
		while($data = $query->fetch_array()){
			$artikel = $mysqli->query("SELECT * FROM artikel where id_artikel='$data[id_artikel]'");
			$atk = $artikel->fetch_array();
			
			$tanggal = tgl_indonesia($data['tanggal']);
			if($data['dibaca'] == 'N'){
				$author = '<a href="mailto:'.$data['email'].'"><b>'.$data['nama'].'</b></a>';
				$komentar = '<small class="text-muted">'.$tanggal.'</small><br/><p><b>'.$data['komentar'].'</b></p>';
			}else{
				$author = '<a href="mailto:'.$data['email'].'">'.$data['nama'].'</a>';
				$komentar = '<small class="text-muted">'.$tanggal.'</small><br/><p>'.$data['komentar'].'</p>';
			}
			
			$artikel = '<a href="../artikel/'.$atk['id_artikel'].'/'.$atk['judul_seo'].'" target="blank">'.$atk['judul'].'</a>';
			
			isi_tabel($no, array($author, $komentar, $artikel), $link, $data['id_komentar']);
			$no++;
		} 
		tutup_tabel();
		
	break;
	

	case "form":
			$mysqli->query("UPDATE rc_komentar SET dibaca='Y' WHERE id_komentar='$_GET[id]'");
			$query 	= $mysqli->query("SELECT * FROM rc_komentar WHERE id_komentar='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
				
		echo'<h3 class="page-header"><b>'.$aksi.' Komentar</b> </h3>';	
		
		buka_form($link, $data['id_komentar'], strtolower($aksi));
			buat_textbox("Nama", "nama", $data['nama']);
			buat_textbox("Email", "email", $data['email']);
			buat_textarea("Isi Komentar", "komentar", $data['komentar'], "richtext");
		tutup_form($link);	
	break;	
	

	case "action":
		$nama			= addslashes($_POST['nama']);
		$komentar		= addslashes($_POST['komentar']);
	
			$mysqli->query("UPDATE rc_komentar SET
				nama 		= '$nama',
				email		= '$_POST[email]',
				komentar	= '$komentar',
				tanggal		= '$tanggal'
			WHERE id_komentar='$_POST[id]'");

		header('location:'.$link);
	break;
	

	case "delete":
		$mysqli->query("DELETE FROM rc_komentar WHERE id_komentar='$_GET[id]'");
		header('location:'.$link);
	break;
}
?>

sebuah website memerlukan manajement media, baik itu berupa file dokumen, video ataupun foto. Disini akan kita buat pada media.php. yang mana media ini kita menggunakan plugin yang namanya filemanager.

tools tersedia pada link di atas.

media.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');

echo'<h3 class="page-header"><b>Media</b></h3>
	<iframe src="../plugin/filemanager/dialog.php" width="100%" height="70%" style="border: 0;"></iframe>';

?>

berikutnya, kita akan membuat sebuah manajement pengguna, hal ini dimuat pada script user.php

<?php
if(!defined("INDEX")) header('location: ../index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=user";
switch($show){

	//Menampilkan data
	default:
		if($_SESSION['leveluser']=="admin"){
			echo '<h3 class="page-header"><b>Daftar User</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
			
			buka_tabel(array("Nama Lengkap", "Email", "Username", "Level"));
			$no = 1;
			$query = $mysqli->query("SELECT * FROM rc_user ORDER BY id_user");
			while($data = $query->fetch_array()){
				if($data['level']=="admin") isi_tabel($no, array($data['nama_lengkap'], $data['email'], $data['username'], $data['level']), $link, $data['id_user'], true, false);
				else isi_tabel($no, array($data['nama_lengkap'], $data['email'], $data['username'], $data['level']), $link, $data['id_user']);
						
				$no++;
			} 
			tutup_tabel();
		}else{
			$id_user = $_SESSION['iduser'];
			$query 	= $mysqli->query("SELECT * FROM rc_user WHERE id_user='$id_user'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
			
			echo'<h3 class="page-header"><b>'.$aksi.' User</b> </h3>';	
		
			buka_form($link, $id_user, strtolower($aksi));
				buat_textbox("Nama Lengkap", "nama_lengkap", $data['nama_lengkap']);
				buat_textbox("Email", "email", $data['email']);;
				buat_textbox("Username", "username", $data['username']);;
				buat_textbox("Password", "password", "", 4, "password");
			tutup_form($link);
		}
	break;
	
	//Menampilkan form input dan edit data
	case "form":
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_user WHERE id_user='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
		}else{
			$data = array("id_user"=>"", "nama_lengkap"=>"", "email"=>"", "username"=>"");
			$aksi 	= "Tambah";
		}
		
		echo'<h3 class="page-header"><b>'.$aksi.' User</b> </h3>';	
		
		buka_form($link, $data['id_user'], strtolower($aksi));
			buat_textbox("Nama Lengkap", "nama_lengkap", $data['nama_lengkap']);
			buat_textbox("Email", "email", $data['email']);;
			buat_textbox("Username", "username", $data['username']);;
			buat_textbox("Password", "password", "", 4, "password");
		tutup_form($link);	
	break;	
	
	//Menyisipkan atau mengedit data di database
	case "action":
		$password = md5($_POST['password']);
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_user SET
				nama_lengkap 	= '$_POST[nama_lengkap]',				
				email	 		= '$_POST[email]',				
				username	 	= '$_POST[username]',				
				password	 	= '$password',
				level			= 'author'
			");
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_user SET
				nama_lengkap 	= '$_POST[nama_lengkap]',				
				email	 		= '$_POST[email]',				
				username	 	= '$_POST[username]'	
			WHERE id_user='$_POST[id]'");
			
			if($_POST['password']!="") $mysqli->query("UPDATE rc_user SET	password = '$password' WHERE id_user='$_POST[id]'");
		}
		header('location:'.$link);
	break;
	
	//Menghapus data di database
	case "delete":
		$query 	= $mysqli->query("SELECT * FROM rc_user WHERE id_user='$_GET[id]'");
		$data	= $query->fetch_array();
		if($_SESSION['leveluser']=="admin" and $data['level']!="admin"){
			$mysqli->query("DELETE FROM rc_user WHERE id_user='$_GET[id]'");
		}
		header('location:'.$link);
	break;
}
?>

berikutnya kita juga memerlukan modul yang dapat kita install ataupun uinstall, modul ini dapat menjadi pelengkap dari website yang akan kita buat pada CMS ini.

modul.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');
	
$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=modul";
switch($show){


	default:
		echo '<h3 class="page-header"><b>Daftar Modul</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
		
		buka_tabel(array("Judul", "Aktif"));
		$no = 1;
		$query = $mysqli->query("SELECT * FROM rc_modul ORDER BY aktif");
		while($data = $query->fetch_array()){
			if($data['aktif']=='Y') $aktif = '<a href="'.$link.'&show=deactivate&id='.$data['id_modul'].'" style="color: green"><i class="glyphicon glyphicon-ok-circle"></i></a>';
			else $aktif = '<a href="'.$link.'&show=activate&id='.$data['id_modul'].'" style="color: red"><i class="glyphicon glyphicon-remove-circle"></i></a>';
			
			isi_tabel($no, array($data['judul'], $aktif), $link, $data['id_modul']);
			$no++;
		} 
		tutup_tabel();
		
	break;

	case "form":	
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_modul WHERE id_modul='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
		}else{
			$data = array("id_modul"=>"", "judul"=>"");
			$aksi 	= "Tambah";
		}
		echo'<h3 class="page-header"><b>'.$aksi.' Modul</b> </h3>';	
		
		buka_form($link, $data['id_modul'], strtolower($aksi));
			buat_textbox("Judul", "judul", $data['judul']);
			if($aksi=="Tambah") buat_textbox("File", "file", "", 4, "file");
		tutup_form($link);	
	break;	
	

	case "action":	
		if($_POST['aksi'] == "tambah"){
			
			$filename = $_FILES["file"]["name"];
			$source = $_FILES["file"]["tmp_name"];
			$type = $_FILES["file"]["type"];
			// echo $filename;
			$nama = explode('.', $filename);
			// echo $nama[1];
			if($nama[1] != "zip"){
				echo'<script>
						window.alert("File yang diupload tidak bertipe .zip. Silakan di ulang");
						window.location.href=history.back();
					</script>';
			}else{
				include "../library/function_unzip.php";
				unzip_file($filename, $source, "../module/");
				$mysqli->query("INSERT INTO rc_modul SET
					judul 		= '$_POST[judul]',
					folder 		= '$nama[0]',
					aktif		= 'N'
				");				
				header('location:'.$link);
			}
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_modul SET
				judul 		= '$_POST[judul]'
			WHERE id_modul='$_POST[id]'");			
			header('location:'.$link);
		}
	break;
	

	case "delete":
		$query 	= $mysqli->query("SELECT * FROM rc_modul WHERE id_modul='$_GET[id]'");
		$data	= $query->fetch_array();
		
		if(file_exists("../module/$data[folder]/function.php")){
			include "../module/$data[folder]/function.php";
			hapus_modul();
		}
		
		include "../library/function_remove.php";
		hapus_folder("../module/$data[folder]");
		
		$mysqli->query("DELETE FROM rc_modul WHERE id_modul='$_GET[id]'");
		header('location:'.$link);
	break;
		

	case "activate":	
		$query 	= $mysqli->query("SELECT * FROM rc_modul WHERE id_modul='$_GET[id]'");
		$data	= $query->fetch_array();
		
		$menu = (file_exists("../module/$data[folder]/menu.php")) ? 'Y' : 'N';
		$konten = (file_exists("../module/$data[folder]/content.php")) ? 'Y' : 'N';
		$widget = (file_exists("../module/$data[folder]/widget.php")) ? 'Y' : 'N';
		
		if(file_exists("../module/$data[folder]/function.php")){
			include "../module/$data[folder]/function.php";
			aktifkan_modul();
		}
		
		$mysqli->query("UPDATE rc_modul SET 
			aktif	= 'Y',
			menu	= '$menu',
			konten	= '$konten',
			widget  = '$widget'
		WHERE id_modul='$_GET[id]'");
		header('location:'.$link);
	break;
	
	
	case "deactivate":
		$mysqli->query("UPDATE rc_modul SET aktif='N' WHERE id_modul='$_GET[id]'");
		header('location:'.$link);
	break;
}
?>

berikutnya kita membuat sebuah pengaturan tampilan pada website, di sini dapat berupa tema yang kita gunakan pada website, tema ini dapat kita install ataupun uinstall.

template.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');
	
$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=template";
switch($show){


	default:
		echo '<h3 class="page-header"><b>Daftar Template</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
		
		buka_tabel(array("Preview", "Judul", "Aktif"));
		$no = 1;
		$query = $mysqli->query("SELECT * FROM rc_template ORDER BY aktif");
		while($data = $query->fetch_array()){
			if($data['aktif']=='Y') $aktif = '<span  style="color: green"><i class="glyphicon glyphicon-ok-circle"></i></span>';
			else $aktif = '<a href="'.$link.'&show=activate&id='.$data['id_template'].'" style="color: red"><i class="glyphicon glyphicon-remove-circle"></i></a>';
			
			if(file_exists("../template/$data[folder]/preview.png")) $gambar = "<img src='../template/$data[folder]/preview.png' width='200'>";
			else $gambar = "<img src='images/blank.png' width='200'>";
			
			if($data['aktif']=="Y") isi_tabel($no, array($gambar, $data['judul'], $aktif), $link, $data['id_template'], true, false);
			else isi_tabel($no, array($gambar, $data['judul'], $aktif), $link, $data['id_template']);
			$no++;
		} 
		tutup_tabel();
	break;

	case "form":		
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_template WHERE id_template='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
		}else{
			$data = array("id_template"=>"", "judul"=>"");
			$aksi 	= "Tambah";
		}
		echo'<h3 class="page-header"><b>'.$aksi.' Template</b> </h3>';	
		
		buka_form($link, $data['id_template'], strtolower($aksi));
			buat_textbox("Judul", "judul", $data['judul']);
			if($aksi == "Tambah") buat_textbox("File", "file", "", 4, "file");
		tutup_form($link);	
	break;	

	case "action":
		if($_POST['aksi'] == "tambah"){
			$filename = $_FILES["file"]["name"];
			$source = $_FILES["file"]["tmp_name"];
			$type = $_FILES["file"]["type"];
			
			$nama = explode('.', $filename);
			if($nama[1] != "zip"){
				echo'<script>
						window.alert("File yang diupload tidak bertipe .zip. Silakan di ulang");
						window.location.href=history.back();
					</script>';
			}else{
				include"../library/function_unzip.php";
				unzip_file($filename, $source, "../template/");
				$mysqli->query("INSERT INTO rc_template SET
					judul 		= '$_POST[judul]',
					folder 		= '$nama[0]',
					aktif		= 'N'
				");
				header('location:'.$link);
			}
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_template SET
				judul 		= '$_POST[judul]'
			WHERE id_template='$_POST[id]'");
		header('location:'.$link);
		}
	break;
	
	case "delete":		
		$query 	= $mysqli->query("SELECT * FROM rc_template WHERE id_template='$_GET[id]'");
		$data	= $query->fetch_array();
		
		include "../library/function_remove.php";
		hapus_folder("../template/$data[folder]");
		
		$mysqli->query("DELETE FROM rc_template WHERE id_template='$_GET[id]'");
		header('location:'.$link);
	break;
	

	case "activate":						
		$mysqli->query("UPDATE rc_template SET aktif='N'");
		$mysqli->query("UPDATE rc_template SET aktif='Y' WHERE id_template='$_GET[id]'");
		header('location:'.$link);
	break;
	
}
?>

berikutnya adalah pengaturan menu yang akan kita gunakan pada website, pengaturan ini terletak pada file menu.php

<script type="text/javascript" src="js/menu.js"></script>
<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=menu";
switch($show){


	default:
		
		$kategori = isset($_REQUEST['kategori']) ? $_REQUEST['kategori'] : "main";
		echo '<h3 class="page-header"><b>Daftar Menu</b>
				<a href="'.$link.'&show=form&kategori='.$kategori.'" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah 
				</a>
			</h3>';
		

		echo'<nav class="nav nav-tabs" style="margin-bottom: 20px">';
				$list = array();
				$list[] = array("val"=>"main", "cap"=>"Main Menu");
				$list[] = array("val"=>"secondary", "cap"=>"Secondary Menu");
				
				$menu = $mysqli->query("SELECT * FROM rc_widget WHERE tipe='menu'");
				while($mn = $menu->fetch_array()){
					$list[] = array("val"=>$mn['id_widget'], "cap"=>$mn['judul']);
				}
								
				foreach($list as $ls){
					$class = $ls['val']==$kategori ? 'class="active"' : '';
					echo'<li '.$class.'><a href="'.$link.'&kategori='.$ls['val'].'">'.$ls['cap'].'</a></li>';
				}	
		echo'</nav>';	
		

		function tampil_link($data){
			global $mysqli;
			if($data['jenis_link']=="kategori"){
				$kategori = $mysqli->query("select * from rc_kategori where id_kategori='$data[link]'");
				$kat = $kategori->fetch_array();
				$tampil_link = "Kategori: $kat[kategori]";
			}elseif($data['jenis_link']=="halaman"){
				$halaman = $mysqli->query("select * from rc_post where id_post='$data[link]'");
				$hal = $halaman->fetch_array();
				$tampil_link = "Halaman: $hal[judul]";
			}else{
				$tampil_link = "URL: $data[link]";
			}
			return $tampil_link;
		}
		
		buka_tabel(array("Judul", "Link", "Urutan"));
		$no = 1;
		if(isset($_REQUEST['kategori'])) $query = $mysqli->query("SELECT * FROM rc_menu WHERE induk='0' and kategori_menu='$_REQUEST[kategori]' ORDER BY urut");
		else $query = $mysqli->query("SELECT * FROM rc_menu WHERE induk='0' and kategori_menu='main' ORDER BY urut");
		
		while($data = $query->fetch_array()){
			isi_tabel($no, array($data['judul'], tampil_link($data), $data['urut']), $link, $data['id_menu']);
						
			$sub = $mysqli->query("SELECT * FROM rc_menu WHERE induk='$data[id_menu]' ORDER BY urut");
			while($datasub = $sub->fetch_array()){
				isi_tabel($no, array("--- ".$datasub['judul'], tampil_link($datasub), $datasub['urut']), $link, $datasub['id_menu']);
				$no++;
			}
			$no++;
		} 
		tutup_tabel();
		
	break;

	case "form":
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_menu WHERE id_menu='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
			$kategori_menu = $data['kategori_menu'];
		}else{
			$data = array("id_menu"=>"", "judul"=>"", "induk"=>"", "jenis_link"=>"", "link"=>"", "urut"=>"");
			$aksi 	= "Tambah";
			$kategori_menu = $_GET['kategori'];
		}
		
		echo'<h4 class="page-header"><b>'.$aksi.' Menu</b> </h4>';	
		
		buka_form($link.'&kategori='.$kategori_menu, $data['id_menu'], strtolower($aksi));
			buat_textbox("Judul Menu", "judul", $data['judul']);
			
			$menu = $mysqli->query("SELECT * FROM rc_menu WHERE induk='0' and kategori_menu='$kategori_menu'");
			$list = array();
			$list[] = array('val'=>'', 'cap'=>'Tidak Ada');
			while($mn = $menu->fetch_array()){
				$list[] = array('val'=>$mn['id_menu'], 'cap'=>$mn['judul']);
			}
			buat_combobox("Induk Menu", "induk", $list, $data['induk']);	
			
			$list = array();
			$list[] = array("val"=>"halaman", "cap"=>"Halaman");
			$list[] = array("val"=>"kategori", "cap"=>"Kategori");
			$list[] = array("val"=>"url", "cap"=>"URL");
			buat_combobox("Jenis Link", "jenis_link", $list, $data['jenis_link']);
			
			$list = array();
			$halaman = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='halaman'");
			while($hal = $halaman->fetch_array()){
				$list[] = array("val"=>$hal['id_post'], "cap"=>$hal['judul']);
			}
			buat_combobox("Link Halaman", "link_halaman", $list, $data['link']);
			
			$list = array();
			$kategori = $mysqli->query("SELECT * FROM rc_kategori");
			while($kat = $kategori->fetch_array()){
				$list[] = array("val"=>$kat['id_kategori'], "cap"=>$kat['kategori']);
			}
			buat_combobox("Link Kategori", "link_kategori", $list, $data['link']);
			
			buat_textbox("Link URL", "link_url", $data['link']);
			
			$list = array();
			for($i=1; $i<=20; $i++){
				$list[] = array("val"=>$i, "cap"=>$i);
			}
			buat_combobox("Urutan", "urut", $list, $data['urut'], 1);
			
		tutup_form($link.'&kategori='.$kategori_menu);	
	break;	
	
	case "action":
		if($_POST['jenis_link']=="halaman") $datalink = $_POST['link_halaman'];
		elseif($_POST['jenis_link']=="kategori") $datalink = $_POST['link_kategori'];
		else $datalink = $_POST['link_url'];
		
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_menu SET
				judul 		  = '$_POST[judul]',				
				induk 		  = '$_POST[induk]',				
				kategori_menu = '$_GET[kategori]',				
				jenis_link    = '$_POST[jenis_link]',				
				link	 	  = '$datalink',				
				urut	 	  = '$_POST[urut]'				
			");
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_menu SET
				judul 		  = '$_POST[judul]',				
				induk 		  = '$_POST[induk]',				
				kategori_menu = '$_GET[kategori]',				
				jenis_link    = '$_POST[jenis_link]',				
				link	 	  = '$datalink',				
				urut	 	  = '$_POST[urut]'	
			WHERE id_menu='$_POST[id]'");
		}
		header('location:'.$link.'&kategori='.$_GET['kategori']);
	break;
	
	case "delete":
		$query 	= $mysqli->query("SELECT * FROM rc_menu WHERE id_menu='$_GET[id]'");
		$data	= $query->fetch_array();
		$mysqli->query("DELETE FROM rc_menu WHERE id_menu='$_GET[id]'");
		header('location:'.$link.'&kategori='.$data['kategori_menu']);
	break;
}
?>

website tidak terasa lengkap jika tidak ada widget. Berikutnya kita akan membuat sebuah widget pada website. skrip untuk mengatur ini terletak pada

widget.php

<script type="text/javascript" src="js/widget.js"></script>
<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=widget";
switch($show){

	default:
		echo '<h3 class="page-header"><b>Daftar Widget</b>
				<a href="'.$link.'&show=form" class="btn btn-primary btn-sm pull-right top-button">
					<i class="glyphicon glyphicon-plus-sign"></i> Tambah
				</a>
			</h3>';
		
		buka_tabel(array("Judul", "Tipe",  "Posisi", "Urut", "Aktif"));
		$no = 1;		
		$query = $mysqli->query("SELECT * FROM rc_widget ORDER BY posisi,aktif,urut");	
		while($data = $query->fetch_array()){
			if($data['aktif']=='Y') $aktif = '<a href="'.$link.'&show=deactivate&id='.$data['id_widget'].'" style="color: green"><i class="glyphicon glyphicon-ok-circle"></i></a>';
			else $aktif = '<a href="'.$link.'&show=activate&id='.$data['id_widget'].'" style="color: red"><i class="glyphicon glyphicon-remove-circle"></i></a>';
			
			isi_tabel($no, array($data['judul'], $data['tipe'], $data['posisi'], $data['urut'], $aktif), $link, $data['id_widget']);
			$no++;
		} 
		tutup_tabel();
	break;

	case "form":
		if(isset($_GET['id'])){
			$query 	= $mysqli->query("SELECT * FROM rc_widget WHERE id_widget='$_GET[id]'");
			$data	= $query->fetch_array();
			$aksi 	= "Edit";
		}else{
			$data = array("id_widget"=>"", "judul"=>"", "tipe"=>"", "posisi"=>"", "konten"=>"", "urut"=>"");
			$aksi 	= "Tambah";
		}
		
		echo'<h3 class="page-header"><b>'.$aksi.' Widget</b> </h3>';	
		
		buka_form($link, $data['id_widget'], strtolower($aksi));
			buat_textbox("Judul", "judul", $data['judul']);
			
			$list = array();
			$list[] = array("val"=>"terbaru", "cap"=>"Artikel Terbaru");
			$list[] = array("val"=>"populer", "cap"=>"Artikel Populer");
			$list[] = array("val"=>"kategori", "cap"=>"Kategori Artikel");
			$list[] = array("val"=>"modul", "cap"=>"Modul");
			$list[] = array("val"=>"menu", "cap"=>"Menu");
			$list[] = array("val"=>"skrip", "cap"=>"Skrip");
			buat_combobox("Tipe widget", "tipe", $list, $data['tipe']);
			
			$list = array();
			$widget = $mysqli->query("SELECT * FROM rc_modul where widget='Y' AND aktif='Y'");
			while($sd = $widget->fetch_array()){
				$list[] = array("val"=>$sd['id_modul'], "cap"=>$sd['judul']);
			}
			buat_combobox("Modul Konten", "modul", $list, $data['konten']);
			
			buat_textarea("Skrip Konten", "skrip", $data['konten']);
			
			$list = array();
			for($i=1; $i<=10; $i++){
				$list[] = array("val"=>$i, "cap"=>$i);
			}
			buat_combobox("Posisi", "posisi", $list, $data['posisi'], 1);
			
			$list = array();
			for($i=1; $i<=20; $i++){
				$list[] = array("val"=>$i, "cap"=>$i);
			}
			buat_combobox("Urutan", "urut", $list, $data['urut'], 1);
		tutup_form($link);	
	break;	

	case "action":
		if($_POST['tipe']=="modul") $konten = $_POST['modul'];
		elseif($_POST['tipe']=="skrip") $konten = addslashes($_POST['skrip']);
		else $konten = "";
		
		if($_POST['aksi'] == "tambah"){
			$mysqli->query("INSERT INTO rc_widget SET
				judul 		  = '$_POST[judul]',				
				tipe 		  = '$_POST[tipe]',				
				konten		  = '$konten',				
				posisi		  = '$_POST[posisi]',					
				urut	 	  = '$_POST[urut]'				
			");
		}elseif($_POST['aksi'] == "edit"){
			$mysqli->query("UPDATE rc_widget SET
				judul 		  = '$_POST[judul]',				
				tipe 		  = '$_POST[tipe]',				
				konten		  = '$konten',				
				posisi		  = '$_POST[posisi]',					
				urut	 	  = '$_POST[urut]'		
			WHERE id_widget='$_POST[id]'");
		}
		header('location:'.$link);
	break;

	case "delete":
		$mysqli->query("DELETE FROM rc_widget WHERE id_widget='$_GET[id]'");
		header('location:'.$link);
	break;
	

	case "activate":			
		$mysqli->query("UPDATE rc_widget SET aktif='Y' WHERE id_widget='$_GET[id]'");
		header('location:'.$link);
	break;
	

	case "deactivate":
		$mysqli->query("UPDATE rc_widget SET aktif='N' WHERE id_widget='$_GET[id]'");
		header('location:'.$link);
	break;
}
?>

berikutnya kita akan membuat sebuah settingan pada website, settingan ini yang mengatur dari nama, deskripsi, URL dan lainnya pada website. Settingan ini mimin bagi dua, pertama settingan umum dan settingan pada permalink website.

hal pertama yang akan mimin masukkan di sini adalah settingan umum yang terletak pada fule setting.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');
		
$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=setting";
switch($show){


	default:
		echo'<h4 class="page-header"><b> Setting Website </b> </h4>';	
		function dapatkan_nilai($parameter){
			global $mysqli;
			$query 	= $mysqli->query("SELECT * FROM rc_setting WHERE parameter='$parameter'");
			$data	= $query->fetch_array();
			return $data['nilai'];
		}
		buka_form($link, "", "");
			buat_textbox("Judul Website", "judul", dapatkan_nilai("judul"));
			buat_textbox("Deskripsi", "deskripsi", dapatkan_nilai("deskripsi"), 8);
			buat_textbox("URL Website", "url", dapatkan_nilai("url"));
			buat_textbox("Folder Website", "folder", dapatkan_nilai("folder"));
			buat_imagepicker("Ikon Website", "icon", dapatkan_nilai("icon"));
			buat_textarea("Keyword", "keyword", dapatkan_nilai("keyword"));
			
			$list = array();
			$list[] =  array("val"=>0, "cap"=>"Artikel Terbaru");
			$query = $mysqli->query("SELECT * FROM rc_post WHERE jenis_post='halaman' AND status_post='publish'");
			while($data=$query->fetch_array()){
				$list[] = array("val"=>$data['id_post'], "cap"=>$data['judul']);
			}
			buat_combobox("Homepage", "homepage", $list, dapatkan_nilai("homepage"));
		tutup_form($link);	
		
	break;
	

	case "action":	
		$parameter = array("judul", "deskripsi", "url", "folder", "icon", "keyword", "homepage");
		foreach($parameter as $param){
			$mysqli->query("UPDATE rc_setting SET nilai='$_POST[$param]' WHERE parameter='$param'");
			echo "UPDATE rc_setting SET nilai='$_POST[$param]' WHERE parameter='$param'";
		}
		header('location:'.$link);
	break;

}
?>

berikutnya kita akan membuat settingan untuk permalink website pada file permalink.php.

permalink yang akan kita buat ada dua macam yaitu link/post dan link/date/post

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');
		
$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=permalink";
switch($show){


	default:
		echo'<h4 class="page-header"><b> Setting Website </b> </h4>';	
		function dapatkan_nilai($parameter){
			global $mysqli;
			$query 	= $mysqli->query("SELECT * FROM rc_setting WHERE parameter='$parameter'");
			$data	= $query->fetch_array();
			return $data['nilai'];
		}


        buka_form($link, "", "");
                $perma = array('postname','date/postname');
				$arr_kat[] = dapatkan_nilai('permalink');

				$listPermalink = array();
				foreach($perma as $p){

					$check = (array_search($p, $arr_kat) === false) ? "" : "checked";
					$listPermalink[] = array("val"=>$p, "cap"=>$p, "check"=>$check);
				}
		buat_radio("Prmalink", "permalink", $listPermalink,);
		
		tutup_form($link);	
		
	break;

	case "action":	
		$parameter = array("permalink");
		foreach($parameter as $param){
			$mysqli->query("UPDATE rc_setting SET nilai='$_POST[$param]' WHERE parameter='$param'");

		}
		header('location:'.$link);
	break;

}
?>

berikutnya fitur yang sangat penting yaitu adalah fitur backup dan restore. Fitur ini dimuat pada file backuprestore.php

<?php
if(!defined("INDEX")) header('location: ../index.php');
if($_SESSION['leveluser']!="admin") header('location: index.php');

$show = isset($_GET['show']) ? $_GET['show'] : "";
$link = "?content=backuprestore";
switch($show){


	default:
		echo'<h4 class="page-header"><b> Backup </b> </h4>';	
		echo'<div class="alert alert-info">Lakukan backup database secara teratur agar data website tetap aman!<br/><br/>
			<a href="'.$link.'&show=backup" class="btn btn-success"> <i class="glyphicon glyphicon-save"></i> Backup Database</a>
			</div>';
			
		echo'<h4 class="page-header"><b> Restore </b> </h4>';
		echo'<div class="alert alert-warning">Pastikan backup database terlebih dahulu sebelum melakukan restore!<br/><br/>
			<form method="post" action="'.$link.'&show=restore" enctype="multipart/form-data">
				<input type="file" name="filesql"> <br/>
				<button type="submit" class="btn btn-danger"> <i class="glyphicon glyphicon-open"></i> Restore Database</button>
			</form>
			</div>';
	break;
	case "backup":

		$array_table = array();
		$data_table = $mysqli->query("SHOW TABLES"); 
		while($row = $data_table->fetch_array()) {
			$array_table[] = $row[0];
		}
		$data_table->free();

		$isi_file = "";
		foreach($array_table as $table){
		

			$isi_file .= "DROP TABLE IF EXISTS ".$table.";";
					

			$str_create = $mysqli->query("SHOW CREATE TABLE ".$table);
			$row_create = $str_create->fetch_row();
			$isi_file.= "\n\n".$row_create[1].";\n\n";
			$str_create->free();


			$data = $mysqli->query("SELECT * FROM ".$table);
			$fields_info = $data->fetch_fields();


			while($values = $data->fetch_assoc()) {
				$str_fields = '';
				$str_values = '';
				foreach ($fields_info as $field) {
					if($str_fields != '') $str_fields .= ',';
					$str_fields .= "`".$field->name."`";
			
					if($str_values != '') $str_values .= ',';
					$data_values = str_replace("'", "''", $values[$field->name]);

					$data_values = mb_ereg_replace("\n", "\\n", $data_values);
					$str_values .= "'".$data_values."'";
				}
				


				$isi_file .= "INSERT INTO ".$table." (".$str_fields.") VALUES (".$str_values.");\n";
			}
			$isi_file .= "\n\n\n";
			$data->free();

		}
		

		$file = 'backup/backup_'.date('Y-m-d_h_i_s').'.sql';	
		$handle = fopen($file,'w+');
		fwrite($handle, $isi_file);
		fclose($handle);
		

		header('Content-Description: File Transfer');
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename='.basename($file));
		header('Content-Transfer-Encoding: binary');
		header('Expires: 0');
		header('Cache-Control: private');
		header('Pragma: private');
		header('Content-Length: '.filesize($file));
		ob_clean();
		flush();
		readfile($file);
		exit;
	break;
	
	case "restore":
		$nama_file 		= $_FILES['filesql']['name'];
		$lokasi_file 	= $_FILES['filesql']['tmp_name'];
		
		$alamat_file 	= "backup/".$nama_file;		
		if(move_uploaded_file($lokasi_file , "backup/$nama_file")){
			$templine	= '';
			$lines		= file($alamat_file);

			foreach($lines as $line){
				if(substr($line, 0, 2) == '--' || $line == '') continue;
			 
				$templine .= $line;

				if(substr(trim($line), -1, 1) == ';'){
					$mysqli->query($templine) or die($mysql->error);
					$templine = '';
				}
			}
			echo '<script>
					window.alert("Database berhasil di-restore!");
					window.location.href = "'.$link.'";
				</script>';
		
		}else{
			echo '<script>
					window.alert("Restore database gagal!");
					window.location.href = "'.$link.'";
				</script>';
		}
	break;
}
?>

sampai sini dari sisi admin telah selesai kita buat, namun website masih belum bisa kita tampilkan ke pengguna, karena website belum memiliki sebuat tema/template untuk pengguna. Oleh karena itu, kita akan membuat sebuah template.

Seperti yang kita mau, tema dari CMS ini dapat kita pasang atau kita hapus. Oleh karena itu, kita akan membuat tema dengan nama mytempalte diluar dari CMS.

struktur dari tema seperti berikut.

kita akan membuat beberapa file yaitu, 404, artikel, footer, halaman, header, home, kategori dan pencarian dengan ekstensi *.php.

kita juga memerlukan folder css untuk menyimpan file *.css dan folder images untuk menyimpan beberapa gambar yang akan kita gunakan pada template.

404.php. file ini merupakan file otomatis terrah ke 404 jika post yang kita cari tidak ada.

<?php template_header(); ?>

<section class="container">
	<div class="row">
		<div class="col-md-8 main">
		<h1>Halaman Tidak Ditemukan</h1>
		<p>Halaman yang Anda cari tidak ditemukan. Silahkan cari artikel yang Anda inginkan pada form berikut!</p>

<?php form_pencarian(); ?>

		</div>
		<div class="col-md-4 sidebar">
			<div class="widget">
<?php 
$judul = '<h4 class="judul">{judul}</h4>';
$awal_konten = '<div class="konten">';
$akhir_konten = '</div>';
template_widget($judul, $awal_konten, $akhir_konten); 
?>
			</div>
		</div>
	</div>
</section>
<?php template_footer(); ?>
	

artikel.php. file ini berfungsi untuk menampilkan artikel yang kita buka

<?php template_header(); ?>

<section class="container">
	<div class="row">
		<div class="col-md-8 main">
		
<?php
$template_artikel = 
'<h3 class="page-header">{judul}</h3>
<small class="text-muted">{meta}</small><br>
 <img src="{gambar}" alt="{alt}"><br><br>
 <div class="konten-artikel">{konten}</div>';

template_artikel_detail($template_artikel);
?>

		</div>
		<div class="col-md-4 sidebar">
			<div class="widget">
<?php 
$judul = '<h4 class="judul">{judul}</h4>';
$awal_konten = '<div class="konten">';
$akhir_konten = '</div>';
 template_widget($judul, $awal_konten, $akhir_konten); 
?>
			</div>
		</div>
	</div>
</section>
<?php template_footer(); ?>
	

footer.php. file ini merupakan bagian kaki dari halaman website

<footer id="footer">
		<div class="container">
			<div class="row">
				<div class="col-md-12">
					<p class="text-center">Copyright &copy; Team Republiccode.</p>
				</div>
			</div>
		</div>
	</footer>
</body>
</html>

halaman.php, file ini berfungsi untuk menampilkan halaman yang kita tuju pada website.

<?php template_header(); ?>

<section class="container">
	<div class="row">
		<div class="col-md-8 main">
		
<?php
$template_halaman = 
'{breadcrumb}
 <h3 class="page-header">{judul}</h3>
 {gambar}<br><br>
 <div class="konten-halaman">{konten}</div>';
template_halaman($template_halaman, $_GET['id']);

?>

		</div>
		<div class="col-md-4 sidebar">
			<div class="widget">
<?php 
$judul = '<h4 class="judul">{judul}</h4>';
$awal_konten = '<div class="konten">';
$akhir_konten = '</div>';
template_widget($judul, $awal_konten, $akhir_konten); 
?>
			</div>
		</div>
	</div>
</section>
<?php template_footer(); ?>
	

header.php, file ini merupakan bagian kepala pada website, sama halnya dengan footer, file ini akan selalu ada di setiap halaman.

<!doctype html>
<html>
<head>

	<?php 
		$folder_template = web_info('url').'/'.folder_template();
		meta_header(); 
	?>
</head>
<body>
	<header id="header">
		<div class="container">
			<div class="row">
				<div class="col-md-4 col-xs-8">
					<img src="<?= $folder_template; ?>/images/logo.png" width="100%">
				</div>
				<div class="col-md-4 col-xs-1"></div>
				<div class="col-md-4 hidden-xs">
					<?php form_pencarian('Go'); ?>
				</div>
			</div>
		</div>
	</header>

	<nav id="nav">
		<div class="container">
			<div class="navbar navbar-default">
				<div class="navbar-header">
					<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
					</button>
				</div>
				<div id="navbar" class="navbar-collapse collapse">
					<ul class="nav navbar-nav">
						<?php template_menu("main"); ?>
					</ul>
				</div>
			</div>
		</div>
	</nav>
	

home.php, file ini akan mendadi halaman beranda default dari website.

<?php template_header(); ?>



<section class="container content">
	<div class="row">
		<div class="col-md-8 main">
		
<?php
if(web_info('homepage')==0){
	$template_artikel = 
	'<div class="row artikel">
		<div class="col-md-4">
			<img src="{gambar}">
		</div>
		<div class="col-md-8">
			<h3 class="judul"><a href="{link}">{judul}</a></h3>
			<small class="text-muted">{meta}</small>
			<div class="konten-artikel">{konten} ... <a href="{link}">More>></a></div>
		</div>
	</div><hr>';
	template_artikel($template_artikel, 5, 400);
}else{
	$template_halaman = 
	'<h3 class="page-header">{judul}</h3>
	 {gambar}<br><br>
	 <div class="konten-halaman">{konten}</div>';
	template_halaman($template_halaman, web_info('homepage'));
}
?>

		</div>
		<div class="col-md-4 sidebar">
			<div class="widget">
<?php 
$judul = '<h4 class="judul">{judul}</h4>';
$awal_konten = '<div class="konten">';
$akhir_konten = '</div>';
template_widget($judul, $awal_konten, $akhir_konten); 
?>
			</div>
		</div>
	</div>
</section>
<?php template_footer(); ?>
	

kategori.php, file ini berfungsi untuk menampilkan kategori – kategori yang ada pada website, dan beserta post yang terkait pada kategori yang ada.

<?php template_header(); ?>

<section class="container">
	<div class="row">
		<div class="col-md-8 main">
		
<?php
$template_artikel = 
'<div class="row artikel">
	<div class="col-md-4">
		<img src="{gambar}">
	</div>
	<div class="col-md-8">
		<h3 class="judul"><a href="{link}">{judul}</a></h3>
		<small class="text-muted">{meta}</small>
		<div class="konten-artikel">{konten} ... <a href="{link}">More>></a></div>
	</div>
</div><hr>';
template_kategori($template_artikel);
?>

		</div>
		<div class="col-md-4 sidebar">
			<div class="widget">
<?php 
$judul = '<h4 class="judul">{judul}</h4>';
$awal_konten = '<div class="konten">';
$akhir_konten = '</div>';
template_widget($judul, $awal_konten, $akhir_konten); 
?>
			</div>
		</div>
	</div>
</section>
<?php template_footer(); ?>
	

pencarian.php, file ini yang bertugas untuk mencari artike yang kita mau dengan menuliskan kata kunci pada bar pencarian.

<?php template_header(); ?>

<section class="container">
	<div class="row">
		<div class="col-md-8 main">
		
<?php
$template_artikel = 
'<div class="row artikel">
	<div class="col-md-4">
		<img src="{gambar}">
	</div>
	<div class="col-md-8">
		<h3 class="judul"><a href="{link}">{judul}</a></h3>
		<small class="text-muted">{meta}</small>
		<div class="konten-artikel">{konten} ... <a href="{link}">More>></a></div>
	</div>
</div><hr>';
template_pencarian($template_artikel);
?>

		</div>
		<div class="col-md-4 sidebar">
			<div class="widget">
<?php 
$judul = '<h4 class="judul">{judul}</h4>';
$awal_konten = '<div class="konten">';
$akhir_konten = '</div>';
template_widget($judul, $awal_konten, $akhir_konten); 
?>
			</div>
		</div>
	</div>
</section>
<?php template_footer(); ?>
	

berikutnya adalah *.css, file yang berfungsi untuk mengatur tampilan website, file ini diberinama dengan style.css yang diletakkan pada folder css.

/* ---------------------- HEADER ------------------------------ */
#header{
	 background: #fff;
	 padding: 10px 0;
}
#header .form-search{
	float: right;
	padding: 5px;
}
.form-search input{
	border-radius: 0;
}
.form-search button{
	background: #8224e3;
	border-radius: 0;
	border-color: #8224e3;
	color: #fff;
}

/* ---------------------- FOOTER ------------------------------ */
#footer{
	padding: 10px;
	margin-top: 20px;
	border-top: 1px solid #eee;
	color: #777;
}

/* ---------------------- NAV ------------------------------ */
#nav{
	background: #9240e4;
	margin-bottom: 20px;
}
.navbar{
	background: #8224e3;
	border: none;
	border-radius: 0;
	margin-bottom: 0;
}
.navbar-default .navbar-nav > li > a {
  color: #eee;
  border-bottom: 3px solid #350564;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
	border-bottom: 3px solid #fff;
}
.dropdown-menu{
	background: #8224e3;
	border-radius: 0;
}
.dropdown-menu > li> a{
	color: #eee;
}

/* ---------------------- SLIDESHOW ------------------------------ */
#slideshow{
	margin-top: -20px;
	background: #000;
	padding: 10px 0;
}

/* ---------------------- CONTENT ------------------------------ */
img{
	width: 100%;
}
h3.judul{
	margin-top: 0;
}
.artikel{
	padding-top: 20px;
	padding-bottom: 20px;
}

.breadcrumb{
	border-radius: 0;
}

/* ---------------------- WIDGET ------------------------------ */
.widget .judul{
	background:  #8224e3;
	color: #eee;
	padding: 10px;
}
.widget ul{
	padding: 0;
}
.widget li{
	list-style: none;
	margin: 0;
}
.widget li a{
	display: block;
	padding: 10px 0;
	border-bottom: 1px dotted #eee;
}
.widget li a:hover{
	text-decoration: none;
	background: #f7f7f7;
}

Agar kita dapat menggunakan template/tema yang kita buat, kalian dapat mencobanya menguploadnya pada bagian tampilan->template->tambah.

website belum selesai sempurna. Dalam membuat website ada hal yang perlu kita perhatikan, yaitu penggunaan .htaccess,index.php, robot.txt dan sitemap.xml.

file ini akan kita taruh pada bagian root

agar kita membuat website lebih aman dan kostum url, seperti yang kita terapkan pada permalink, pengaturan yang telah kita buat pada bagian admin, kita perlu mengatur pada bagian .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^sitemap\.xml/?$ sitemap.php

RewriteRule ^$ index.php [L]
RewriteRule ^home/([0-9]+)$ index.php?content=home&hal=$1 [L]
RewriteRule ^home/([0-9]+)/([0-9]+)/(.*)$ index.php?content=home&show=$1&id=$2 [L]
RewriteRule ^home/([0-9]+)/(.*)$ index.php?content=home&show=$1 [L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?seo=$1 [L]
</IfModule>


<IfModule mod_rewrite.c>
RewriteRule ^pencarian/([0-9]+)/(.*)$ index.php?content=pencarian&kata=$2&hal=$1 [L]
RewriteRule ^pencarian$ index.php?content=pencarian&kata=$1 [L]
</IfModule>




berikutnya index.php, yang akan kita gunakan sebagai penyaring pengguna yang memiliki otorisasi.

<?php
error_reporting();
ob_start();

include "library/config.php";
include "library/function_date.php";
include "library/function_antiinjection.php";
include "library/function_template.php";
$link = (isset($_GET['seo'])) ? $_GET['seo'] : "home";
$content 	= "";
// $kosong 	= true;
$page 		= array('home', 'artikel', 'halaman', 'kategori', 'pencarian');
// var_dump($link);

function querynumrow($query){
	global $mysqli;
	$artikel = mysqli_num_rows($mysqli->query($query));
	return $artikel;
}

// error_reporting(0);
// echo web_info('error');

// echo $link;

// print_r(end($arr_link));
if($link =='home' ){
$arr_link[0] =NULL;
$arr_link[1] =NULL;
$arr_link[2] =NULL;
$arr_link[3] =NULL;
}
else{

	$arr_link = explode ("/", $link);

	querypermalink($arr_link);
	$seo_link = end($arr_link);
	// var_dump($arr_link[0]);
}



if($link != "" && $link !='home'){
	
  $nilai = "SELECT id_post FROM rc_post WHERE ".querypermalink($arr_link)." AND jenis_post='post' AND status_post='publish'";
	if(querynumrow($nilai)>0){
				if(file_exists(folder_template().'/artikel.php')){
					$qartikel = $mysqli->query($nilai);
					$data = $qartikel->fetch_array();
					$_GET['id'] = $data['id_post'];
					include folder_template().'/artikel.php';
				}
	}else{
		$nilai = "SELECT * FROM rc_post WHERE ".querypermalink($arr_link)." AND jenis_post='halaman' AND status_post='publish'";
		if(querynumrow($nilai)>0){
			$qartikel = $mysqli->query($nilai);
			$data = $qartikel->fetch_array();
			$_GET['id'] = $data['id_post'];
			if(file_exists(folder_template().'/halaman.php')){
				include folder_template().'/halaman.php';
			}
		}else{
			if($arr_link[0] == "kategori"){
				$_GET['kategoriSeo'] = $arr_link[1]; 
				if(file_exists(folder_template().'/kategori.php')){
					include folder_template().'/kategori.php';
				}
			}elseif($arr_link[0] == "pencarian"){
				if(file_exists(folder_template().'/'.$arr_link[0].'.php')){
					include folder_template().'/'.$arr_link[0].'.php';
				}
			}elseif($arr_link[0] == "404"){
				include folder_template().'/404.php';
			}
			else{
				include folder_template().'/404.php';
			}
		}
	}
}else{
	if(file_exists(folder_template().'/home.php')){
			include folder_template().'/home.php';
		}
}


?>

pastikan robot crawel tidak mengindex bagian admin, oleh karena itu kita memerlukan membuat sebuah file robot.xtx agar memberitahu, bagian mana saja yang tidak boleh di kunjungi oleh robot crawel.

robot.txt

User-agent: *
Allow: /
Disallow: /admin

Sitemap: https://lik-website.com/sitemap.xml

berikutnya kita akan membuat sebuah sitemap.xml, sitemap.xml ini berfunsi sebagai peta situs website kita, memudahkan crawel untuk mengcrawel website kita.

sitemap.php

<?php
    header('Content-type: application/xml');

    include "library/config.php";
    include "library/function_template.php";
    $query = mysqli_query($mysqli,"SELECT * FROM rc_post WHERE status_post='publish'");

echo '<?xml version="1.0" encoding="UTF-8" ?>';

?>

<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">

    <url>
        <loc><?=web_info('url')?></loc>
        <lastmod>2010-04-20</lastmod>
    </url>

    <?php

    
    while($row = mysqli_fetch_assoc($query)) {
    $title = stripslashes($row['judul_seo']);
    $date = date("Y-m-d", strtotime($row['tanggal']));

    echo "

    <url>
        <loc>".web_info('url')."/".permalink(explode ("-", $row['tanggal'])).$title."</loc>
        <lastmod>".$date."</lastmod>
    </url>";

 } ?>

</urlset>

hasil website yang dibuat menggunakan CMS ini seperti berikut

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *