Additional Filters
Tài liệu theo cú pháp Lingo/Django. Cuộn xuống để đọc đầy đủ hướng dẫn; chọn tên trong danh sách để đến phần tương ứng.
Danh sách đặc tả
| THAM KHẢO | DÙNG TRONG SKAI | TRẠNG THÁI |
|---|---|---|
date | date | Có sẵn · tái sử dụng |
default | default | Có sẵn · tái sử dụng |
default_errors | form_errors | Đang phát triển |
default_pagination | pagination_links | Đang phát triển |
highlight | highlight | Đang phát triển |
highlight_active_tag | active_tag_class | Đang phát triển |
json | json_script | Có sẵn · tái sử dụng |
weight_with_unit | weight_with_unit | Đang phát triển |
Quy ước cú pháp, bảo mật và trạng thái →
Tham khảo danh mục: Haravan. Đặc tả Skai được biên soạn độc lập theo Lingo.
date & date_go
Xem bảng token PHP và hướng dẫn date_go cho theme cũ →
Có sẵn · tái sử dụngĐịnh dạng ngày. Dùng khả năng hiện có, không tạo alias hoặc triển khai engine trùng chức năng.
Hợp đồng sử dụng
| Đầu vào | time.Time do resolver cung cấp |
|---|---|
| Tham số | format: chuỗi token PHP, ví dụ Y-m-d |
| Đầu ra | string |
Tái sử dụng Lingo hiện có; kiểm thử tích hợp và allowlist trước khi công bố hỗ trợ trong theme.
{# published_at = thời gian 2026-09-17 UTC #}
{{ published_at|date:"Y-m-d" }}2026-09-17Trường hợp biên và an toàn
Timezone phải được resolver quyết định; không hỗ trợ %Y-%m-%d theo mặc định.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Khóa hành vi của implementation hiện tại bằng test; không sửa ngữ nghĩa để khớp Liquid.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: date. Dùng tên/cú pháp Lingo hoặc helper Skai ghi ở đầu trang, không tạo alias tương thích Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
default
Có sẵn · tái sử dụngGiá trị dự phòng. Dùng khả năng hiện có, không tạo alias hoặc triển khai engine trùng chức năng.
Hợp đồng sử dụng
| Đầu vào | any |
|---|---|
| Tham số | fallback: any |
| Đầu ra | giá trị gốc hoặc fallback |
Tái sử dụng Lingo hiện có; kiểm thử tích hợp và allowlist trước khi công bố hỗ trợ trong theme.
{{ 0|default:"Chưa có" }}Chưa cóTrường hợp biên và an toàn
0, false, chuỗi rỗng đều falsy. Dùng default_if_none khi cần giữ 0.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Khóa hành vi của implementation hiện tại bằng test; không sửa ngữ nghĩa để khớp Liquid.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: default. Dùng tên/cú pháp Lingo hoặc helper Skai ghi ở đầu trang, không tạo alias tương thích Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
form_errors
Đang phát triểnHiển thị lỗi form. Bản thiết kế v0.1 để review trước khi triển khai, chưa phải API phát hành.
Hợp đồng sử dụng
| Đầu vào | map field → list thông báo đã chuẩn hóa |
|---|---|
| Tham số | Không có |
| Đầu ra | SafeHTML danh sách lỗi |
Bổ sung mới; cú pháp và hành vi bên dưới là đề xuất, chưa khả dụng.
{{ error.field_errors|form_errors }}Danh sách lỗi theo thứ tự field từ schema, nội dung được escape.Trường hợp biên và an toàn
Chỉ hiện lỗi public; không stacktrace/SQL; null → chuỗi rỗng. Cần adapter vì kiểu error hiện tại chưa chắc là list.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Sai tham số phải trả lỗi có tên filter/tag; preview hiển thị vị trí lỗi, production không lộ nội bộ.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: default_errors. Hợp đồng và ví dụ là đề xuất riêng cho Skai, không sao chép contract Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
pagination_links
Đang phát triểnĐiều hướng phân trang. Bản thiết kế v0.1 để review trước khi triển khai, chưa phải API phát hành.
Hợp đồng sử dụng
| Đầu vào | Pagination DTO |
|---|---|
| Tham số | options object tùy chọn: radius integer 1–3 |
| Đầu ra | SafeHTML nav |
Bổ sung mới; cú pháp và hành vi bên dưới là đề xuất, chưa khả dụng.
{# pagination do resolver cấp, tổng trang 3, hiện tại 2 #}
{{ pagination|pagination_links }}Điều hướng trang 1, 2 đang chọn, 3 với aria-current.Trường hợp biên và an toàn
URL phải cùng scope ứng dụng; preserve query allowlist, encode. Không tự truy vấn DB; một trang → có thể ẩn nav.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Sai tham số phải trả lỗi có tên filter/tag; preview hiển thị vị trí lỗi, production không lộ nội bộ.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: default_pagination. Hợp đồng và ví dụ là đề xuất riêng cho Skai, không sao chép contract Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
highlight
Đang phát triểnĐánh dấu từ khóa. Bản thiết kế v0.1 để review trước khi triển khai, chưa phải API phát hành.
Hợp đồng sử dụng
| Đầu vào | plain text |
|---|---|
| Tham số | term: string, không regex |
| Đầu ra | SafeHTML chứa mark |
Bổ sung mới; cú pháp và hành vi bên dưới là đề xuất, chưa khả dụng.
{{ "Áo xanh"|highlight:"xanh" }}<mark>xanh</mark> nằm sau văn bản Áo.Trường hợp biên và an toàn
Escape toàn bộ text trước, đánh dấu trên chuỗi gốc; term rỗng → text escaped; giới hạn số match.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Sai tham số phải trả lỗi có tên filter/tag; preview hiển thị vị trí lỗi, production không lộ nội bộ.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: highlight. Hợp đồng và ví dụ là đề xuất riêng cho Skai, không sao chép contract Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
active_tag_class
Đang phát triểnĐánh dấu tag lọc. Bản thiết kế v0.1 để review trước khi triển khai, chưa phải API phát hành.
Hợp đồng sử dụng
| Đầu vào | tag key |
|---|---|
| Tham số | selected: list<string> |
| Đầu ra | string class hoặc rỗng |
Đề xuất trả class thay HTML, dùng explicit selected list.
{{ "sale"|active_tag_class:["sale","new"] }}is-activeTrường hợp biên và an toàn
So key chính xác; không ghép HTML; không lấy global state ngầm.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Sai tham số phải trả lỗi có tên filter/tag; preview hiển thị vị trí lỗi, production không lộ nội bộ.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: highlight_active_tag. Hợp đồng và ví dụ là đề xuất riêng cho Skai, không sao chép contract Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
json_script
Có sẵn · tái sử dụngXuất JSON. Dùng khả năng hiện có, không tạo alias hoặc triển khai engine trùng chức năng.
Hợp đồng sử dụng
| Đầu vào | DTO public serializable |
|---|---|
| Tham số | id: string tùy chọn |
| Đầu ra | SafeHTML script type="application/json" |
Dùng json_script của Lingo, bỏ đề xuất tojson/json mới.
{# public_data = {"name":"Skai"} #}
{{ public_data|json_script:"product-data" }}<script id="json-script-product-data" type="application/json">{"name":"Skai"}</script>Trường hợp biên và an toàn
Filter đã encode HTML-sensitive characters. Không dùng trong attribute hoặc lồng script; strict profile chưa bật. Chỉ serialize DTO đã loại dữ liệu private.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Khóa hành vi của implementation hiện tại bằng test; không sửa ngữ nghĩa để khớp Liquid.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: json. Dùng tên/cú pháp Lingo hoặc helper Skai ghi ở đầu trang, không tạo alias tương thích Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.
weight_with_unit
Đang phát triểnHiển thị khối lượng. Bản thiết kế v0.1 để review trước khi triển khai, chưa phải API phát hành.
Hợp đồng sử dụng
| Đầu vào | integer gram |
|---|---|
| Tham số | unit: g hoặc kg, mặc định g |
| Đầu ra | string |
Bổ sung mới; cú pháp và hành vi bên dưới là đề xuất, chưa khả dụng.
{{ 1250|weight_with_unit:"kg" }}1.25 kgTrường hợp biên và an toàn
Đề xuất đầu ra invariant cho v1; âm → lỗi; 0 hợp lệ. Locale formatter là mở rộng riêng.
Tiêu chí nghiệm thu
- Kiểm thử ví dụ ở trên cùng đầu vào rỗng, Unicode, sai kiểu và giới hạn đầu ra.
- Sai tham số phải trả lỗi có tên filter/tag; preview hiển thị vị trí lỗi, production không lộ nội bộ.
- Không I/O, truy vấn hoặc thay đổi dữ liệu từ template; dữ liệu commerce chỉ qua resolver có quyền.
- Kiểm thử escaping và profile runtime trước khi công bố cho theme.
Nguồn & quyết định chuyển đổi
Tên tham khảo: weight_with_unit. Hợp đồng và ví dụ là đề xuất riêng cho Skai, không sao chép contract Liquid.
Nguồn tham khảo Haravan · Quy ước đặc tả Skai
Đối chiếu mã nguồn local: skaiplatform/lingo/filters_builtin.go, tags_*.go, security.go và skaiweb/services/theme_engine/functions.go. Badge “Đang phát triển” biểu thị tài liệu dự kiến, không xác nhận engine đã được triển khai.