Kết quả 1 đến 8 của 8
  1. #1
    Super Moderator Zen Studio's Avatar
    Ngày tham gia
    19-06-2013
    Bài viết
    393
    Cảm ơn
    58
    Được cảm ơn 166 trong 123 bài viết

    Quản lý template trong CodeIgniter

    I. Giới thiệu:
    - Đề có thể dễ dàng theo dõi bài viết thì mình sẽ nói sơ qua một chút về cấu trúc của một trang web. Trong một trang web thì các bạn có thể thấy nó được cấu tạo từ nhiều phần như: top, menu, left, content, right, bottom... Mình sẽ gọi từng phần này là block
    - Một website thì bao gồm rất nhiều trang nhiều trang, tuy vậy có một số block không thay đổi về nội dung như: top, menu, bottom... Mình gọi những block này là block cố định. Và những block có nội dung thường xuyên thay đổi mình gọi là block không cố định như: content,news...
    - Chia ra từng block như thế giúp chúng ta có thể dễ dàng quản lý nội dung trang web của chúng ta, cũng như dễ dàng thay đổi layout di chuyển từng block theo ý của mình
    - Trong bài viết này mình sẽ sử dụng một vài kỹ thuật tương tự cách load layout của Zend Framework, nên vậy có 1 vài chỗ cấu hình hơi phức tạp.
    II. Chuẩn bị:
    - Source CodeIgniter (version 2.1)
    - File Template.php (đây là thư viện template)
    - File template.php(đây là file config template)
    - Layout mẫu
    III. Thực hiện:
    - Đầu tiên copy file Template.php vào thư mục strong>application/libraries
    - Sau đó copy file template.php vào thư mục application/config
    - Tạo cấu trúc của ứng dụng như sau:
    Quản lý template trong CodeIgniter
    Cấu hình file template.php trong application/config như sau:

    PHP Code:
    // Section default 
    $template['default']['template'] = 'default/default_template'$template['default']['regions'] = array(     'top',     'menu',     'left',     'content',     'right',     'bottom'); $template['default']['parser'] = 'parser'$template['default']['parser_method'] = 'parse'$template['default']['parse_template'] = FALSE
    - Ở đây chúng ta sẽ chú ý 2 tham số sau:
    $template['default']['template']: file template sử dụng
    $template['default']['regions']: khai báo các vùng trong layout

    Ứng với mỗi vùng chúng ta sẽ có 1 file trong thư mục view/default/block
    Quản lý template trong CodeIgniter



    - Còn các tham số về parser các bạn cứ để mặc định mình sẽ giải thích ở những phần sau, các tham số này để chúng ta có thể sử dụng được chức năng parser của CodeIgniter
    Sau đó, bỏ đoạn code sau vào file default_template.php trong application/view/default
    PHP Code:
    <?php echo $_doctype?> 
    <html>     <head>         <meta charset="utf-8">          <?php echo $_meta?>         <?php echo $_styles?>          <?php echo $_scripts?>         <?php echo $_title?>     </head>    <body> 
            <?php echo $top?> 
            <?php echo $menu?>         <div id=main> 
                <?php echo $left?> 
                <?php echo $content?>             <?php echo  $right?>        </div>        <?php echo $bottom?> 
        </body> </html>
    File này sẽ quy định cấu trúc trang web của chúng ta, nếu sau này chúng ta muốn thay đổi gì giao diện chỉ cần vào file này thay đổi.

    Tới đây thì phần cấu hình đã xong, bây giờ chúng ta sẽ bắt đầu xây dựng ứng dụng
    - Tạo một My_Cotronller trong application/core
    PHP Code:
    class My_Controller extends CI_Controller 
         public function 
    __construct() {         parent::__construct();            // Init data                       $data = array();         // Load  library template         $this->load->library('template');          // Set template 
            
    $this->template->set_template('default');                  // Add DocType 
            
    $this->template->add_doctype(); 
              
            
    // Parse data into view  
            
    $this->template->parse_view('top','default/block/top',$data); 
             
    $this->template->parse_view('menu','default/block/menu',$data)          $this->template->parse_view('left','default/block/left',$data);            $this->template->parse_view('right','default/block/right',$data);  
            
    $this->template->parse_view('bottom','default/block/bottom',$data); 
        } } 
    - Mình sẽ thích thêm về chỗ này, trong file My_Controller này chúng ta sẽ nạp thư viện template
    $this->load->library('template');

    sau đó chọn template chúng ta muốn sử dụng
    PHP Code:
    $this->template->set_template('default'); 
    Thêm docType vào đầu trang web
    PHP Code:
    $this->template->add_doctype(); 
    Parse các block cố định vào những vùng chúng ta mong muốn
    PHP Code:

    $this
    ->template->parse_view('top','default/block/top',$data); $this->template->parse_view('menu','default/block/menu',$data); 
    $this->template->parse_view('left','default/block/left',$data);         
    $this->template->parse_view('right','default/block/right',$data); 
    $this->template->parse_view('bottom','default/block/bottom',$data); 
    Cú pháp để parse_view sẽ như sau:
    PHP Code:
    $this->template->parse_view('region','block','content'); 
    region: là những vùng chúng ta đã khai báo ở file template.php trong application/config
    block: đường dẫn tới file block (mỗi block sẽ ứng với 1 file trong application/view/default/block)
    - Bây giờ tới bước quen thuộc đây, chúng ta sẽ tạo một controller Index như sau:
    PHP Code:
    class Index extends My_Controller 
     
        public function 
    __construct() { 
            
    parent::__construct(); 
        } 
     
        public function 
    index() { 
            
    // Add title 
            
    $this->template->add_title('Home page'); 
     
            
    // Add CSS and JS 
            
    $this->template->add_css('public/default/css/style.css'); 
            
    $this->template->add_js('public/default/js/menu.js'); 
     
            
    // Build data 
            
    $data['info'] = array( 
                
    '0' => array( 
                    
    'id' => '001'
                    
    'name' => 'kevin'
                    
    'age' => '20'
                    
    'result' => array( 
                        
    '0' => array( 
                            
    'point1' => 9
                            
    'point2' => 8
                            
    'point3' => 
                        

                    ) 
                ), 
                
    '1' => array( 
                    
    'id' => '002'
                    
    'name' => 'kenny'
                    
    'age' => '20'
                    
    'result' => array( 
                        
    '0' => array( 
                            
    'point1' => 7
                            
    'point2' => 8
                            
    'point3' => 
                        

                    ) 
                ) 
            ); 
            
    // Parser data 
            
    $this->template->parse_view('content''default/block/content'$data); 
     
            
    // Render template 
            
    $this->template->render(); 
        } 

    Giải thích về đoạn code trên:
    Thêm title của trang web
    PHP Code:
    $this->template->add_title('Home page'); 

    Thêm CSS JS
    PHP Code:
    $this->template->add_css('public/default/css/style.css'); 
    $this->template->add_js('public/default/js/menu.js'); 
    Parse block không cố định vào data chúng ta đã xây dựng ở trên
    PHP Code:
    $this->template->parse_view('content''default/block/content'$data); 
    Render template của chúng ta
    PHP Code:
    $this->template->render(); 
    Và trong phần view của block content chúng ta sẽ xử lý dữ liệu như sau, mình sẽ áp dụng parser vào phần này luôn:
    HTML Code:
    <div id=info>    
        <table border="1">
            <thead>
                <tr>
                    <td>ID</td>
                    <td>Username</td>
                    <td>Age</td>
                    <td>Point 1</td>
                    <td>Point 2</td>
                    <td>Point 3</td>
                </tr>
            </thead>
            <tbody>  
                 <!-- Parser data -->
                {info}
                <tr>
                    <td>{id}</td>
                    <td>{name}</td>
                    <td>{age}</td>  
                    {result}
                        <td>{point1}</td>
                        <td>{point2}</td>
                        <td>{point3}</td>
                    {/result}
                </tr>
                {/info}
                 <!-- End Parser data -->
            </tbody>
        </table>
    </div>
    * Parser data là kỹ thuật được CodeIgniter giới thiệu ở version 1.7 và sau đó đã hoàn thiện và ổn định ở version 2.0 Đây là một cách viết giúp chúng ta quản lý code hiệu quả hơn, thay vì phải viết vòng lặp foreach để thể hiện dữ liệu chúng ta có thể thay thế bằng cách viết trên
    - Trên đây mình đã hướng dẫn các bạn cách để có thể quản lý được 1 template trong CodeIgniter, với mô hình này bạn có thể dễ dàng thay đổi vị trí của các block trong trang web, cũng như linh hoạt trong việc thể hiện dữ liệu
    - Đây là kỹ thuật mình tập hợp được từ một số framework mình đã sử dụng nên có phần lai lai ở mỗi nơi một chút dẫn đến các bạn mới có vẻ sẽ khó tiếp cận, nhưng các cứ cố gắng ngâm cứu, mưa dầm, thấm đất mà.
    Sửa lần cuối bởi Zen Studio; 06-09-2013 lúc 04:01 PM.
    hay cung chung toi chinh phuc tri thuc

  2. The Following 3 Users Say Thank You to Zen Studio For This Useful Post:

    battai (14-11-2013),maduong (09-09-2013),PhanNguyenChuong (10-09-2013)

  3. #2
    Super Moderator maduong's Avatar
    Ngày tham gia
    30-03-2013
    Bài viết
    65
    Cảm ơn
    6
    Được cảm ơn 44 trong 28 bài viết
    Bài viết rất hay

  4. #3
    CI New battai's Avatar
    Ngày tham gia
    07-11-2013
    Vị trí hiện tại
    Hà Nội
    Bài viết
    7
    Cảm ơn
    7
    Thanked 1 Time in 1 Post
    Có bác nào dùng cái này và lỗi khi up lên hosting không ạ :(?

    Em up lên thì trang trắng xóa :(!

  5. #4
    Super Moderator Zen Studio's Avatar
    Ngày tham gia
    19-06-2013
    Bài viết
    393
    Cảm ơn
    58
    Được cảm ơn 166 trong 123 bài viết
    thế bạn demo ở dưới localhost chạy không vậy
    hay cung chung toi chinh phuc tri thuc

  6. #5
    CI New tvad911's Avatar
    Ngày tham gia
    23-12-2013
    Bài viết
    1
    Cảm ơn
    0
    Được cảm ơn 0 trong 0 bài viết
    Bạn ơi nếu như chia ra Admin mình làm MY_Controller rồi cái trang home của mình làm Home_Controller ko tự load được phải import vào classs chạy ...
    Bạn có cách nào ko

  7. #6
    CI New battai's Avatar
    Ngày tham gia
    07-11-2013
    Vị trí hiện tại
    Hà Nội
    Bài viết
    7
    Cảm ơn
    7
    Thanked 1 Time in 1 Post
    Demo localhost chạy ngon bác àh :(!

  8. #7
    CI New thanghach's Avatar
    Ngày tham gia
    21-03-2015
    Bài viết
    1
    Cảm ơn
    0
    Được cảm ơn 0 trong 0 bài viết
    Mình mới làm quen với CI nên chưa hiểu file template.php lấy ở đâu để copy vô như hướng dẫn này của bạn à. Thanks.

    "- File Template.php (đây là thư viện template)
    - File template.php(đây là file config template)"


  9. #8
    CI New memlaptrinh's Avatar
    Ngày tham gia
    13-05-2015
    Bài viết
    3
    Cảm ơn
    0
    Được cảm ơn 0 trong 0 bài viết
    TRước đây mình hay làm web với wordpress mới làm quen với codeigniter, chưa có nhiều kinh nghiệm. Quản lý template có giống bên wordpress không vậy ?

Chia sẽ và Bình Luận chủ đề Quản lý template trong CodeIgniter trên facebook

Các Chủ đề tương tự

  1. Twig template engine implementation for CodeIgniter
    Bởi 2webvn.com trong diễn đàn Cho thành viên mới bắt đầu
    Trả lời: 3
    Bài cuối: 03-12-2013, 02:18 PM
  2. Smarty Parser, Template Library và CodeIgniter
    Bởi battai trong diễn đàn Hỏi đáp
    Trả lời: 2
    Bài cuối: 19-11-2013, 08:13 AM
  3. Trả lời: 3
    Bài cuối: 14-08-2013, 01:10 PM
  4. [Hỏi] load view trong master template HMVC
    Bởi oaipro trong diễn đàn Hỏi đáp
    Trả lời: 1
    Bài cuối: 27-04-2013, 03:08 PM
  5. Sử dụng template trong Codeigniter Framework
    Bởi tinhphaistc trong diễn đàn Turtorial
    Trả lời: 0
    Bài cuối: 01-03-2013, 11:02 PM

Các từ khóa xuất hiện trên google của chủ đề

to chuc layout codeigniter

code thực hiện chức năng quản lý template website php

code thực hiện chức năng thay đổi giao diện template website php

Tag của Chủ đề này - Hãy Thêm Tags Để bài viết nhanh lên top google

Quyền viết bài

  • Bạn không thể đăng chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi đính kèm
  • Bạn không thể sửa bài
  •