0

我在 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);
4

1 回答 1

0

嗨,只需将您的侧边栏创建为视图并将其传递给您的布局视图,我已经创建了一个简单的布局系统,看看它

首先在 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);

}

}

第二次创建任何控制器并使用 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>
于 2013-07-10T09:59:39.600 回答