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;