Welcome Guest, Not a member yet? Register   Sign In
How to Add Dynamic Header and Footer
#1

Here is my code:

controllers/Home.php


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

class 
Home extends CI_Controller {
    
    
public function __construct()
    {
        parent::__construct();
        $this->load->helper('url_helper');
    }
    
    
public function index()
    {
        if ( ! file_exists(APPPATH.'views/themes/default/templates/common/home.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        }
        
        $data
['title'] = "Home";
        
        $this
->load->view('themes/default/templates/common/header'$data);
        $this->load->view('themes/default/templates/common/home'$data);
        $this->load->view('themes/default/templates/common/footer'$data);
    }



views/themes/default/templates/common/header.php

PHP Code:
<!DOCTYPE html>
<
html>
<
head>
<
title>Title</title>
</
head>
<
body>
<
header>
    <div class="container"><?php echo $title?></div>
</header> 


views/themes/default/templates/common/home.php

PHP Code:
<div class="container">
    <h1><?php echo $title?></h1>
</div> 


views/themes/default/templates/common/footer.php


PHP Code:
<footer>
    <div class="container"><?php echo $title?></div>
</footer>
</body></html> 


Right now, it shows the text Home in each section (in header, in home, and in footer).

I want each page shows different titles (header shows text Header, home shows text Home, and footer shows text Footer).

How to achieve it? Thanks.
Reply
#2

I solved this problem with MY_Controller.php in folder app/core/ I created a method/action with this:

PHP Code:
//...
public function theme($file){
 
   $this->load->view('themes/default/templates/common/header'$data);
 
   $this->load->view('themes/default/templates/common/'.$file$data);
 
   $this->load->view('themes/default/templates/common/footer'$data);
}
//... 

in controller extends the MY_Controller and call view with
PHP Code:
$this->theme('home'); 


see more about MY_Controller here: https://www.codeigniter.com/user_guide/g...asses.html
Reply
#3

(03-02-2018, 03:35 PM)wallacesilva09 Wrote: I solved this problem with MY_Controller.php in folder app/core/ I created a method/action with this:

PHP Code:
//...
public function theme($file){
 
   $this->load->view('themes/default/templates/common/header'$data);
 
   $this->load->view('themes/default/templates/common/'.$file$data);
 
   $this->load->view('themes/default/templates/common/footer'$data);
}
//... 

in controller extends the MY_Controller and call view with
PHP Code:
$this->theme('home'); 


see more about MY_Controller here: https://www.codeigniter.com/user_guide/g...asses.html

The $data, where it comes from?

If all views have the same $data inputs, then all views will display the same data, right? Just like in my case.
Reply
#4

(This post was last modified: 03-03-2018, 02:19 PM by jreklund. Edit Reason: Gave wrong code. )

You need to add different keys to your $data array.
PHP Code:
$data['header'] = 'Header';
$data['home'] = 'Home';
$data['footer'] = 'Footer';

<?
php echo $header?>
<?php 
echo $home?>
<?php 
echo $footer?>

PHP Code:
$data['title']['header'] = 'Header';
$data['title']['home'] = 'Home';
$data['title']['footer'] = 'Footer';

<?
php echo $title['header']; ?>
<?php 
echo $title['home']; ?>
<?php 
echo $title['footer']; ?>
Reply
#5

Hi,

I will show given below one simple code

//...
public function theme($file){
$this->load->view('themes/default/templates/common/header', $data);
$this->load->view('themes/default/templates/common/'.$file, $data);
$this->load->view('themes/default/templates/common/footer', $data);
}
//...

Hope that Helps!
Regards,
Daniel
Reply
#6

(This post was last modified: 05-09-2018, 01:56 PM by qury.)

The solution is fairly simple:

PHP Code:
$header['title'] = "Header";
$data['title'] = "Home";
$footer['title'] = "Footer";

 
       $this->load->view('themes/default/templates/common/header'$header);
 
       $this->load->view('themes/default/templates/common/home'$data);
 
       $this->load->view('themes/default/templates/common/footer'$footer); 
Reply
#7

(This post was last modified: 10-19-2018, 12:23 AM by Gurutechnolabs. Edit Reason: some points i want to mention )

Hello,
When you want to set particular(dynamic) header footer in your home, about, contact us that type of pages then you have to set this code in about controller.

class Userlist extends CI_Controller {
public function __construct(){
}
public function index()
{
        $this->load->view('themes/default/templates/common/header', $data);
        $this->load->view('themes/default/templates/common/home', $data);
        $this->load->view('themes/default/templates/common/footer', $data);

}
This code you have to put in about controller and you get results as per your desire.

Hope This will Help you.
Reply
#8

(This post was last modified: 01-22-2019, 04:19 AM by InsiteFX.)

PHP Code:
$data['header'] = 'Header';
$data['home'  'Home';
$data['footer'] = 'Footer';

$this->load->vars($data);        // makes the $data avaiable to all views Global
$this->load->view('yourView');   // no need to pass $data here 
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply
#9

Code:
Header Code

<div id="header" align="center">
<img src=\"/images/header.jpg border='0' \">
<p>
<a href="index.php">Home</a> -
<a href="profile.php">Profile</a> -
<a href="links.php">Links
</a>- <a href="contact.php">Contact</a>
</p>
Code:
Footer code

<div id="footer" align="center">
<p>
<a href="index.php">Home</a> -
<a href="profile.php">Profile</a> -
<a href="links.php">Links
</a>- <a href="contact.php">Contact</a>
© Copyright Your name here <?php include 'date.php'; ?>
</p>
</div>
Reply
#10

(This post was last modified: 05-26-2019, 12:38 PM by MAILITY.)

(01-22-2019, 12:30 AM)garimapatil Wrote:
Code:
Header Code

<div id="header" align="center">
<img src=\"/images/header.jpg border='0' \">
<p>
<a href="index.php">Home</a> -
<a href="profile.php">Profile</a> -
<a href="links.php">Links
</a>- <a href="contact.php">Contact</a>
</p>
Code:
Footer code

<div id="footer" align="center">
<p>
<a href="index.php">Home</a> -
<a href="profile.php">Profile</a> -
<a href="links.php">Links
</a>- <a href="contact.php">Contact</a>
© Copyright Your name here <?php include 'date.php'; ?>
</p>
</div>

I solved this problem with MY ->Xender Discord Omegle _Controller.php in folder app/core/ I created a method/action with this:
Reply




Theme © iAndrew 2016 - Forum software by © MyBB