На самом деле есть очень простое решение, которое вы можете использовать.Это микробиблиотека, которую я написал для использования макетов в CodeIgniter :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Layout {
protected $CI;
public function __construct() {
$this->CI =& get_instance();
}
/**
* This method loads either the default layout (defined in the config.php file with the key default_layout) or a specific layout
* @param string $view
* @param array $params
* @param string $layout
*/
public function load_layout($view, $params = array(), $layout = "") {
// get the name of the layout file
$layout_file = file_exists(dirname(__FILE__) . "../views/" . $layout) ? $layout : $this->CI->config->item("default_layout");
// load it, transmit the params
$this->CI->load->view(
$layout_file,
array(
"view_name" => $view,
"view_params" => $params
)
);
}
?>
Добавьте этот файл в свой проект в макете .php file, затем просто перейдите в ваш конфигурационный файл и добавьте следующую строку:
$config['default_layout'] = "your-default-layout-name.php";
И, наконец, создайте новый файл в папке application / views вашего проекта иназовите его значением, которое вы указали в своем конфигурационном файле, например your-default-layout-name.php .Вставьте все содержимое базовой структуры ваших страниц и добавьте в основную оболочку:
<?php
// load required view
if (isset($view_name)) {
$this->load->view(
$view_name, $view_params
);
}
?>
Хорошо!теперь вы можете просто заменить родной:
$this->load->view("view-name.php", $params);
на:
// load the default layout
$this->layout->load_layout("view-name.php", $params);
// load a specific layout
$this->layout->load_layout("view-name.php", $params, "my-specific-layout.php");
И он будет работать как шарм!
Примечание: не забудьте включитьбиблиотеки, либо в вашем файле autoload.php, либо непосредственно в вашем скрипте.