繁体   English   中英

Codeigniter模板库编辑

[英]Codeigniter template libraries editing

我为Codeigniter中的初学者模板找到了一个很棒的链接:

http://net.tutsplus.com/tutorials/php/an-introduction-to-views-templating-in-codeigniter/

真正地,这是我第一次能够逐步遵循该主题的教程,并且对逻辑有所了解。

但是,尽管它允许我指定模板(例如,默认模板),但它限制了我必须在该内容视图文件中包含所有HTML正文代码。 我想将其拆分为页眉,主要内容,可选的侧边栏和页脚。

我的某些网页是三栏式(带有左侧栏和右侧栏),有些网页是两栏式(带有相同的右侧栏),有些是单栏的(没有栏式)-因此我的想法是有3个相应的模板-但是我将不得不在许多不同的视图文件中为我的右侧栏重复代码,这将使编辑该行变得更加困难-并最终破坏了拥有模板系统的目的。

通过编辑现有代码是否可以实现我想要的功能,或者有人可以向我推荐另一个布局/模板库?

PS。 我考虑过这样一个事实,我可以在库文件中编辑以下行以实现已加载的页眉和页脚,但是主体代码和可选的侧边栏是我的主要障碍,因为如果不将侧边栏应用于所有模板-包括一个单列模板。

   $this->ci->load->view('header_view, $data);
   $this->ci->load->view('templates/'.$tpl_view, $data);
   $this->ci->load->view('footer_view, $data);

您好,只需将您的侧边栏创建为视图并在您的布局视图中传递即可,在这里,我已经创建了一个简单的布局系统

首先在application / core目录下创建MY_Controller复制以下代码

class MY_Controller extends CI_Controller{

//all you default views
public $layout = 'default';
public $header = 'default_heder';
public $right_sidebar = 'default_right_sidebar';
public $left_sidebar = 'default_left_sidebar';
public $footer = 'default_footer';

public function __construct() {
        parent::__construct();
}

public build($view,$data = array()){

       $layout_data = array();
       $layout_data['header'] = $this->load->view($this->header,$data,TRUE);
       $layout_data['right_sidebar'] = $this->load->view($this->right_sidebar,$data,TRUE);
       $layout_data['left_sidebar'] = $this->load->view($this->left_sidebar,$data,TRUE);
       $layout_data['footer'] = $this->load->view($this->footer,$data,TRUE);
       $layout_data['body_content'] = $this->load->view($view,$data,TRUE);

       $this->load->view($this->layout,$layout_data);

}

}

2创建任何控制器,并使用MY_Controller扩展它,我创建了示例页面控制器

class Page extends MY_Controller{

public function __construct() {
        parent::__construct();
}

public index(){
          $data['content'] = 'content here';
          $this->build('page_view',$data);
}

public one_coulmn(){
          $this->layout = 'one_column'; // change layout view
          $this->right_sidebar = 'inner_right_sidebar'; // change sidebar view
          $data['content'] = 'content here';
          $this->build('page_view',$data);
}

}

这是您的3列视图的示例

// three col layout
<div id="header"><? echo $header ?></div>
<div id="left_sidebar"><? echo $left_sidebar ?></div>
<div id="body_content"><? echo $body_content?></div>
<div id="right_sidebar"><? echo $right_sidebar ?></div>
<div id="footer"><? echo $footer ?></div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM