Artikel

Panduan menampilkan kategori dan sub kategori pada tema Apricot CMS

    Dibaca 9118 kali codeigniter CMS

Selamat datang lagi pada sesi tutorial tentang Apricot CMS.

 

Pada tutorial kali ini saya akan membagikan cara menampilkan kategori beserta sub kategori saat anda mendevelope tema untuk Apricot CMS

 

 

Perlu diketahui bahwa Apricot CMS mendukung unlimited sub kategori untuk kategori artikel. Dengan kata lain, ketika kamu membuat kategori, dibawahnya kamu bisa menambahkan sub-kategori , dan dibawah sub kategori tersebut, bisa kamu tambahkan sub-kategori lagi. Begitu seterusnya (unlimited).

 

 

Jika kamu sudah pernah pernah membaca referensi membuat tema pada Apricot CMS, kamu akan menemukan bahwa sudah tersedia variable umum bernama $kategori_artikel yang  memuat kategori dan tinggal kamu tampilkan. Namun,  variable tersebut hanya memuat 1 level (paling atas) kategori saja tanpa ada sub kategorinya.

 

 

Jika kamu membuat tema yang hanya menampilkan 1 level kategori saja, tentu kamu tidak perlu repot repot, dan cukup menggunakan variable $kategori_artikel saja.
Cara menggunakannya sederhana

 

foreach($kategori_artikel as $kategori){
$kategori['id'];
$kategori['nama'];
$kategori['slug'];
}

 

 

Nah, bagaimana jika kita ingin menampilkan kategorinya beserta sub kategorinya? Simak baik-baik artikel ini.


 

Untuk menampilkan semua sub kategori secara lengkap, kamu perlu memahami skema table databasenya

 

 

 

Setiap menu memiliki kolom id_kategori dan id_parent. Artinya menu yang memiliki id_parent n adalah sub dari kategori yang memiliki id_kategori n. Dan kategori yang memiliki id_parent 0 (nol) adalah kategori level paling atas.

 

 

Nah, tutorial kita kali ini adalah tutorial untuk menampilkan semua kategorinya beserta sub kategorinya didalam posisi yang seharusnya.
Untuk mencapai tujuan tersebut kita akan membuat sebuah Class dan memiliki sebuah fungsi yang nantinya akan dipanggil secara recursive.

 

 

Mari kita mulai:

 

 

1. Coba anda buat tema baru bernama tema "latihan" , lalu aktifkan tema tersebut.

 

 

2. Buka folder "application/views/latihan" lalu edit file header.php. Kamu akan menemukan file itu masih kosong.

 

 

3. Masukan kode berikut didalamnya

class KategoriArtikel
{
	public $CI;

	public $kategori;

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



	function ambil_kategori($parent=0){

		$kondisi=array(
			"id_parent"=>$parent,
			"aktif"=>"Y",
			"terhapus"=>"N"
			);

		//query ke database untuk mencari kategori
		$this->CI->db->order_by("id_kategori","DESC");
		$query=$this->CI->db->get_where("kategori",$kondisi);

		//cek apakah memiliki hasil
		if($query->num_rows()>0){
			$this->kategori.="<ul>";

				//memulai membentuk kategori satu persatu
				foreach ($query->result_array() as $kategori) {
					$this->kategori.="<li>";
					$this->kategori.="<a href='".kategori_url($kategori['id_kategori'],$kategori['slug_kategori'])."'>$kategori[nama_kategori]</a>";

					// panggil fungsi secara recursive untuk mencari subkategori
					$this->ambil_kategori($kategori['id_kategori']);
					$this->kategori.="</li>";
				}

			$this->kategori.="</ul>";
		} else {
			return;
		}



	}


}

 

 

Buka halaman administrator, lalu atur kategorinya seperti ini

 

 

 

Sekarang kembali ke file yang sementara diedit tadi lalu tambahkan code ini dibawahnya

 

 

$kategori_artikel= new KategoriArtikel;
$kategori_artikel->ambil_kategori();
echo $kategori_artikel->kategori;

 

 

Buka Browser kamu lalu buka buka alamat project kamu misalnya "http://localhost/apricot/" maka kamu akan mendapatkan hasil seperti ini

 

 

 

Sampai disini semua kategori telah berhasil ditampilkan, tapi masih dalam bentuk "mentah list HTML". Tinggal kamu atur dan gunakan Code code CSS dan javascript untuk mempercatik tampilannya. :)

 

 

Demikian tutorial kali ini. Jika ada pertanyaan atau ada yg kurang jelas, silahkan tinggalkan pertanyaannya pada bagian komentar. 

 

 

full code "application/views/latihan/header.php"

 

class KategoriArtikel
{
	public $CI;

	public $kategori;

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



	function ambil_kategori($parent=0){

		$kondisi=array(
			"id_parent"=>$parent,
			"aktif"=>"Y",
			"terhapus"=>"N"
			);

		//query ke database untuk mencari kategori
		$this->CI->db->order_by("id_kategori","DESC");
		$query=$this->CI->db->get_where("kategori",$kondisi);

		//cek apakah memiliki hasil
		if($query->num_rows()>0){
			$this->kategori.="<ul>";

				//memulai membentuk kategori satu persatu
				foreach ($query->result_array() as $kategori) {
					$this->kategori.="<li>";
					$this->kategori.="<a href='".kategori_url($kategori['id_kategori'],$kategori['slug_kategori'])."'>$kategori[nama_kategori]</a>";

					// panggil fungsi secara recursive untuk mencari subkategori
					$this->ambil_kategori($kategori['id_kategori']);
					$this->kategori.="</li>";
				}

			$this->kategori.="</ul>";
		} else {
			return;
		}



	}


}


$kategori_artikel= new KategoriArtikel;
$kategori_artikel->ambil_kategori();
echo $kategori_artikel->kategori;