Pengantar
Kelola halaman website dan layar aplikasi mobile dengan konten dinamis.
Informasi lebih lanjut tentang antarmuka pengguna modul ini https://doc.oneentry.cloud/docs/category/pages
🎯 Apa yang dilakukan modul ini?
Modul Pages memungkinkan Anda untuk mengambil dan mengelola halaman (untuk website) atau layar (untuk aplikasi mobile) beserta semua kontennya - judul, konten HTML/plain, visibilitas, dan atribut kustom. Anda membuat halaman di panel admin OneEntry dan mengambilnya secara dinamis di aplikasi Anda, sehingga perubahan konten di admin langsung berlaku tanpa perlu redeploy.
🚀 Memulai dengan Cepat
Inisialisasi modul dari defineOneEntry:
const { Pages } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Ambil satu halaman berdasarkan URL-nya (penanda) dan baca field-nya:
// Fetch the "about" page in English.
const page = await Pages.getPageByUrl("about", "en_US");
console.log(page.id, page.localizeInfos.title);
console.log("Visible:", page.isVisible);
// Custom fields you defined live in attributeValues.
console.log(page.attributeValues);
Sebagian besar metode pembacaan mengikuti bentuk yang sama: sebuah pengidentifikasi (url atau id) ditambah dengan langCode. Lihat Tabel Referensi Cepat di bawah untuk set lengkapnya.
✨ Konsep Kunci
Apa itu Halaman?
Sebuah halaman adalah entitas konten yang mewakili:
- Web: Sebuah halaman di website Anda (misalnya
/about,/contact) - Mobile: Sebuah layar di aplikasi Anda (misalnya Layar Profil, Layar Pengaturan)
Setiap halaman berisi:
- Konten - judul dan konten HTML/plain melalui
localizeInfos - URL -
pageUrl, penanda halaman yang digunakan untuk routing dan pencarian - Visibilitas - flag
isVisible - Atribut kustom - field tambahan yang Anda definisikan di
attributeValues(meta SEO dimodelkan sebagai atribut kustom, bukan field bawaan) - Lokalisasi - konten multi-bahasa
Tipe Halaman
OneEntry mendukung berbagai tipe halaman (type), yang paling umum adalah:
| Tipe | Nilai type | Contoh Penggunaan |
|---|---|---|
| Halaman Umum | common_page | Tentang, Kontak, Syarat |
| Halaman Katalog | catalog_page | Kategori katalog |
| Halaman Eksternal | external_page | Tautan ke URL eksternal |
| Halaman Kesalahan | error_page | Halaman 404 / Tidak Ditemukan |
Daftar lengkap tipe tersedia melalui modul GeneralTypes.
Hierarki Halaman
Halaman diorganisir dalam sebuah pohon melalui parentId (halaman tingkat atas memiliki parentId: null):
📁 Company
├─ About Us
├─ Team
└─ Careers
📁 Products
├─ Product Category 1
│ ├─ Product A
│ └─ Product B
└─ Product Category 2
Anda dapat mengambil halaman akar dengan getRootPages() dan menjelajahi ke bawah dengan getChildPagesByParentUrl().
📋 Apa yang Perlu Anda Ketahui
Dua Cara untuk Mengidentifikasi Halaman
| Metode | Kapan Digunakan | Contoh |
|---|---|---|
| Berdasarkan URL | Pengguna mengunjungi halaman tertentu | getPageByUrl("about") |
| Berdasarkan ID | Referensi internal | getPageById(123) |
Praktik terbaik: pageUrl adalah penanda yang stabil - itu bukan jalur rute Next.js. Kirim penanda OneEntry (misalnya "about"), bukan /en/about.
Struktur Halaman
Setiap halaman memiliki field kunci ini:
{
"id": 9,
"parentId": 8,
"pageUrl": "blog1",
"depth": 1,
"localizeInfos": {
"title": "Blog 1",
"menuTitle": "Blog 1",
"htmlContent": "",
"plainContent": ""
},
"isVisible": true,
"blocks": [],
"type": "common_page",
"templateIdentifier": null,
"attributeSetIdentifier": null,
"attributeValues": {},
"isSync": false
}
Lokalisasi
Halaman mendukung beberapa bahasa - minta langCode yang berbeda untuk mendapatkan halaman yang sama dalam bahasa lain.
Atribut Kustom
Tambahkan field apa pun ke halaman menggunakan AttributesSets - penulis/tanggal/tag pos blog, gambar hero halaman arahan, meta SEO, dan sebagainya. Baca dari page.attributeValues. Pelajari lebih lanjut: Modul AttributesSets.
Visibilitas
Gunakan flag isVisible untuk mengontrol halaman mana yang ditampilkan kepada pengguna - filter untuk isVisible: true di produksi.
📊 Tabel Referensi Cepat - Metode Umum
| Metode | Apa yang Dilakukan | Kapan Digunakan |
|---|---|---|
| getPages() | Mengambil semua halaman | Membangun sitemap, daftar semua halaman |
| getRootPages() | Mengambil semua halaman tingkat atas (root) | Membangun navigasi tingkat atas |
| getChildPagesByParentUrl() | Mengambil halaman anak berdasarkan URL induk | Menjelajahi subtree sebuah bagian |
| getBlocksByPageUrl() | Mengambil objek PositionBlock untuk sebuah halaman berdasarkan URL | Merender blok konten halaman |
| getConfigPageByUrl() | Mengambil pengaturan untuk sebuah halaman berdasarkan URL | Membaca pengaturan tampilan per halaman |
| getPageById() | Mengambil satu halaman berdasarkan ID | Referensi internal |
| getPageByUrl() | Mengambil satu halaman berdasarkan URL | Merender sebuah halaman pada rute |
| searchPage() | Pencarian cepat untuk halaman | Mencari halaman berdasarkan judul |
❓ Pertanyaan Umum (FAQ)
Apa perbedaan antara URL dan ID?
pageUrl- penanda halaman yang digunakan untuk routing (misalnya"about"). Tampil untuk pengguna dan stabil di seluruh lingkungan.id- pengidentifikasi numerik. Digunakan untuk referensi internal.
Bagaimana cara membangun navigasi dari halaman?
Gunakan getRootPages() untuk entri tingkat atas dan getChildPagesByParentUrl() untuk menjelajahi pohon, atau gunakan modul Menus untuk struktur navigasi yang dikelola.
Bagaimana cara menambahkan metadata SEO ke sebuah halaman?
SEO bukanlah field bawaan - modelkan meta judul/deskripsi/dll. sebagai atribut kustom dalam AttributesSet, lalu baca dari page.attributeValues.
🎓 Praktik Terbaik
- Gunakan
pageUrl(penanda) untuk routing - jangan pernah mengkodekan jalur rute framework sebagai URL. - Filter berdasarkan
isVisible: trueuntuk produksi. - Cache halaman untuk mengurangi panggilan API; tangani 404 (halaman tidak ditemukan) dengan baik.
- Baca data kustom dari
attributeValuesdaripada mengasumsikan field bawaan.
🔗 Dokumentasi Terkait
- Modul Products - Kelola produk e-commerce
- Modul Blocks - Blok konten yang dapat digunakan kembali untuk halaman
- Modul AttributesSets - Field kustom untuk halaman
- Modul Menus - Manajemen menu navigasi
- Modul GeneralTypes - Tipe halaman