xStore.flashSales

Chương trình giảm giá theo khung giờ và sản phẩm thuộc chương trình.

Phương thức

Phương thức Cú pháp Mô tả Từ phiên bản
list xStore.flashSales.list({ limit }): Promise<CursorPaginatedResponse<FlashSale>> Chương trình ĐANG chạy, so theo đồng hồ máy chủ. Rỗng = không có khung giờ nào đang mở. 2.1
get xStore.flashSales.get(saleId): Promise<FlashSale> Chi tiết một chương trình, kèm starts_at / ends_at. 2.1
products xStore.flashSales.products(saleId, { limit }): Promise<CursorPaginatedResponse<FlashSaleProduct>> Sản phẩm trong chương trình. Mỗi dòng là THẺ SẢN PHẨM đầy đủ cộng thêm deal_price, ends_at, remaining. 2.1

Ví dụ đầy đủ

<script>
  // Danh sách chỉ trả về chương trình ĐANG chạy theo đồng hồ máy chủ.
  // Rỗng nghĩa là không có khung giờ nào đang mở, KHÔNG phải chưa cấu hình.
  async function renderFlash() {
    const ct = await xStore.flashSales.list({ limit: 5 });
    if (ct.items.length === 0) return;

    const dot = ct.items[0];
    const sp  = await xStore.flashSales.products(dot.id, { limit: 12 });

    // Mỗi dòng là một THẺ SẢN PHẨM đầy đủ, có thêm deal_price / remaining.
    document.getElementById('flash').innerHTML = sp.items.map((p) => `
      <a class="product-card" href="${p.url ?? '#'}">
        <img src="${p.cover_image_url ?? ''}" alt="${p.title}" loading="lazy">
        <span>${p.title}</span>
        <span>${xStore.utils.formatCurrency(p.deal_price ?? p.price ?? 0)}</span>
        <small>Còn ${p.remaining ?? 0} suất</small>
      </a>
    `).join('');
  }

  renderFlash();
</script>

Thư viện gọi tới /api/... trên chính tên miền cửa hàng, nên không cần khai báo địa chỉ máy chủ ở bất kỳ đâu.

Xem thêm Sự kiện để giao diện tự cập nhật sau mỗi thao tác.