Tìm kiếm nhanh

Hướng dẫn sử dụng XTemplate trong Nukeviet 4

Thảo luận trong 'Các khóa học về modules' đăng bởi ngoctu2008, 08/08/2016 04:10.

  • ngoctu2008

    ngoctu2008 Phạm Ngọc Tú

    XTEMPLATE

     

    Bài 1: Cơ bản về Xtemplate
    Các bạn có thể xem và download xtemplate tại địa chỉ:
    http://www.phpxtemplate.org.
    Xtemplate được nhận biết bằng các Block. Và block lớn nhất thường đặt là main. Các block được bắt đầu và kết thúc bởi các cặp comment.
    Template: ( templ.tpl )

    <!-- BEGIN: xxxxx -->
    <!-- END: xxxxx -->
    


    Trong đó xxxx là biến
    VD:

    <!-- BEGIN: main -->
    <html>
    <head><title>Vi du</title></head>
    <body>
    {vidu}
    </body>
    </html>
    <!-- BEGIN: main -->


    Code PHP:
    Trong PHP Code thì Xtemplate sẽ được viết như sau:

    <?php
    include_once('./xtemplate.class.php');
    $xtpl = new XTemplate('templ.tpl');
    //Gán giá trị
    $xtpl->assign('vidu', "Vi du ve Xtemplate");
    //Không biết dịch từ này thế nào, nhưng tạm hiểu là in giá trị của 1 block.
    $xtpl->parse('main');
    //In ra
    $xtpl->out('main');
    //(2 cái cuối chả bik dịch thế nào, thôi thì bik thế đã :D)
    ?>

    Chú ý hàm parse:
    Parse phải được viết theo thứ tự của block và cách nhau bởi dấu chấm.
    VD ngoài cùng là main, tiếp theo là block1,block2,block3 thì sẽ viết như thế này:

    <?php
    ...
    $xtpl->parse('main.block1.block2.block3');
    ...
    ?>
    


    assign(Biến cần gán giá trị,giá trị cần gán)
    parse(tên của block)


    Bài 2: Mảng giá trị
    (chú ý: Trong bài này mình sẽ bỏ bớt những phần khai báo ở bài trước. )
    Bạn khai báo 1 mảng trong PHP

    <?php
    ...
    $mang = array(
    'id'=>"1",
    'ten'=>"TK",
    'tuoi'=>"21"
    );
    //Gán giá trị của mảng vào DATA
    $xtpl->assign('DATA',$mang);
    $xtpl->parse('main. table');
    ...
    ?>


    Template:
    ...

    
    <!-- BEGIN: table#Bạn có thể comment ở đây -->
    <table border="1">
    <tr>
    <td>id</td>
    <td>{DATA.id}</td>
    </tr>
    <tr>
    <td>Tên</td>
    <td>{DATA.ten#Bạn có thể comment ở đây}</td>
    </tr>
    <tr>
    <td>Tuổi</td>
    <td>{DATA.tuoi}</td>
    </tr>
    </table>
    <!-- END: table -->
    ...
    


    Chú ý: Trong Xtemplate bạn có thể sử dụng Comment bằng cách thêm dấu # như ở VD trên.


    Bài 3: Vòng lặp
    Trong Xtemplate có 1 cái mình thấy khá là thú vị, đó là mình có thể lặp 1 block bằng PHP. VD:

    <?php
    ...
    for($i=0;$i<10;$i++){
    $xtpl->parse('main.loop');
    }
    ...
    ?>


    Template:


    ...
    <b>Ví dụ về lặp 1 block</b>

    <!-- BEGIN: loop -->
    Hehe ta se lap cai nay<br>
    <!-- END: loop -->

    ...


    Bạn cũng có thể in lại nhiều lần 1 block bằng cách parse nhiều lần. VD:

    <?php
    ...
    $xtpl->parse('main.loop');
    $xtpl->parse('main.loop');
    $xtpl->parse('main.loop');
    $xtpl->parse('main.loop');
    ...
    ?>


    Bạn có thể thay đổi biến rồi parse ra.VD:

    <?php
    ...
    $xtpl->assgin('vd',"hello, i'm TK")
    $xtpl->parse('main.loop');
    $xtpl->assgin('vd',"Welcome to xtemplate")
    $xtpl->parse('main.loop');
    $xtpl->assgin('vd',"Xtemplate so easy!")
    $xtpl->parse('main.loop');
    ...
    ?>


    Template:


    ...
    <b>Ví dụ về lặp 1 block</b>

    <!-- BEGIN: loop -->
    {vd}<br>
    <!-- END: loop -->

    ...

     

    Bài 4: Đặt giá trị cho toàn bộ block.
    Đến đây mình bắt đầu thấy khá thích cái Xtemplate rồi đấy. http://www.phpbasic.com/plugins/emotions/images/6.gifbạn có thể đặt giá trị cho tất cả các biến trong block. VD:
    Template


    ...

    <!-- BEGIN: form -->
    <form action="#">
    <input type="text" size="20" name="fullname" value="{FULLNAME}" /><br />
    <input type="text" size="20" name="email" value="{EMAIL}" />
    <input type="text" size="20" name="income" value="{INCOME}" />
    </form>
    <!-- END: form -->


    ...


    PHP Code:

    <?php
    ...
    $xtpl->set_null_string('no value..');
    $xtpl->set_null_string('no email specified!', 'EMAIL');
    $xtpl->parse('main.form');
    ...
    ?>


    Như vậy với ví dụ trên thì chỉ có {EMAIL} là được gán giá trị, còn lại sẽ được gán bằng giá trị đã khai báo ở trên. ( trong ví dụ là: no value... )
    Hàm set_null_string:


    set_null_string(giá trị cần gán,[biến cần gán]);

     

    Bài 5: block con và gán giá trị cho block.
    Trong 1 block bạn có thể khai báo các block con.
    VD:


    ...

    <!-- BEGIN: block -->
    Block o day
    <!-- BEGIN: subblock1 -->
    Noi dung cua subblock1
    <!-- END: subblock1 -->
    
    <!-- BEGIN: subblock2 -->
    Noi dung cua subblock2
    <!-- END: subblock2 -->
    
    <!-- END: block -->


    ...


    Nếu bạn không parse các subblock thì chúng sẽ không được in ra.
    VD:

    <?php
    ...
    $xtpl->parse('main.block');
    ...
    ?>


    Khi in ra sẽ chỉ có chữ: Block ở đây. Nếu muốn các block kia được in ra bạn phải parse chúng:

    <?php
    ...
    $xtpl->parse('main.block');
    $xtpl->parse('main.block.subblock1');
    $xtpl->parse('main.block.subblock2');
    ...
    ?>



    Gán giá trị cho 1 block.


    set_null_block(giá trị cần gán,[tên block cần gán]);


    VD:

    <?php
    ...
    $xtpl->set_null_block('block con!');
    $xtpl->set_null_block('Block1!', 'main.block.subblock1');
    $xtpl->parse('main.block');
    ...
    ?>


    Template:


    ...

    <!-- BEGIN: block -->
    <!-- BEGIN: subblock1 -->
    <b>blog con 1</b>
    <!-- END: subblock1 -->
    <!-- BEGIN: subblock2 -->
    <b>blog con 2</b>
    <!-- END: subblock2 -->
    ....
    <!-- END: block -->


    ..


    Khi chạy subblock1 sẽ được in ra dòng chữ: Block1
    Còn subblock2 và tất cả các sublock trong block sẽ được in ra dòng chữ: block con

     

    Bài 6: Include 1 file.
    Để chèn 1 file vào template mà không cần thông qua PHP ta sẽ sử dụng hàm sau:

    {FILE "file cần chèn"}

     
  • anhyeuviolet

    anhyeuviolet Kenny Nguyen

    include_once('./xtemplate.class.php');

     

    Cái đấy giờ đâu có gọi nữa.

    Nó được gọi sẵn trong core rồi mà.

     
  • huongpro_love

    huongpro_love Nguyễn Văn Hưởng

    Bài này là copy của trang khác a ạ :3

     
  • ngoctu2008

    ngoctu2008 Phạm Ngọc Tú

    Uhm! Mình thấy cũng hay nên copy lên anh em tham khảo!

     
  • huongpro_love

    huongpro_love Nguyễn Văn Hưởng

    Rất hữu ích cho ae mà :D Mình cũng từng đọc qua bài này :D

     

Chia sẻ trang này

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây