Pengantar
Blok konten yang dapat digunakan kembali yang dapat digunakan di berbagai halaman.
Informasi lebih lanjut tentang antarmuka pengguna modul https://doc.oneentry.cloud/docs/category/blocks
π― Apa yang dilakukan modul ini?β
Modul Blocks memungkinkan Anda mengambil komponen konten yang dapat digunakan kembali (blok) β sekumpulan atribut yang Anda buat sekali di panel admin dan gunakan kembali di halaman dan halaman produk: header, footer, spanduk, testimoni, slider, dan widget produk/rekomendasi. Perbarui sebuah blok sekali dan itu akan berubah di mana pun ia digunakan.
SDK bersifat hanya-baca: Anda mengambil blok di sini dan membuat atau mengeditnya di panel admin OneEntry.
π Memulai dengan Cepatβ
Inisialisasi modul dari defineOneEntry:
const { Blocks } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Ambil satu blok berdasarkan penandanya dan baca atributnya:
// Fetch the "footer" block.
const block = await Blocks.getBlockByMarker("footer", "en_US");
console.log(block.identifier, block.type, block.isVisible);
// "footer" "common_block" true
// Custom fields live in attributeValues.
console.log(block.attributeValues);
β¨ Konsep Kunciβ
Apa itu Blok?β
Sebuah blok adalah komponen konten yang dapat digunakan kembali yang berisi:
identifierβ penanda unik yang digunakan untuk merujuknya dalam kode (selalu gunakan penanda; itu tidak pernah berubah)localizeInfosβ data yang dilokalisasi (misalnyatitle), konten yang berbeda per bahasatypeβBlockTypeyang menentukan apa yang dirender oleh blokisVisibleβ bendera visibilitasattributeValuesβ bidang kustom yang Anda definisikan melalui AttributesSets
Struktur Blokβ
{
id: 3, // unique ID
localizeInfos: { // block localized data
title: 'Block', // block localized title
},
version: 0, // block version
position: 1, // block position in array of blocks
identifier: 'block', // block identifier (marker)
type: 'common_block', // block type
templateIdentifier: null, // template identifier
isVisible: true, // visibility
attributeValues: {}, // block attributes
}
π Apa yang Perlu Anda Ketahuiβ
- Rujuk blok berdasarkan penanda (
identifier) dalam kode β penanda tidak pernah berubah. - Blok dibuat di panel admin. SDK bersifat hanya-baca.
- Bidang kustom berasal dari AttributesSets. Contoh: blok footer (hak cipta, tautan sosial, informasi kontak), spanduk hero (judul, CTA, gambar latar), testimoni (penulis, foto, kutipan, penilaian).
- Blok vs. Halaman. Sebuah halaman adalah dokumen mandiri dengan URL (misalnya
/about) yang dibuat di modul Halaman; sebuah blok adalah komponen yang dapat digunakan kembali yang Anda masukkan ke dalam halaman.
π Tabel Referensi Cepat - Metode Umumβ
| Metode | Apa yang Dilakukan | Kapan Digunakan |
|---|---|---|
| getBlocks() | Mendapatkan semua blok (terpaginated, terfilter) | Daftar semua blok yang tersedia |
| getBlockByMarker() | Mendapatkan blok berdasarkan penanda | Ambil blok tertentu dalam kode |
| searchBlock() | Mencari blok | Ambil blok |
| getFrequentlyOrderedProducts() | Produk yang sering dipesan | "Sering dipesan bersama" |
| getCartComplement() | "Lengkapi keranjang Anda" berdasarkan konteks keranjang | Penjualan silang dari keranjang |
| getCartComplementByProductIds() | "Lengkapi keranjang Anda" berdasarkan productIds | Penjualan silang untuk produk tertentu |
| getCartSimilar() | "Mirip dengan keranjang" berdasarkan konteks keranjang | Alternatif untuk item keranjang |
| getCartSimilarByProductIds() | "Mirip dengan keranjang" berdasarkan productIds | Alternatif untuk produk tertentu |
| getWishlistSimilar() | "Mirip dengan wishlist" berdasarkan wishlist | Alternatif untuk item wishlist |
| getWishlistSimilarByProductIds() | "Mirip dengan wishlist" berdasarkan productIds | Alternatif untuk produk tertentu |
| getPersonalRecommendations() | Rekomendasi pribadi | Umpan produk yang dipersonalisasi |
| getRecentlyViewed() | Produk yang baru saja dilihat | Widget "Baru saja dilihat" |
| getRepeatPurchase() | Produk untuk pembelian ulang | Widget "Beli lagi" |
| getTrending() | Produk yang sedang tren | Widget "Sedang tren sekarang" |
| getSlides() | Pohon slide blok slider | Render slider/karusel |
π§© Jenis Blokβ
type blok ( BlockType) menentukan apa yang dirender. Selain jenis dasar (common_block, product_block, similar_products_block, form, dan lainnya), jenis blok produk & personalisasi berikut tersedia:
| Jenis blok | Metode |
|---|---|
frequently_ordered_block | getFrequentlyOrderedProducts() |
trending_block | getTrending() |
recently_viewed_block | getRecentlyViewed() |
repeat_purchase_block | getRepeatPurchase() |
slider_block | getSlides() |
personal_recommendations_block | getPersonalRecommendations() |
cart_complement_block | getCartComplement() / getCartComplementByProductIds() |
cart_similar_block | getCartSimilar() / getCartSimilarByProductIds() |
wishlist_similar_block | getWishlistSimilar() / getWishlistSimilarByProductIds() |
Blok personalisasi (baru saja dilihat, pembelian ulang, rekomendasi pribadi, keranjang/wishlist) didorong oleh aktivitas pengguna yang dilacak dan bekerja untuk pengguna yang terotorisasi maupun tamu (lihat Mode Tamu).
Memperbaiki harga (signPrice)β
Metode blok produk & rekomendasi (getCartSimilar, getRecentlyViewed, getTrending, getPersonalRecommendations, getRepeatPurchase, getCartComplement, getFrequentlyOrderedProducts, β¦) menerima argumen signPrice opsional. Ini mengambil penanda penyimpanan pesanan dan meminta server untuk mengunci harga produk yang dikembalikan untuk waktu terbatas, sehingga harga yang dilihat pelanggan dalam widget rekomendasi adalah harga yang mereka bayar saat checkout.
signPriceβ tipestringPenanda penyimpanan pesanan untuk memperbaiki harga. Jika parameter diatur, harga akan tetap untuk waktu tertentu.
- Pada metode rekomendasi
signPriceadalah argumen posisi terakhir (setelahlangCode). - Pada varian
β¦ByProductIds(getCartSimilarByProductIds,getCartComplementByProductIds, β¦) itu adalah bidang daribodypermintaan (body.signPrice).
Setiap produk yang dikembalikan kemudian membawa token signedPrice yang mengenkripsi harga yang terkunci:
const products = await Blocks.getCartSimilar("cart_similar_block", "en_US", "orders");
const signedPrice = products[0].signedPrice;
β‘οΈ Gunakan kembali token itu saat membuat pesanan β lihat bagian Harga produk tetap (signedPrice) dari modul Pesanan. Parameter perbaikan harga yang sama juga ada di modul Produk (dalam userQuery.signPrice).
β Pertanyaan Umum (FAQ)β
Apa perbedaan antara Blocks dan Pages?β
- Halaman/Halaman Produk β halaman mandiri dengan URL (misalnya
/about) yang dibuat di modul Halaman, di mana Anda menambahkan blok dan komponen lainnya. - Blok β komponen yang dapat digunakan kembali yang dimasukkan ke dalam halaman (misalnya footer).
Anggaplah sebuah halaman sebagai dokumen penuh dan sebuah blok sebagai paragraf yang Anda gunakan kembali di berbagai dokumen.
Bagaimana cara memperbarui konten blok?β
Edit di panel admin OneEntry (bagian Blocks). Semua halaman yang menggunakan blok itu akan diperbarui secara otomatis.
Haruskah saya membuat banyak blok kecil atau sedikit blok besar?β
Lebih baik banyak blok kecil yang terfokus (misalnya header_logo, footer_social_links) daripada satu blok besar entire_page_layout β blok kecil lebih mudah digunakan kembali dan dipelihara.
Bagaimana cara menampilkan/menyembunyikan blok secara kondisional?β
Periksa bidang isVisible pada blok yang diambil.
Bagaimana cara menangani blok yang hilang dengan baik?β
Bungkus pengambilan dalam try/catch dan render fallback ketika blok tidak ditemukan.
π Praktik Terbaikβ
- Buat blok kecil yang terfokus (tanggung jawab tunggal).
- Gunakan penanda deskriptif (
global_footer, bukanblock1); huruf kecil dengan garis bawah. - Rujuk blok berdasarkan penanda dalam kode β penanda tidak pernah berubah.
- Cache blok β mereka jarang berubah.
- Tangani blok yang hilang dengan baik (try/catch).
π Dokumentasi Terkaitβ
- Modul Halaman - Kelola halaman yang menggunakan blok
- Modul AttributesSets - Definisikan atribut blok
- Modul Produk - Gunakan blok di halaman produk
- Modul Aktivitas Pengguna - Menggerakkan blok personalisasi