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