Sử dụng điều kiện b:if cho một trang hoặc một nhóm trang cụ thể chắc hẳn nhiều người đã biết nhưng sử dụng kết hợp AND và OR thì số người biết không nhiều cho nên rất ít người sử dụng. Ưu điểm khi sử dụng điều kiện kết hợp 'AND' và 'OR' trong b:if giúp rút ngắn thành một điều kiện b:if duy nhất thay vì phải sử dụng nhiều điều kiện b:if
Nguyên tắc khi sử dụng kiện kết hợp 'AND' và 'OR' sẽ trả về một giá trị đúng (TRUE) hoặc sai (FALSE), nếu trả về giá trị TRUE sẽ hiển thị nội dung còn (FALSE) không hiển thị nội dung.
Nguyên tắc sử dụng điều kiện kết hợp 'AND' và 'OR' trả về giá trị TRUE
- Trong các điều kiện nếu mỗi điều kiện đều bằng với là thì sử dụng điều kiện 'OR'
- Trong các điều kiện nếu mỗi điều kiện không bằng với thì sử dụng điều kiện 'AND'
- Trong các điều kiện có cả điều kiện bằng với và điều kiện không bằng với thì sử dụng điều kiện 'AND' trước điều kiện không bằng với và 'OR' trước điều kiện bằng với
Ví dụ minh họa
- Sử dụng điều kiện kết hợp 'OR'
Điều kiện với trang chủ hoặc trang bài viết
<b:if cond='data:view.isHomepage or data:view.isPost'> Trả về giá trị đúng (TRUE)
<b:if cond='data:view.isHomepage and data:view.isPost'> Trả về giá trị sai (FALSE)
- Sử dụng điều kiện 'AND'
Điều kiện với nhóm trang index và không phải trên Mobile
<b:if cond='data:view.isMultipleItems and !data:blog.isMobileRequest'>...</b:if> Trả về giá trị đúng (TRUE)
<b:if cond='data:view.isMultipleItems or !data:blog.isMobileRequest'>...</b:if> Trả về giá trị sai (FALSE)
Điều kiện với nhóm trang index và không phải trang tìm kiếm theo Label và không phải trang tìm kiếm kết quả
<b:if cond='data:view.isMultipleItems and !data:view.isLabelSearch and !data:view.search.query'>...</b:if> Trả về giá trị đúng (TRUE)
Danh sách các trang và nhóm trang được sử dụng xuyên suốt XML của chủ đề
- data:view.isHomepage Trang chủ
- data:view.search.label Trang tìm kiếm theo Label
- data:blog.searchLabel == "LABEL_NAME" Cho trang tìm kiếm theo một Label cụ thể
- data:view.search.query Trang tìm kiếm kết quả
- data:view.isSearch Bao gồm các trang tìm kiếm có liên kết /search
- data:view.isArchive Trang lưu trữ
- data:view.isMultipleItems Bao gồm tất cả các trang tìm kiếm, trang chủ, trang lưu trữ
- data:view.isPost Trang bài viết
- data:blog.postId == "POST_ID" Cho ID của một bài viết cụ thể
- data:view.isPage Trang tĩnh
- data:blog.pageId == "PAGE_ID" Cho ID của một trang tĩnh cụ thể
- data:view.isSingleItem Bao gồm trang bài viết và trang tĩnh
- data:blog.isMobileRequest: Yêu cầu chỉ tải trang trên mobile hay ?m=1 sau liên kết
- data:view.isError Trang lỗi
Cách sử dụng điều kiện B:IF kết hợp
- not tương đương với !
Ví dụ không phải trang tĩnh
<b:if cond='not data:view.isPage'>...</b:if>
tương đương với
<b:if cond='!data:view.isPage'>...</b:if>
- and tương đương &&
Ví dụ điều kiện với nhóm trang index và không phải trang tìm kiếm theo Label
<b:if cond='data:view.isMultipleItems and !data:view.search.label'>...</b:if>
tương đương với
<b:if cond='data:view.isMultipleItems && !data:view.search.label'>...</b:if>
- or tương đương với ||
Ví dụ về điều kiện với trang chủ hoặc trang bài viết
<b:if cond='data:view.isHomepage or data:view.isPost'>...</b:if>
tương đương với
<b:if cond='data:view.isHomepage || data:view.isPost'>...</b:if>
Phần mở rộng
Không nhất thiết phải sử dụng điều kiện trong b:if mà có thể sử dụng điều kiện trực tiếp trong các thẻ tag b:section, b:widget, b:include, b:eval