Pendahuluan
Ambil template tampilan yang mengontrol bagaimana halaman, blok, produk, dan gambar dirender di aplikasi Anda.
Informasi lebih lanjut tentang template di panel admin OneEntry: https://doc.oneentry.cloud/docs/category/templates
🎯 Apa yang dilakukan modul ini?
Modul Templates memungkinkan Anda mengubah struktur dan penampilan proyek Anda tanpa mengubah kode sumbernya. Anda membuat template di panel admin OneEntry (Pengaturan > Template), menandai komponen Anda dengan template tersebut, dan modul ini mengambil konfigurasi tersebut agar aplikasi Anda dapat merender konten dengan gaya yang konsisten.
Pemisahan struktur dari kode ini memungkinkan Anda beralih antara implementasi template untuk mempengaruhi bagaimana entitas dirender, semua tanpa perlu melakukan redeploy. SDK bersifat read-only: Anda tidak dapat membuat template melalui SDK ini.
🚀 Memulai dengan Cepat
Inisialisasi modul dari defineOneEntry:
const { Templates } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Ambil template dan baca konfigurasinya:
// Fetch all templates of a given BlockType.
const productTemplates = await Templates.getTemplateByType("product", "en_US");
productTemplates.forEach((tpl) => {
console.log(tpl.identifier, tpl.title, tpl.generalTypeName);
});
// Or fetch a single template by its marker.
const card = await Templates.getTemplateByMarker("product_thumbnail", "en_US");
console.log(card.attributeValues);
✨ Konsep Kunci
Apa itu Template?
Template (ITemplateEntity) adalah konfigurasi tampilan yang mendefinisikan bagaimana konten harus muncul:
- Tipe Umum (
generalTypeName) - Kategori entitas yang diterapkan template, sepertiBlockTypesepertiproduct,common_page,common_block,form, atauorder - Judul (
title) - Nama template yang ditampilkan di panel admin (tidak unik) - Penanda (
identifier) - Identifikasi unik untuk referensi kode (gunakan ini, bukan ID) - Nilai Atribut (
attributeValues) - Peta nilai atribut yang dikunci oleh penanda - Set Atribut (
attributeSetIdentifier) - Set atribut terkait yang bersifat opsional
Struktur Template (ITemplateEntity):
interface ITemplateEntity {
id: number; // Unique identifier
title: string; // Template name (non-unique)
identifier: string; // Template marker (unique)
generalTypeId: number; // Type ID reference
version: number; // Version number
generalTypeName: BlockType; // General type name
attributeSetIdentifier: string | null; // Associated attribute set
attributeValues: IAttributeValues; // Map of attribute values keyed by marker
position: number; // Sort position
}
Tipe Template (BlockType)
Tipe template adalah generalTypeName-nya, sebuah nilai BlockType. getTemplateByType(type) menerima BlockType yang sama. Nilai umum:
| Tipe | Kategori Entitas | Contoh Kasus Penggunaan |
|---|---|---|
product | Produk | Detail produk, tampilan produk |
catalog_page | Halaman katalog | Daftar kategori, hasil pencarian |
common_page | Halaman biasa | Postingan blog, halaman landing, halaman tentang |
error_page | Halaman kesalahan | Halaman 404, halaman 500, tata letak kesalahan kustom |
common_block | Blok konten | Kartu konten, spanduk, bagian, widget |
form | Formulir | Formulir kontak, formulir pendaftaran, survei |
order | Pesanan | Konfirmasi pesanan, riwayat pesanan |
service | Entitas layanan | Konten terkait layanan |
📋 Apa yang Perlu Anda Ketahui
Template dibuat di panel admin
Anda tidak dapat membuat template melalui SDK - template dibuat di panel admin OneEntry (Pengaturan > Template). Setiap template memerlukan Nama (tidak unik), Penanda yang unik, dan Tipe (kategori entitas yang diterapkan). SDK digunakan untuk mengambil konfigurasi template, bukan untuk membuatnya.
Gunakan penanda, bukan ID
Selalu rujuk template dengan penanda (identifier) di kode Anda - penanda stabil di seluruh lingkungan, ID tidak. Gunakan getTemplateByMarker(marker) untuk satu template, getTemplateByType(type) untuk semua template dari satu BlockType, dan getAllTemplates() untuk setiap template yang dikelompokkan berdasarkan tipe.
Template yang hilang
Metode mengembalikan objek kesalahan (IError) ketika template tidak ditemukan. Selalu verifikasi bahwa penanda ada dan tangani template yang hilang dengan baik.
Cache
Template jarang berubah - cache mereka (localStorage/sessionStorage di frontend, Redis/memory di backend; ~1 jam TTL adalah titik awal yang wajar).
📊 Tabel Referensi Cepat
| Metode | Deskripsi | Kasus Penggunaan |
|---|---|---|
| getAllTemplates() | Ambil semua template yang dikelompokkan berdasarkan tipe | Daftar semua template yang tersedia |
| getTemplateByType() | Ambil template berdasarkan tipe entitas | Ambil template untuk tipe entitas tertentu |
| getTemplateByMarker() | Ambil template berdasarkan penanda | Ambil konfigurasi template tertentu |
❓ Pertanyaan Umum (FAQ)
Apa perbedaan antara Templates dan TemplatePreviews?
Templates mengonfigurasi tampilan konten umum (halaman, blok, produk), sementara TemplatePreviews secara khusus menangani gambar atribut produk (contoh warna, pratinjau material). Gunakan Templates untuk konten utama, TemplatePreviews untuk gambar atribut.
Bagaimana cara mengambil template tertentu?
Gunakan getTemplateByMarker(marker) untuk satu template berdasarkan identifikatornya, atau getTemplateByType(type) untuk mengambil semua template dari BlockType tertentu (misalnya product, common_page). Gunakan getAllTemplates() untuk mengambil setiap template yang dikelompokkan berdasarkan tipe.
Apa yang terjadi jika saya merujuk template yang tidak ada?
Metode mengembalikan objek kesalahan (IError). Selalu verifikasi bahwa penanda template ada dan tangani template yang hilang dengan baik.
Tipe template mana yang harus saya gunakan untuk konten saya?
Pilih berdasarkan tipe entitas: common_page untuk halaman standar, catalog_page untuk daftar produk, common_block untuk blok konten, product untuk detail produk. Sesuaikan tipe template dengan kategori konten Anda.
🎓 Praktik Terbaik
- Gunakan penanda, bukan ID - penanda stabil di seluruh lingkungan.
- Buat penanda yang semantik -
product_card, bukantpl_1. - Cache template - kurangi panggilan API untuk data yang jarang berubah.
- Tangani template yang hilang - periksa bentuk pengembalian
IError.
🔗 Dokumentasi Terkait
- Panel Admin OneEntry - Template Konten - Dokumentasi resmi panel admin
- Modul TemplatePreviews - Pratinjau template untuk gambar atribut
- Modul Produk - Produk menggunakan template produk
- Modul Halaman - Halaman menggunakan template halaman
- Modul Blok - Blok menggunakan template blok
- Modul Formulir - Formulir menggunakan template formulir