Identifying and using variables in templates - Xác định và sử dụng các biến trong template XenForo 2
Biến là gì?
Nói một cách đơn giản, biến là tên chứa các giá trị.
Các giá trị này được lưu trữ trong cơ sở dữ liệu và được sử dụng trong các template để đánh giá và trình bày nội dung và dữ liệu.
Sử dụng các biến trong các template mở ra rất nhiều khả năng tùy chỉnh và sửa đổi giao diện và hành vi của cài đặt XF.
Hầu hết các bạn có lẽ đã biết về việc sử dụng các biến theo cách này hay cách khác, ví dụ: thông qua các câu lệnh điều kiện -
Tuy nhiên, có nhiều cách sử dụng cho các biến, một khi bạn biết cách xác định và sử dụng chúng.
Hướng dẫn này nhằm giải thích cách thực hiện điều đó.
Kiểm tra các biến có sẵn trong template
Bước đầu tiên là kết xuất các biến trong template mà bạn muốn truy cập vào chúng.
Nếu bạn không biết tên của biến hoặc muốn kiểm tra tất cả các biến có sẵn cho một template cụ thể, điều đó được thực hiện bằng cách thêm code sau vào template:
Ví dụ: đối với template
Xác định một biến cụ thể
Khi điều hướng đến một chủ đề, một block code sẽ xuất hiện ở đầu chủ đề, block này chứa tất cả các biến có sẵn cho template.
Nếu bạn quan tâm đến một biến cụ thể, bạn có thể đi sâu để xem cú pháp chính xác.
Bất kỳ mục nhập nào có giá trị # và / hoặc ▶ trong dấu ngoặc cho biết rằng nó có thể được mở rộng để xem nội dung mảng.
Như tooltip giải thích , nhấn
Trong ví dụ này, chúng ta muốn xem liệu có bất kỳ biến tác giả chủ đề nào không và định dạng là gì.
Vì vậy, trước tiên chúng ta mở rộng
Sau đó
Vì vậy, bây giờ chúng ta có thể thấy rằng các khóa liên quan đến tác giả chủ đề là
Điều này tạo nên các biến
Chúng ta có thể xác nhận điều đó bằng cách kết xuất các biến chính xác đó trong template, như sau:
Nếu các biến hợp lệ, chúng sẽ trả về các giá trị tương ứng với các biến đó, trong trường hợp này là user ID là 1 và tên người dùng của thành viên là Test.
Nếu các biến không hợp lệ, chẳng hạn như nếu chúng ta cố gắng kết xuất
Ngoài ra, nếu bạn đã bật chế
Sau đó, sẽ có một thông báo lỗi hiển thị liên quan đến biến không hợp lệ.
Sử dụng một biến
Tất cả những thứ đó đều tốt, nhưng nó có công dụng gì và nó có thể được sử dụng như thế nào?
Chúng ta hãy xem, chúng ta sẽ?
Với mục đích của hướng dẫn này, bây giờ chúng ta đã có biến tác giả chủ đề, chúng ta có thể sử dụng biến đó để xác định và đánh dấu các bài đăng của tác giả trong một chủ đề.
Nhìn sâu hơn xuống template chủ đề, chúng ta có thể thấy rằng các bài đăng được xuất bằng code sau:
Như trước đây, chúng ta có thể kết xuất các biến áp dụng cho phần này của template và khi chúng ta quan tâm đến các bài đăng, chúng ta có thể giả định rằng
Để làm cho mọi thứ rõ ràng hơn, bạn cũng có thể thêm một số văn bản cho mỗi biến mà bạn đang kết xuất.
Kết quả là bây giờ chúng ta có thể thấy ID tác giả chủ đề và ID tác giả bài đăng cá nhân.
Bây giờ chúng ta có thể chỉnh sửa template
Kết quả là
Rõ ràng đây chỉ là cho các mục đích của hướng dẫn này và nó sẽ không thực sự được thực hiện theo cách đó.
Tuy nhiên, nó hy vọng giải thích cách truy cập và sử dụng các biến trong các template.
Chúc các bạn thành công.
Biến là gì?
Nói một cách đơn giản, biến là tên chứa các giá trị.
Các giá trị này được lưu trữ trong cơ sở dữ liệu và được sử dụng trong các template để đánh giá và trình bày nội dung và dữ liệu.
Sử dụng các biến trong các template mở ra rất nhiều khả năng tùy chỉnh và sửa đổi giao diện và hành vi của cài đặt XF.
Hầu hết các bạn có lẽ đã biết về việc sử dụng các biến theo cách này hay cách khác, ví dụ: thông qua các câu lệnh điều kiện -
<xf:if is="$xf.visitor.user_id">
, hoặc điều kiện hiển thị widget - $xf.reply.containerKey == 'node-1'
.Tuy nhiên, có nhiều cách sử dụng cho các biến, một khi bạn biết cách xác định và sử dụng chúng.
Hướng dẫn này nhằm giải thích cách thực hiện điều đó.
Kiểm tra các biến có sẵn trong template
Bước đầu tiên là kết xuất các biến trong template mà bạn muốn truy cập vào chúng.
Nếu bạn không biết tên của biến hoặc muốn kiểm tra tất cả các biến có sẵn cho một template cụ thể, điều đó được thực hiện bằng cách thêm code sau vào template:
HTML:
{{ dump(vars()) }}
Ví dụ: đối với template
thread_view
, bạn sẽ chỉnh sửa template như sau:
HTML:
{{ dump(vars()) }}
<xf:title page="{$page}">{{ prefix('thread', $thread, 'escaped') }}{$thread.title}</xf:title>
<xf:h1>{{ prefix('thread', $thread) }}{$thread.title}</xf:h1>
<xf:if is="!$thread.isSearchEngineIndexable()">
<xf:head option="metaNoindex"><meta name="robots" content="noindex" /></xf:head>
</xf:if>
Khi điều hướng đến một chủ đề, một block code sẽ xuất hiện ở đầu chủ đề, block này chứa tất cả các biến có sẵn cho template.
Bất kỳ mục nhập nào có giá trị # và / hoặc ▶ trong dấu ngoặc cho biết rằng nó có thể được mở rộng để xem nội dung mảng.
CTRL+click
sẽ mở rộng mọi thứ trong một lần.Trong ví dụ này, chúng ta muốn xem liệu có bất kỳ biến tác giả chủ đề nào không và định dạng là gì.
Vì vậy, trước tiên chúng ta mở rộng
thread
:
_values
, cung cấp cho chúng ta:
user_id
và username
.
$thread.user_id
và $thread.username
. Chúng ta có thể xác nhận điều đó bằng cách kết xuất các biến chính xác đó trong template, như sau:
thread.userid
(lưu ý rằng thiếu dấu _
giữa user
và id
), thì giá trị null
sẽ được trả về.
debug
hoặc development
, thì không có ai trên trang web sản xuất của họ, phải không? Đúng!?Sau đó, sẽ có một thông báo lỗi hiển thị liên quan đến biến không hợp lệ.
Tất cả những thứ đó đều tốt, nhưng nó có công dụng gì và nó có thể được sử dụng như thế nào?
Chúng ta hãy xem, chúng ta sẽ?
Với mục đích của hướng dẫn này, bây giờ chúng ta đã có biến tác giả chủ đề, chúng ta có thể sử dụng biến đó để xác định và đánh dấu các bài đăng của tác giả trong một chủ đề.
Nhìn sâu hơn xuống template chủ đề, chúng ta có thể thấy rằng các bài đăng được xuất bằng code sau:
Mã:
<xf:foreach loop="$posts" value="$post">
<xf:extension name="messages_block_body_before_post"></xf:extension>
<xf:if is="$post.message_state == 'deleted'">
<xf:macro name="{{ $templateOverrides.post_deleted_macro ?: 'post_macros::post_deleted' }}"
arg-post="{$post}"
arg-thread="{$thread}"
args="{$templateOverrides.post_deleted_macro_args}" />
<xf:else />
<xf:macro name="{{ $templateOverrides.post_macro ?: 'post_macros::post' }}"
arg-post="{$post}"
arg-thread="{$thread}"
arg-highlightedPosts="{$highlightedPosts}"
args="{$templateOverrides.post_macro_args}" />
</xf:if>
<xf:extension name="messages_block_body_after_post"></xf:extension>
</xf:foreach>
Như trước đây, chúng ta có thể kết xuất các biến áp dụng cho phần này của template và khi chúng ta quan tâm đến các bài đăng, chúng ta có thể giả định rằng
$post.user_id
là một trong số chúng, vì vậy chúng ta thực hiện:
Kết quả là bây giờ chúng ta có thể thấy ID tác giả chủ đề và ID tác giả bài đăng cá nhân.
thread_view
bằng câu lệnh có điều kiện để đánh giá ID người dùng bài đăng so với ID người dùng chủ đề, như sau:
Thread Author
được hiển thị phía trên mỗi bài đăng được tạo bởi người tạo chủ đề.
Tuy nhiên, nó hy vọng giải thích cách truy cập và sử dụng các biến trong các template.
Chúc các bạn thành công.
Nguồn: xenforo.com
Bài viết liên quan
Bài viết mới