Navigasi yang baik membantu pengunjung menemukan konten dengan mudah. Sitemas memiliki beberapa area navigasi yang bisa dikustomisasi: navbar utama, sidebar, dan footer. Artikel ini akan memandu Anda mengatur semuanya.
Arsitektur Navigasi Sitemas
Sitemas memiliki beberapa elemen navigasi:
| Elemen | Lokasi | File Konfigurasi |
|---|---|---|
| Top Navbar | Header halaman | constants.ts (NAV_ITEMS) |
| Left Sidebar | Sidebar kiri artikel | Auto-generated dari konten |
| Right Sidebar (TOC) | Sidebar kanan artikel | Auto-generated dari heading |
| Footer Links | Footer website | Footer.astro |
| Bottom Navigation | Mobile fixed bottom | constants.ts (NAV_ITEMS) |
1. Mengatur Navbar Utama
Struktur NAV_ITEMS
Menu utama diatur di src/utils/constants.ts:
export const NAV_ITEMS = [
{ label: 'Beranda', href: '/', icon: 'home' },
{ label: 'Dokumentasi', href: '/#dokumentasi', icon: 'book' },
{ label: 'Tutorial', href: '/#tutorial', icon: 'code' },
{ label: 'Insight', href: '/#insight', icon: 'lightbulb' },
{ label: 'Tips', href: '/#tips', icon: 'zap' },
] as const; Properti Menu Item
| Properti | Tipe | Deskripsi |
|---|---|---|
label | string | Teks yang ditampilkan |
href | string | URL tujuan (relatif atau absolut) |
icon | string | Nama icon (opsional, untuk mobile nav) |
Menambah Menu Baru
Untuk menambah menu, tambahkan objek baru ke array:
export const NAV_ITEMS = [
{ label: 'Beranda', href: '/', icon: 'home' },
{ label: 'Blog', href: '/blog', icon: 'edit' }, // Menu baru
{ label: 'Produk', href: '/produk', icon: 'box' }, // Menu baru
{ label: 'Tutorial', href: '/#tutorial', icon: 'code' },
{ label: 'Kontak', href: '/kontak', icon: 'mail' }, // Menu baru
] as const; Idealnya navbar memiliki 4-6 item untuk desktop. Terlalu banyak menu akan terlihat crowded dan membingungkan pengguna.
Menu dengan Section Anchor
Untuk navigasi ke section di halaman yang sama, gunakan hash:
{ label: 'Fitur', href: '/#fitur', icon: 'star' }
Ini akan scroll ke elemen dengan id="fitur" di halaman.
Menu Dropdown (Nested)
Sitemas saat ini menggunakan navigasi flat (tanpa dropdown). Jika membutuhkan dropdown, Anda perlu memodifikasi komponen Navbar.astro.
2. Menu Sekunder
Untuk menu tambahan yang kurang prioritas:
export const NAV_SECONDARY = [
{ label: 'Produk', href: '/produk' },
{ label: 'Tentang', href: '/tentang' },
{ label: 'Kontak', href: '/kontak' },
] as const; Menu sekunder biasanya digunakan di burger menu mobile atau area tertentu.
3. Mengatur Footer Links
Struktur Footer
Footer Sitemas memiliki beberapa kolom link yang diatur langsung di src/components/global/Footer.astro:
const footerLinks = {
content: [
{ label: 'Blog', href: '/blog' },
{ label: 'Tag', href: '/tag' },
{ label: 'Tips', href: '/kategori/tips' },
{ label: 'Tutorial', href: '/kategori/tutorial' },
{ label: 'Insight', href: '/kategori/insight' },
{ label: 'Dokumentasi', href: '/kategori/dokumentasi' },
],
about: [
{ label: 'Tentang Kami', href: '/tentang' },
{ label: 'Tim', href: '/tim' },
{ label: 'Karir', href: '/karir' },
{ label: 'Kontak', href: '/kontak' },
{ label: 'FAQ', href: '/faq' },
{ label: 'Atribusi', href: '/atribusi' },
],
legal: [
{ label: 'Privacy Policy', href: '/privacy-policy' },
{ label: 'Cookie Policy', href: '/cookie-policy' },
{ label: 'Disclaimer', href: '/disclaimer' },
{ label: 'Syarat & Ketentuan', href: '/terms' },
],
resources: [
{ label: 'Sitemap', href: '/sitemap' },
{ label: 'RSS Feed', href: '/rss.xml' },
{ label: 'Media Kit', href: '/media-kit' },
{ label: 'Changelog', href: '/changelog' },
{ label: 'Panduan Penulis', href: '/panduan-penulis' },
{ label: 'Statistik', href: '/statistik' },
],
}; Menambah/Menghapus Footer Link
Edit array yang sesuai di footerLinks:
resources: [
{ label: 'Sitemap', href: '/sitemap' },
{ label: 'RSS Feed', href: '/rss.xml' },
{ label: 'API Docs', href: '/api-docs' }, // Link baru
{ label: 'Status', href: 'https://status.example.com' }, // Link eksternal
], Untuk link ke website lain, gunakan URL lengkap dengan https://. Link internal cukup gunakan path relatif seperti /blog.
Icon untuk Footer Link
Fungsi getLinkIcon() di Footer.astro menentukan icon untuk setiap link. Untuk menambah icon link baru:
function getLinkIcon(label: string) {
switch (label) {
case 'Blog':
return IconFeather;
case 'API Docs': // Tambah case baru
return IconCode;
case 'Status': // Tambah case baru
return IconActivity;
// ... case lainnya
default:
return IconPage;
}
} 4. Kolom Footer
Menambah Kolom Baru
Untuk menambah kolom footer baru, edit bagian JSX di Footer.astro:
<!-- Kolom yang ada -->
<div class="footer-section">
<h4 class="footer-heading">KONTEN</h4>
<!-- links -->
</div>
<!-- Kolom baru -->
<div class="footer-section">
<h4 class="footer-heading">PRODUK</h4>
<ul class="footer-links">
{footerLinks.products.map((link) => (
<li>
<a href={link.href}>{link.label}</a>
</li>
))}
</ul>
</div> Dan tambahkan data di footerLinks:
products: [
{ label: 'Template Blog', href: '/produk/template-blog' },
{ label: 'Theme Premium', href: '/produk/theme' },
{ label: 'Plugin', href: '/produk/plugin' },
],
5. Social Media Links di Footer
Konfigurasi Social Links
Social media links diatur di constants.ts:
export const SOCIAL = {
github: '#', // Ganti dengan URL GitHub Anda
twitter: '#', // Ganti dengan URL Twitter/X Anda
youtube: '#', // Ganti dengan URL YouTube Anda
instagram: '#', // Ganti dengan URL Instagram Anda
facebook: '#', // Ganti dengan URL Facebook Anda
whatsapp: '#', // Ganti dengan URL WhatsApp Channel
linkedin: '#', // Ganti dengan URL LinkedIn Anda
tiktok: '#', // Ganti dengan URL TikTok Anda
} as const; Ganti # dengan URL lengkap. Link dengan value # akan ditampilkan sebagai disabled atau hidden (tergantung implementasi).
Menampilkan/Menyembunyikan Social Icon
Footer hanya menampilkan social media yang memiliki URL valid (bukan #). Untuk menambah platform baru:
- Tambahkan di
SOCIALdiconstants.ts - Import icon yang sesuai di
Footer.astro - Tambahkan case di mapping icon
6. Left Sidebar Kategori
Left sidebar di halaman artikel berisi daftar kategori dan artikel terkait. Ini auto-generated dari konten, bukan dikonfigurasi manual.
Cara Kerja
- Sidebar membaca semua artikel dari collection
blog - Mengelompokkan berdasarkan
categorydantopic - Menampilkan artikel yang relevan
Mengontrol Tampilan
Jika ingin mengubah logika pengelompokan atau limit artikel, edit src/components/global/LeftSidebar.astro.
7. Right Sidebar (Table of Contents)
Table of Contents di sidebar kanan auto-generated dari heading (H2, H3) di artikel. Tidak perlu konfigurasi manual.
Heading yang Ditampilkan
Secara default, TOC menampilkan:
- H2 (
##) sebagai item utama - H3 (
###) sebagai sub-item
H1 tidak ditampilkan karena harusnya hanya ada satu H1 (title artikel).
8. Mobile Bottom Navigation
Di mobile, Sitemas menampilkan fixed bottom navigation. Item-nya mengikuti NAV_ITEMS:
// 5 item pertama dari NAV_ITEMS ditampilkan di bottom nav
export const NAV_ITEMS = [
{ label: 'Beranda', href: '/', icon: 'home' }, // Tampil
{ label: 'Blog', href: '/blog', icon: 'edit' }, // Tampil
{ label: 'Search', href: '/search', icon: 'search' }, // Tampil
{ label: 'Kategori', href: '/kategori', icon: 'folder' }, // Tampil
{ label: 'Menu', href: '#menu', icon: 'menu' }, // Tampil (opens sidebar)
] as const; Properti icon penting untuk mobile bottom nav karena hanya icon yang ditampilkan (label hidden untuk space).
9. Breadcrumb Navigation
Breadcrumb di halaman artikel auto-generated dengan struktur:
Beranda > Kategori > Judul Artikel
Untuk mengubah label “Beranda”, edit src/components/global/Breadcrumbs.astro.
Best Practices
- Konsistensi — Gunakan label yang sama untuk link yang menuju halaman yang sama
- Hierarki Jelas — Prioritaskan menu berdasarkan pentingnya
- Tidak Terlalu Banyak — Maksimal 6-7 item di navbar utama
- Link Valid — Pastikan semua link menuju halaman yang ada
- Mobile-First — Test navigasi di mobile
Langkah Selanjutnya
Setelah navigasi selesai, konfigurasi social media links:
Hubungkan Social Media
Pelajari cara menghubungkan profil social media dan komunitas ke website Anda.
Kesimpulan
Navigasi adalah jembatan antara pengunjung dan konten Anda. Sitemas menyediakan sistem navigasi yang fleksibel — dari navbar utama hingga footer yang kaya informasi.
Kunci navigasi yang baik adalah kesederhanaan dan konsistensi. Pengunjung harus bisa menemukan apa yang mereka cari dalam 1-2 klik. Gunakan label yang jelas dan hindari membuat pengunjung berpikir terlalu keras.