CodeIgniter:显示动态标题问题

时间:2014-02-14 20:50:02

标签: php codeigniter

有人可以帮我解决这段代码。

我的模板设置如下:

system / core / Loader.php:

public function template($view, $vars = array(), $return = FALSE)
    {
        $template  = $this->view('includes/header', array(), $return);
        $template  = $this->view('includes/navigation', array(), $return);
        $template .= $this->view($view, $vars, $return);
        $template .= $this->view('includes/footer', array(), $return);

        if ($return)
        {
            return $template;
        }
    }

它完美无缺,但当我尝试显示动态标题时,它不想显示标题。我想因为数据传递给content_home而不是传递给includes / header:

我的控制员:

public function home() {
        $this->load->model("model_get");
        $data["page_title"] = "Home Page";
        $data["results"] = ($this->model_get->getData("home"));
        $this->load->template("content_home",$data);
    }

包括/ header.php文件

<title><?php echo (isset($page_title)) ? $page_title : 'Default title text'; ?> </title>

任何想法如何解决?

谢谢:)

6 个答案:

答案 0 :(得分:1)

我以更简单的方式实现了动态标题:

<强>控制器:

$data['header_data'] = array('title'=>'Foo bar');
$data['page'] = "login";
$this->load->view('template', $data);

查看 - template.php

$this->load->view('includes/header', $header_data);
$this->load->view('pages/'.$page);
$this->load->view('footer');

我们在视图中有两个文件夹 - 包含和页面。 包括文件夹:header.php,footer.php(等等) pages文件夹:login.php,profile.php(etc ..)

<强>视图/包括/ header.php文件

<!DOCTYPE html>
<html>
 <head>
 <title><?=$title?></title>
 </head>
...

这样,您可以使用相同的模板加载所有页面。您也可以发送标题以外的数据!

答案 1 :(得分:0)

在您的视图文件夹中创建一个这样的模板文件,
我们称之为template_web.php

<?php 

// the preset view files for your template
$this->load->view('includes/header');     
$this->load->view('includes/navigation'); 

// in this example we will have our content view files in a folder called 'web' 
$templatefolder = 'web/';

// this is where you can pass in 'content' view files that are unique for the page 
// this example has 3 placeholders you can put as many as you need 

if(isset($content01))
$this->load->view($templatefolder.$content01);

if(isset($content02))
$this->load->view($templatefolder.$content02);

if(isset($content03))
$this->load->view($templatefolder.$content03);

 // preset template footer file 
 $this->load->view('includes/footer'); 

现在你的控制器方法

// data you want to pass to your header  
$data['page_title'] = 'Awesome Home Page';

// other data
$data['bigbagofdata'] = $this->bigBagOf->awesomeData ; 

// the name of the view files 
$data['content01'] = 'homepage';
$data['content02'] = 'homepage_banner'; 

// your template 
$this->load->view( 'template_web', $data );

数据可以传递给任何视图文件。并且很容易以这种方式设置不同的模板。

答案 2 :(得分:0)

尝试

$template  = $this->view('includes/header', $view, $return);

而不是

$template  = $this->view('includes/header', array(), $return);

答案 3 :(得分:0)

如果您想在标题视图中访问$data["page_title"]变量,那么您应该将其传递到标题视图中:

更改此行:

$template = $this->view('includes/header', array(), $return);

$template = $this->view('includes/header', $vars, $return);

答案 4 :(得分:0)

我认为MrMarchello找到了真正的问题。问题是没有将$ data变量传递给header。

$data['title'] = "Edit User";
$this->load->view('template/header', $data);
$this->load->view('user/edit_member', $data);
$this->load->view('template/footer');

希望这对你有所帮助。

答案 5 :(得分:0)

在配置文件中添加以下参数:

$config['pageTitle'] = 'Book Store';

在模板页面中:

<title><?=$this->config->config["pageTitle"]?></title>

在您喜欢的任何页面中更改此配置:

$this->config->config["pageTitle"] = $detail[0]['Title'];

每次您都可以轻松更改标题。