Some times you want categoriesOr i can say that a dictionary which needs to be fetch from mysql , there for all links , content will be fetch from database mysql by creating a singel view file with support of jQuery
for processing menus. There will be your Administration OR Admin panelwho will create these categories , sub categories.
1.Your Controller functions will goes like below.
- defined('BASEPATH') OR exit('No direct script access allowed');
- class School extends MY_Controller {
- public function __construct() {
- parent::__construct();
- }
- public function get_dictionary() {
- $this->load->model('schools');
- $this->load->model('trading_tools');
- $data['meta_title'] = 'School';
- $data['meta_keywords'] = 'School';
- $data['meta_desc'] = 'School';
- $data['signup_signin_model'] = 'root/signin_up_model_html';
- $parent_slug = trim($this->uri->segment(2));
- $child_slug = trim($this->uri->segment(3));
- if (isset($child_slug) && $child_slug != '') {
- $data = array($child_slug);
- $where = 'slug_name';
- $data['school_info'] = $this->schools->get_records_where_in('schools_category', $where, $data);
- } else {
- $data['school_info'] = $this->schools->get_school_info($parent_slug);
- }
- $menu = $this->trading_tools->get_items();
- $data['side_bar_menu'] = $this->buildMenu(0, $menu);
- $data['loginheader'] = '';
- $data['top_header'] = 'root/top_header';
- $data['top_menu'] = 'root/top_menu';
- $data['parent_slug_name'] = $parent_slug;
- $data['child_slug_name'] = $child_slug;
- if ($parent_slug != 'glossary') {
- $data['main'] = 'root/school_child';
- } else {
- $data['main'] = 'root/school_glossary';
- }
- $data['footer'] = 'root/footer';
- $this->load->vars($data);
- $this->load->view($this->template);
- }
- public function buildMenu($parent, $menu) {
- $html = "";
- if (isset($menu['parent_menus'][$parent])) {
- if ($parent <= 0)
- $html .= "<ul class='nav nav-pills nav-stacked' style='background:#E9E9E9;'>";
- else
- $html.= '<ul class="dropdown-menu">';
- $countfor_active = 0;
- foreach ($menu['parent_menus'][$parent] as $menu_id) {
- $li_parentclass = '';
- $ul_inside_li = '<ul class="dropdown-menu ' . $menu['menus'][$menu_id]['slug_name'] . '>';
- if ($countfor_active == 0) {
- $li_parentclass = 'dropdown ' . $menu['menus'][$menu_id]['slug_name'] . '';
- }
- if (!isset($menu['parent_menus'][$menu_id])) {
- $html .= "<li class='" . $li_parentclass . "'>
- <a href='" . $menu['menus'][$menu_id]['page_link'] . "'>
- " . $menu['menus'][$menu_id]['category_name'] . "</a></li>";
- }
- if (isset($menu['parent_menus'][$menu_id])) {
- $html .= "<li class='" . $li_parentclass . "'>
- <a href='" . $menu['menus'][$menu_id]['page_link'] . "'> <i
- class='fa fa-angle-right pull-right'></i>
- " . $menu['menus'][$menu_id]['category_name'] . "</a>";
- $html .= $this->buildMenu($menu_id, $menu);
- $html .= "</li>";
- }
- }
- $html .= "</ul>";
- }
- return $html;
- }
- }
2. Basically i am using two views filesbecause layout OR html is different for both. One view file will contain Dictionary (school_glossary) and sencond view (school_child) file will contain simple content to display.
A) school_glossary View
- <div class="l-main-container">
- <div class="b-breadcrumbs f-breadcrumbs">
- <div class="container">
- <ul>
- <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown"
- href="#"><i class="fa fa-home"></i>Home</a></li>
- <li><i class="fa fa-angle-right"></i><a href="#">Forex Tools</a></li>
- <li><i class="fa fa-angle-right"></i><span>Forex School</span></li>
- </ul>
- </div>
- </div>
- <div class="l-inner-page-container">
- <div class="container">
- <div class="row">
- <div class="col-md-9 col-md-push-3">
- <div class="b-shortcode-example">
- <div class="b-tabs f-tabs j-tabs b-tabs-reset ui-tabs ui-widget ui-widget-content ui-corner-all">
- <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix
- ui-widget-header ui-corner-all" role="tablist">
- <?php if (count($school_info) > 0) { ?>
- <?php
- $alphabet = array('A'=>'glossary-a','B'=>'glossary-b','C'=>'glossary-c','D'=>'glossary-d',
- 'E'=>'glossary-e','F'=>'glossary-f','G'=>'glossary-g','H'=>
- 'glossary-h','I'=>'glossary-i','J'=>'glossary-j','K'=>'glossary-k',
- 'L'=>'glossary-l','M'=>'glossary-m','N'=>'glossary-n','O'=>
- 'glossary-o','P'=>'glossary-p','Q'=>'glossary-q','R'=>'glossary-r','S'=>'glossary-s'
- ,'T'=>'glossary-t','U'=>'glossary-u','V'=>'glossary-v','W'=>'glossary-w',
- 'X'=>'glossary-x','Y'=>'glossary-y','Z'=>'glossary-z');
- foreach ($school_info as $key => $value) {?>
- <li class="ui-state-default ui-corner-top" role="tab" tabindex="-1"
- aria-controls="tabs-21" aria-labelledby="ui-id-1" aria-selected="false" aria-expanded="false">
- <a href="#tabs-<?php echo $school_info[$key]->s_category_id;?>"
- class="ui-tabs-anchor" role="presentation" tabindex="-1"
- id="ui-id-<?php echo $school_info[$key]->s_category_id;?>">
- <?php foreach ($alphabet as $al => $alp) {?>
- <?php if($alp==$school_info[$key]->slug_name){ ?>
- <?php echo $al; ?>
- <?php }?>
- <?php }?>
- </a>
- </li>
- <?php } ?>
- <?php }?>
- </ul>
- <div class="b-tabs__content">
- <?php if (count($school_info) > 0) { ?>
- <?php foreach ($school_info as $key => $value) {?>
- <div id="tabs-<?php echo $school_info[$key]->s_category_id;?>"
- aria-labelledby="ui-id-<?php echo $school_info[$key]->s_category_id;?>"
- class="ui-tabs-panel ui-widget-content ui-corner-bottom" role="tabpanel"
- aria-hidden="true" style="display: none;">
- <?php echo html_entity_decode($school_info[$key]->page_body); ?>
- </div>
- <?php }?>
- <?php }?>
- </div>
- </div>
- </div>
- </div>
- <div class="visible-xs-block visible-sm-block b-hr"></div>
- <div class="col-md-3 col-md-pull-9">
- <?php if (isset($side_bar_menu)) { ?>
- <?php echo $side_bar_menu; ?>
- <?php } ?>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- $(document).ready(function () {
- var p_slug_name=".<?php echo $parent_slug_name;?>";
- $(".nav").find(p_slug_name).addClass('active');
- });
- </script>
B) school_child View
- <div class="l-main-container">
- <div class="b-breadcrumbs f-breadcrumbs">
- <div class="container">
- <ul>
- <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown"
- href="#"><i class="fa fa-home"></i>Home</a></li>
- <li><i class="fa fa-angle-right"></i><a href="#">Forex Tools</a></li>
- <li><i class="fa fa-angle-right"></i><span>Forex School</span></li>
- </ul>
- </div>
- </div>
- <div class="l-inner-page-container">
- <div class="container">
- <div class="row">
- <?php if (count($school_info) > 0) { ?>
- <div class="col-md-9 pull-right"><h4><?php echo $school_info[0]->category_name;?></h4></div>
- <?php } ?>
- <div class="col-md-9 col-md-push-3">
- <div class="b-blog-listing__block">
- <div class="b-blog-listing__block-top"> </div>
- <div class="b-infoblock-with-icon b-blog-listing__infoblock">
- <div class="b-infoblock-with-icon__info f-infoblock-with-icon__info">
- <?php if (count($school_info) > 0) { ?>
- <?php echo html_entity_decode($school_info[0]->page_body); ?>
- <?php } ?>
- </div>
- </div>
- </div>
- </div>
- <div class="visible-xs-block visible-sm-block b-hr"></div>
- <div class="col-md-3 col-md-pull-9">
- <?php if (isset($side_bar_menu)) { ?>
- <?php echo $side_bar_menu; ?>
- <?php } ?>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- $(document).ready(function () {
- var p_slug_name=".<?php echo $parent_slug_name;?>";
- $(".nav").find(p_slug_name).addClass('active');
- });
- </script>
3. Your model function will goes like below
- class Schools extends CI_Model {
- function __construct() {
- // Call the Model constructor
- parent::__construct();
- $this->load->library('session');
- $this->load->database();
- }
- function get_school_info($parent_slug){
- $q_school="select * from cbf_schools_category where parentid =(select s_category_id
- from cbf_schools_category where slug_name='".$parent_slug."')";
- $query=$this->db->query($q_school);
- if ($query->num_rows() > 0)
- return $query->result();
- else
- $q_get_main="select * from cbf_schools_category where slug_name='".$parent_slug."'";
- $query1=$this->db->query($q_get_main);
- return $query1->result();
- }
- function get_records_where_in($table, $where, $data) {
- $this->db->where_in($where, $data);
- $query = $this->db->get($table);
- if ($query->num_rows() > 0)
- return $query->result();
- else
- return NULL;
- }
- }
4. You will need to define a routes in your routes.php
- $route['school/(:any)'] = 'school/get_dictionary/$1';
5. Your Mysql table goes like below which will contain parent , child relationship in single table.