paginate
Đang phát triểnPhân trang dữ liệu. Bản thiết kế v0.1 để review trước khi triển khai, chưa phải API phát hành.
Chưa khả dụngVí dụ minh họa thiết kế, không phải cú pháp đã hoạt động. Chỉ lập trình sau khi chốt kiểu dữ liệu, lỗi và kiểm thử.
Hợp đồng sử dụng
| Đầu vào | PageQuery DTO từ resolver có scope |
|---|---|
| Tham số | Cú pháp đề xuất: paginate query by page_size as pagination … endpaginate |
| Đầu ra | pagination.items và metadata |
Đặc tả mở rộng Skai; chưa được engine hỗ trợ.
CÚ PHÁP ĐỀ XUẤT · CHƯA CHẠY TRÊN RUNTIME
{% paginate catalog_query by 12 as pagination %}
{% for item in pagination.items %}{{ item.title }}{% endfor %}
{% endpaginate %}KẾT QUẢ MONG MUỐN · ĐẶC TẢ
Chỉ một trang tối đa 12 mục; total_pages/current_page do resolver cung cấp.Trường hợp biên và an toàn
Giới hạn page_size 1–100; page từ request đã parse; query workspace/app bắt buộc. Không slice dữ liệu đã tải hết; không gọi SQL từ template.
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: paginate. 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 Shopify · 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.