Lewati ke konten utama

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:

TipeNilai typeContoh Penggunaan
Halaman Umumcommon_pageTentang, Kontak, Syarat
Halaman Katalogcatalog_pageKategori katalog
Halaman Eksternalexternal_pageTautan ke URL eksternal
Halaman Kesalahanerror_pageHalaman 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

MetodeKapan DigunakanContoh
Berdasarkan URLPengguna mengunjungi halaman tertentugetPageByUrl("about")
Berdasarkan IDReferensi internalgetPageById(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

MetodeApa yang DilakukanKapan Digunakan
getPages()Mengambil semua halamanMembangun sitemap, daftar semua halaman
getRootPages()Mengambil semua halaman tingkat atas (root)Membangun navigasi tingkat atas
getChildPagesByParentUrl()Mengambil halaman anak berdasarkan URL indukMenjelajahi subtree sebuah bagian
getBlocksByPageUrl()Mengambil objek PositionBlock untuk sebuah halaman berdasarkan URLMerender blok konten halaman
getConfigPageByUrl()Mengambil pengaturan untuk sebuah halaman berdasarkan URLMembaca pengaturan tampilan per halaman
getPageById()Mengambil satu halaman berdasarkan IDReferensi internal
getPageByUrl()Mengambil satu halaman berdasarkan URLMerender sebuah halaman pada rute
searchPage()Pencarian cepat untuk halamanMencari 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: true untuk produksi.
  • Cache halaman untuk mengurangi panggilan API; tangani 404 (halaman tidak ditemukan) dengan baik.
  • Baca data kustom dari attributeValues daripada mengasumsikan field bawaan.

🔗 Dokumentasi Terkait