codeigniter中的布局/模板/主题是什么

codeigniter中的布局/模板/主题是什么,codeigniter,Codeigniter,我是codeigniter的新手,我觉得codeigniter中的布局/模板/主题有问题。 我不知道什么时候该用一个。。 我能做的最好的方法是什么?如果我想制作一个免费的html/css模板的网站,比如 任何人都可以告诉我一个教程,建议。。。谢谢我只是写了一些额外的库(application/libraries/display_lib.php)来呈现临时页面和类似的页面块。 大概是这样的: class Display_Lib{ private $_CI; pr

我是codeigniter的新手,我觉得codeigniter中的布局/模板/主题有问题。
我不知道什么时候该用一个。。
我能做的最好的方法是什么?如果我想制作一个免费的html/css模板的网站,比如


任何人都可以告诉我一个教程,建议。。。谢谢

我只是写了一些额外的库(
application/libraries/display_lib.php
)来呈现临时页面和类似的页面块。 大概是这样的:

    class Display_Lib{
       private $_CI;
       private $_template_data;

       public function __construct()
       {
           $this->_CI =& get_instance();
       }

       public function set($key, $value)
       {
           $this->_template_data[$key] = $value;
       }

       public function get($key)
       {
           return $this->_template_data[$key];
       }

       public function get_template_data()
       {
           return $this->_template_data;
       }

       public function display_page($view, $data = array())
       {
           $this->set('content', $this->_CI->load->view($view, $data, TRUE));
           $this->_CI->load->view('templates/main_template', $this->get_template_data());
       }
}
将此库设置为自动加载:

$autoload['libraries'] = array('session', 'database', 'display_lib');
并在控制器中调用它:

class Main extends CI_Controller{
    public function index()
    {
        $some_data = array();
        $this->display_lib->display_page('views/main_view', $some_data);
    }
}
模板示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <base href="<?=base_url();?>">
    <meta charset="utf-8">
    <link rel="icon" href="<?=site_url('img/favicon.ico')?>" type="image/x-icon"/>
    <link rel="stylesheet" href="<?=site_url('css/style.css');?>" type="text/css" media="screen, projection"/>
    <script type="text/javascript" src="<?=site_url('js/jquery-1.10.2.min.js');?>"></script>
    <title>Some page title</title>
</head>
<body>
    <header></header>
    <div class="auth_wrapper">
        <div class="content">
            <?=$content;?>
        </div>
        <div class="buffer"></div>
    </div>
    <footer></footer>
</body>
</html>

此库允许使用模板并从控制器呈现视图。

生成template.php、header.php、footer.php。下面是template.php,同样制作页眉和页脚,并将它们全部放在“视图”文件夹中:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="icon" href="<?=site_url('img/favicon.ico')?>" type="image/x-icon"/>
    <link rel="stylesheet" href="<?=site_url('css/style.css');?>" type="text/css" media="screen, projection"/>
    <script type="text/javascript" src="<?=site_url('js/jquery-1.10.2.min.js');?>"></script>
    <title>Some page title</title>
</head>
<body>
    <header><?=$this->load->view('header');?></header>
    <div class="wrapper">
        <div class="content">
            <?=$main?>
        </div>
    </div>
    <footer><?=$this->load->view('footer');?></footer>
</body>
</html>

这是在
CI
中使用模板的最简单的方法。

模板处理页面的布局。您将创建一个模板,其中包含元、页眉、页脚和正文空间。主体被注入到模板中,这是内容更改的地方

这个想法是,网站的大部分内容不会改变,只有身体会改变。这就是模板很有用的地方,它们可以节省您的时间并提高一致性。 看看这个模板库,它非常好:

主题与模板相结合,因为模板通常定义布局,而主题只是“蒙皮”布局。主题包括将进一步修改模板的资源和样式


干杯

你甚至没有更改@joni的jQuery版本
js/jQuery-1.10.2.min.js
。使用了
HTML
部分,但逻辑是我的。这与另一个答案毫无关系@HashemQolamiIt的错误做法,打破了MVC从视图加载视图的惯例。考虑使用布局或模板库(这里是我的):或者自己构建。如果您决定这样做,我建议您使用$data['header']=$this->load->view('header','',TRUE);然后将其传递给视图以用作$header.@envysea这意味着($this->load->view('header'),$this->load->view('content'),$this->load->view('footer'))不好?@freestyle。在我看来,最好的方法是像另一个答案所说的那样使用模板库。或者,如果你按照这个答案建议的方式做,这两个方法是好的:或者。或者签出模板,我之前发布的链接是现成的,可以与完整的模板系统一起使用,带有示例,非常容易使用。文件夹是什么样的<代码>应用程序|--库| |--显示| lib.php |--控制器| |--main.php |--视图|--main | view.php img |--img01.jpg css |--style.css js |--jquery.js是的,您的屏幕显示应用程序结构正确,还需要将
模板/main | template.php
添加到
视图
文件夹。
<div>Come content will be here</div>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="icon" href="<?=site_url('img/favicon.ico')?>" type="image/x-icon"/>
    <link rel="stylesheet" href="<?=site_url('css/style.css');?>" type="text/css" media="screen, projection"/>
    <script type="text/javascript" src="<?=site_url('js/jquery-1.10.2.min.js');?>"></script>
    <title>Some page title</title>
</head>
<body>
    <header><?=$this->load->view('header');?></header>
    <div class="wrapper">
        <div class="content">
            <?=$main?>
        </div>
    </div>
    <footer><?=$this->load->view('footer');?></footer>
</body>
</html>
function index(){
    $data           = array();
    $data['main']   = "home";           #this view is home.php in views folder, the content part of template.php
    $this->load->view('template', $data); #this is the template file being rendered.
}