Kullanıcı web sitesini özellikle de ilk kez ziyaret ettiği zaman, sayfadaki her şeyi dikkatlice ve ayrıntılı olarak incelemez. Sadece dikkatini çekecek ve web sitesinde biraz zaman geçirmeye ikna olabileceği bir şeyler bulmak için tarama yapar.

Header ya da üstbilgi denildiğinde genellikle web sitelerin üst alanında yer alan ve sabit olarak her sayfada yer alacak olan logo, menü başlıkları, dil seçenekleri, arama çubuğu vb. gibi isimler akla gelir.

Web sitelerinde kullanılan menüler, kullanıcıların sayfalar arasında kolayca gezebilmesini sağlar. Özellikle yönetim paneli olan projelerde menülerin dinamik olması gerekir. Bu yazıda CodeIgniter 3 framework'ü ile veritabanından dinamik menü çekme işlemini gerçekleştireceğiz. 

Veritabanı Yapısı:

İlk olarak menus adında bir tablo oluşturalım:

CREATE TABLE `menus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `url` varchar(255) NOT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `rank` int(11) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Örnek veriler:

INSERT INTO `menus` (`title`, `url`, `is_active`, `rank`) VALUES
('Anasayfa', '/', 1, 1),
('Hakkımızda', '/hakkimizda', 1, 2),
('Hizmetler', '/hizmetler', 1, 3),
('İletişim', '/iletisim', 1, 4);

Model (Menu_model.php)

application/models/Menu_model.php dosyasını oluşturalım:

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

class Menu_model extends CI_Model {

    public function get_active_menus() {
        return $this->db
            ->where('is_active', 1)
            ->order_by('rank', 'ASC')
            ->get('menus')
            ->result();
    }
}

Controller (Home.php)

application/controllers/Home.php içinde menü verisini view dosyasına gönderelim:

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

class Home extends CI_Controller {

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

    public function index() {
        $data['menus'] = $this->Menu_model->get_active_menus();
        $this->load->view('homepage', $data);
    }
}

View (homepage.php)

application/views/homepage.php dosyasında menüyü döndürelim:

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>Dinamik Menü</title>
</head>
<body>


    
        <?php foreach ($menus as $menu): ?>
            url) ?>"><?= $menu->title ?>
        <?php endforeach; ?>
    


Hoş geldiniz!

</body>
</html>

 

Sonuç:

Artık menü yapınız tamamen veritabanından gelmektedir. Yeni bir menü eklemek için sadece menus tablosuna kayıt girmeniz yeterlidir. Controller tarafında tekrar kod yazmaya gerek kalmadan otomatik olarak menüye dahil edilir.

 

 

Okunma Sayısı: 16

Bu yazıyı paylaş:
X