Tìm hiểu về template trong Xenforo

Thảo luận trong 'Xenforo' bắt đầu bởi An Nguyen, 31/8/18.

  1. An Nguyen

    An Nguyen bụi Ban quản trị

    31/8/18
    #1
    Trước khi nghiên cứu về Xenforo cần hiểu template trong XF là gì

    1. Template là gì?

    Để dễ hiểu thì xin mời bạn làm việc sau
    Vào admin.php?templates/ ở ô Filter Item gõ vào forum_list
    Ấn vào forum_list sau đó Ctrl A để chọn tất cả rồi Ctrl X để cắt hết chúng đi, trang của chúng ta sẽ không có gì nữa. Ấn Lưu lại và ra /index.php?forum (trang diễn đàn)của bạn
    Tất nhiên trang của bạn sẽ chỉ còn mỗi phần đầu (header) và đuôi (footer) mà phần thân không có gì. Là vì bạn vừa xóa trắng forum_list

    Vậy hiểu ngắn gọn, template là cái khung hiển thị mọi thứ lên trang theo cách mà admin chỉnh sửa. Admin mà xóa trắng nó đi thì bên ngoài cũng chỉ có trắng thôi. ^^!

    forum_list ở đây được gọi là một template.

    Tiếp theo bạn lại quay về trang sửa template vừa rồi, Ctrl V để paste lại đoạn code vừa cắt và tìm một vị trí bất kì ví dụ như dòng đầu tiên của template đó thêm vào dòng chữ.
    Sau đó ấn Lưu lại và lại F5 trang diễn đàn của bạn sẽ thấy nội dung Xin chào tôi là Kid hiện lên.

    Không định nghĩa nào chính xác hơn thực nghiệm. Vì vậy trò nhỏ nhỏ vừa rồi bạn đã biết đâu là template, template ở đâu và sửa nó thì có tác dụng gì.

    Mình biết có bạn đọc tới đây sẽ hỏi tại sao lại biết trang chủ sử dụng template tên là forum_list để mà sửa?
    Xin trả lời: Các tên template đều có ý nghĩa gợi nhớ và có quy tắc đặt nhất định.

    Các bạn thấy đó, mỗi template được đặt tên đều mang tính gợi nhớ. Trang chủ là trang hiển thị các forum (chúng ta thường gọi nó là box) vì vậy trang chủ là danh sách các box và có tên template được đặt là forum_list

    Tương tự như vậy, để sửa nội dung của trang xem (view) chủ đề (thread) các bạn hãy tìm đến template tên là thread_view

    2. UserID
    ID là số thứ tự của mỗi thành viên bắt đầu từ 1. Thành viên đầu tiên bao giờ cũng là Admin có ID =1 và cứ tăng dần theo thứ tự đăng kí. Đây là giá trị được dùng nhiều nhất và là cái mấu chốt quan trọng nhất của mọi vấn đề.

    Xenforo có tính tùy biến rất cao. Đối với quan niệm các bạn thường nghĩ thì giao diện chỉ gồm HTML và CSS nhưng thực chất thiết kế giao diện cụ thể là thiết kế giao diện của Xenforo còn có thể làm những nhiệm vụ như một trang PHP đơn giản dựa trên nền tảng vững chắc mà Xenforo đã có từ trước.

    Thật vậy
    Ví dụ đầu tiên mình sẽ đưa ra cho các bạn thấy việc sử dụng câu lệnh điều kiện trong template Xenforo
    Ý tưởng mà bạn muốn thực hiện:
    - Nếu đã đăng nhập thì hiện chữ Xin chào bạn ABC
    (Trong đó ABC là tên người đã đăng nhập)
    - Nếu chưa đăng nhập thì hiện chữ Xin chào khách

    Phương pháp:
    Kiểm tra xem nếu tồn lại ID thì có nghĩa là người ấy đã đăng nhập, nếu không sẽ là khách.

    Thực hiện:
    Mở template forum_list
    Thêm vào dòng đầu tiên đoạn code

    Mã (Text):
    1. <xen:if is="{$visitor.user_id}">Xin chào {$visitor.username}
    2. <xen:else/>Bạn là khách</xen:if>
    Giải thích:
    Trong đời thường bạn dùng nếu ... thì... Trong lập trình bạn dùng if thì trong Xenforo chúng ta dùng


    Mã (Text):
    1. <xen:if is="điều kiện"> // Nếu thỏa mãn điều kiện
    2. ...các dòng lệnh // Thì thực hiện các dòng lệnh
    3. </xen:if> // Kết thúc
    Giải thích code ở ví dụ:

    Mã (Text):
    1. <xen:if is="{$visitor.user_id}"> // Nếu tồn tại user_id của visitorXin chào {$visitor.username} // Thì hiển thị xin chào Tên người ấy<xen:else/> // xen:else tức là : ngược lại thìBạn là khách // Hiện lên chào khách</xen:if>// Kết thúc
    Mở rộng:
    Như các bạn thấy ở trên mình sử dụng {$visitor.user_id} và {$visitor.username}
    Vậy 2 giá trị này từ đâu mà có?
    Thực chất $visitor[] là một mảng bao gồm các phần tử
    $visitor['user_id'] , $visitor['username'] và tất cả các giá trị khác liên quan đến thông tin thành viên. Nó đc lấy ra từ bảng xf_user trong cơ sở dữ liệu

    Để hiểu thêm bạn vui lòng mở phpMyadmin và mở table xf_user để biết

    lh5.googleusercontent.com__vN_FgZw53NM_UQ_jMRKAftI_AAAAAAAABOQ_QjBnAQv4ge0_s1600_ctber.net_a.jpg
    Xenforo đã làm giúp chúng ta phần việc quan trọng nhất đó là lấy toàn bộ thông tin của thành viên để đưa vào mảng $visitor[] và cách sử dụng thì như bạn thấy ở trên:

    Mã (Text):
    1. {$visitor.user_id}
    2. {$visitor.username}
    Nếu như trong PHP bạn dùng $visitor['username'] thì với template xenforo chỉ cần dùng dấu chấm như sau $visitor.username

    Quẩn quanh với 2 cái $visitor.username $visitor.user_id nhưng kèm cái hình bên trên chắc bạn cũng hiểu rồi nhỉ? Nếu bạn muốn timezone của người ta hiện lên thì làm sao?

    Đơn giản với bạn đúng ko? Sẽ là {$visitor.timezone}
    Và vậy muốn hiện số like của người ta đang có thì sao? {$visitor.like_count} chính là điều bạn cần ^^!

    Như vậy là mình đã giải thích xong cách hiện toàn bộ thông tin người đang truy cập và hiển thị ở một template bất kì nào đó.

    Code tổng kết

    Mã (Text):
    1. <xen:if is="{$visitor.user_id}">Xin chào {$visitor.username}<br/>Bạn đang có {$visitor.like_count} like(s) và<xen:if is="{$visitor.alerts_unread}==0">không có thông báo nào<xen:else/>có tới {$visitor.alerts_unread} thông báo chưa đọc</xen:if>
    Mã (Text):
    1. <xen:if is="{$visitor.visible}<1">À bạn ơi, bạn cứ đăng nhập ẩn thế mọi người nhớ bạn lắm, bật nick sáng lên nào bạn trẻ</xen:if>
    Mã (Text):
    1. <xen:else/>Bạn là khách</xen:if>
    Nếu là thành viên thì hiện thông báo chào, sau đó hiện ra số like của người ấy
    Nếu trạng thái đăng nhập ẩn sẽ hiện lời khuyên À bạn ơi, bạn cứ đăng nhập ẩn thế mọi người nhớ bạn lắm, bật nick sáng lên nào bạn trẻ
    Nếu số thông báo chưa đọc là 0 thì hiện ra Bạn đang có x like và không có thông báo nào
    Ngược lại thì hiện : Bạn có tới ... thông báo chưa đọc
     
    Sửa lần cuối: 31/8/18
Đã lưu nháp Draft deleted
Đang tải...