2013-08-14 3 views
2

Я новичок в codeigniter, я чувствую проблемы с макетом/шаблоном/темами в codeigniter.
Я не знаю, когда следует использовать один из них.
Как я могу это сделать? если я хочу, чтобы сделать веб-сайт с бесплатным шаблоном в HTML/CSS, какЧто такое макет/шаблон/темы в codeigniter

goodnatured 
|--img 
    |--img01.jpg 
|--css 
    |--style.css 
|--js 
    |--jquery.js 
|--index.html 

Любой человек может сказать мне учебник, предложить, ... спасибо

ответ

1

Я просто пишу немного дополнительной библиотеки (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> 

И application/views/main_view простой exmaple:

<div>Come content will be here</div> 

Это Lib позволяет использовать шаблоны и сделать вид из контроллеров.

+0

Что такое папка? 'приложение | - библиотеки | | --display_lib.php | --controllers | | --main.php | --views | --main_view.php IMG | --img01.jpg Css | --style.css Js | --jquery.js' – freestyle

+0

, что вы имеете в виду ? папке, подобной http://s21.postimg.org/60ooy45vr/Capture.jpg – freestyle

+0

Да, ваш экран - это правильная структура приложения отображения, также нужно добавить 'templates/main_template.php' в папку' views'. –

-2

Сделайте 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> 

В вашем контроллер функцию:

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. 
} 

Это самый простой способ использования шаблонов в CI думаю.

+1

Вы даже не изменили версию jQuery @ joni 'js/jquery-1.10.2.min.js'. –

+0

Использовал 'HTML' часть, но логика моя. Это никак не связано с другим ответом. @HashemQolami –

+1

Это плохая практика и нарушает соглашение MVC для загрузки просмотров из представлений. Подумайте об использовании библиотеки макетов или шаблонов (здесь моя: https://github.com/scotch-io/stencil) - или создайте свой собственный. Если вы решите сделать это таким образом, я предлагаю сделать $ data ['header'] = $ this-> load-> view ('header', '', TRUE); Затем передайте это вашему виду, чтобы использовать его как $ header. – envysea

0

Шаблоны обработки макет страницы. Вы создаете шаблон, который будет содержать ваши мета, верхний колонтитул, нижний колонтитул и пространство для тела. Тело вводится в шаблон, здесь меняется контент.

Идея состоит в том, что большая часть сайта не изменяется, изменяется только тело. Здесь шаблоны полезны, они экономят ваше время и повышают согласованность. См. Эту библиотеку шаблонов, это довольно хорошо: http://getsparks.org/packages/template/show

Темы объединены с шаблоном, поскольку шаблоны часто определяют макет и тему просто «скины» макета. Тема включает в себя активы и стили, которые дополнительно изменят шаблон.

Cheers

Смежные вопросы