Instal Hugo dan Buat Situs Web
Instalasi Hugo
Pertama, pastikan Hugo telah terinstal di komputer Anda. Anda dapat mengunjungi situs web resmi Hugo untuk mengunduh versi yang sesuai dengan sistem operasi Anda. Setelah instalasi selesai, masukkan perintah berikut di terminal untuk memverifikasi apakah instalasi berhasil:
hugo version
Membuat Proyek Baru
Pertama, kita perlu membuat proyek situs web Hugo baru. Silakan buka terminal (atau alat baris perintah) dan masukkan perintah-perintah berikut secara berurutan:
hugo new site quickstart
cd quickstart
git init
git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
hugo new site quickstart
: Membuat proyek Hugo baru bernamaquickstart
.cd quickstart
: Masuk ke direktori proyek.git init
: Menginisialisasi sistem kontrol versi Git untuk memudahkan manajemen kode selanjutnya.git submodule add ...
: Menambahkan tema PaperMod sebagai submodule ke direktorithemes/
.
Catatan: Jika jaringan tidak stabil, unduhan mungkin gagal. Pastikan koneksi jaringan lancar atau coba ubah sumber mirror.
Menentukan Tema
Selanjutnya, kita tentukan tema yang akan digunakan Hugo untuk merender situs web. Edit file hugo.toml
di direktori root proyek dan tambahkan konten berikut:
theme = "PaperMod"
Pratinjau Situs Web
Setelah menyelesaikan langkah-langkah di atas, jalankan perintah berikut untuk memulai server pengembangan lokal:
hugo server
Pada saat ini, Anda dapat mengunjungi http://localhost:1313/
di browser untuk melihat pratinjau situs web. Tekan Ctrl + C
untuk menghentikan layanan.
Konfigurasi Situs Web Hugo
Konfigurasi Dasar
File konfigurasi inti Hugo adalah hugo.toml
, yang menentukan perilaku dasar situs web. Kita dapat memodifikasinya sesuai kebutuhan.
Berikut adalah konfigurasi lengkap
# Konfigurasi global dasar situs web
baseURL = "https://example.org/" # Menetapkan URL root situs web untuk tautan absolut; ubah ke domain aktual saat deployment
languageCode = "id" # Menentukan kode bahasa konten, digunakan untuk atribut HTML lang dan pengaturan bahasa
title = "ExampleSite" # Judul utama situs web, biasanya ditampilkan di tab browser dan halaman utama
theme = "PaperMod" # Nama tema yang digunakan, menentukan tampilan situs web
# Konfigurasi sumber daya ikon situs web
[assets]
# Ikon ditempatkan di direktori static/
favicon = "/favicon.ico" # Ikon favicon utama, biasanya ditampilkan di tab browser
favicon16x16 = "/favicon-16x16.png" # Ikon favicon 16x16 pixel, cocok untuk perangkat resolusi rendah
favicon32x32 = "/favicon-32x32.png" # Ikon favicon 32x32 pixel, memberikan tampilan definisi lebih tinggi
apple_touch_icon = "/apple-touch-icon.png" # Ikon untuk layar beranda perangkat Apple
# Konfigurasi parameter tema, mempengaruhi tampilan dan perilaku fungsional
[params]
# Pengaturan SEO, membantu optimisasi mesin pencari
title = "ExampleSite" # Menetapkan judul situs web, ditampilkan di tab browser dan hasil pencarian
description = "ExampleSite description" # Deskripsi singkat situs web, digunakan untuk ringkasan pencarian
keywords = ["Blog", "Portfolio"] # Daftar kata kunci terkait untuk meningkatkan relevansi pencarian
# Konfigurasi perilaku dasar situs web
DateFormat = "2006-01-02" # Menetapkan gaya pemformatan tanggal, digunakan untuk waktu publikasi artikel
defaultTheme = "auto" # Menetapkan mode tema default: "auto" mengikuti sistem, atau bisa diubah ke "light"/"dark"
# Informasi sambutan halaman utama
[params.homeInfoParams]
Title = "Hi there 👋"
Content = "Welcome to my blog"
# Konfigurasi menu global, berlaku untuk semua bahasa
[menu]
[[menu.main]] # Mendefinisikan item menu utama
identifier = "posts" # Pengidentifikasi item menu
name = "Tentang" # Nama item menu
url = "/posts/" # Tautan item menu
weight = 1 # Bobot item menu, digunakan untuk pengurutan
[[menu.main]]
identifier = "tags"
name = "Tags"
url = "/tags/"
weight = 2
[[menu.main]]
identifier = "search"
name = "Pencarian"
url = "/search/"
weight = 3
# Pengaturan format output
[outputs]
# Menyediakan dukungan fungsi pencarian
home = ["HTML", "RSS", "JSON"]
Pengaturan Informasi Dasar Situs Web
baseURL = "https://example.org/"
languageCode = "id"
title = "ExampleSite"
theme = "PaperMod"
Item konfigurasi ini menentukan informasi dasar situs web, seperti judul, bahasa, dan tema. Di antaranya:
baseURL
adalah nama domain yang digunakan saat deployment.languageCode
mengontrol lingkungan bahasa situs web.title
ditampilkan pada tab browser.theme
menentukan tema yang digunakan.
Pengaturan Ikon
Untuk membuat situs web lebih personal, kita dapat menetapkan ikon untuknya. Tambahkan konten berikut ke hugo.toml
:
[assets]
favicon = "/favicon.ico"
favicon16x16 = "/favicon-16x16.png"
favicon32x32 = "/favicon-32x32.png"
apple_touch_icon = "/apple-touch-icon.png"
Ikon-ikon ini harus ditempatkan di direktori static/
untuk ditampilkan di berbagai perangkat dan browser.
Pengaturan SEO
Optimisasi mesin pencari (SEO) sangat penting untuk meningkatkan visibilitas situs web. Kita dapat menambahkan konfigurasi berikut ke situs web:
[params]
title = "ExampleSite"
description = "ExampleSite description"
keywords = ["Blog", "Portfolio"]
title
: Judul situs web yang ditampilkan di hasil pencarian mesin pencari.description
: Deskripsi singkat, digunakan untuk tampilan ringkasan.keywords
: Daftar kata kunci, membantu meningkatkan peringkat pencarian.
Konfigurasi Menu Navigasi
Bilah navigasi merupakan pintu masuk penting bagi pengguna untuk menjelajahi situs web. Kita dapat mendefinisikan item menu dengan cara berikut:
[menu]
[[menu.main]]
identifier = "posts"
name = "Tentang"
url = "/posts/"
weight = 1
[[menu.main]]
identifier = "tags"
name = "Tags"
url = "/tags/"
weight = 2
[[menu.main]]
identifier = "search"
name = "Pencarian"
url = "/search/"
weight = 3
Konfigurasi di atas akan menghasilkan tiga item menu: Posts, Tags, dan Search, yang diurutkan berdasarkan bobot.
identifier
: Memberikan item menu nama unik (ID) untuk memudahkan identifikasi dan penggunaan program.name
: Nama yang ditampilkan di halaman web, pengguna akan melihat teks “Posts”.url
: URL tujuan saat item menu diklik, dalam hal ini adalah “halaman daftar artikel” di dalam situs web.weight
: Menetapkan urutan tampil. Semakin kecil angka, semakin tinggi prioritasnya.
Modifikasi Tambahan
Saat ini halaman Posts masih menampilkan 404 karena PaperMod hanya menyediakan halaman tag secara bawaan dan tidak memerlukan pembuatan manual.
Untuk mengatasi ini, kita perlu membuat file search.md
di direktori content/
dan menambahkan konfigurasi berikut:
search.md
---
title: "Pencarian"
layout: "search"
summary: "search"
placeholder: "Anda bisa memasukkan teks di sini..."
---
title
: Menetapkan judul halaman.layout
: Menentukan template layout yang digunakan untuk halaman.summary
: Memberikan deskripsi singkat tentang halaman.placeholder
: Mengatur teks placeholder pada kotak pencarian di halaman.
Pengaturan Format Output
Untuk mendukung fungsi pencarian, kita perlu menentukan format output tambahan untuk halaman utama:
[outputs]
home = ["HTML", "RSS", "JSON"]
Dengan cara ini, halaman utama tidak hanya akan menghasilkan halaman HTML tetapi juga menyediakan langganan RSS dan antarmuka data JSON.
Sampai di sini, konfigurasi situs web telah selesai dan dapat diunggah ke platform seperti GitHub Pages, Cloudflare Pages, atau Netlify untuk deployment. Untuk prosedur detailnya, silakan merujuk pada dokumentasi resmi Host and deploy | HUGO.
Opsional: Konfigurasi Dukungan Multi-Bahasa
Mengaktifkan Dukungan Multi-Bahasa
Untuk mengaktifkan fungsi multi-bahasa, pertama-tama kita perlu memodifikasi file konfigurasi global Hugo hugo.toml
dan mengganti pengaturan menu dan bahasa dasar asli dengan konfigurasi multi-bahasa terstruktur berikut:
[languages]
[languages.id] # Bahasa Indonesia language configuration
languageCode = "id"
languageName = "Bahasa Indonesia"
weight = 1
[languages.id.menu]
[[languages.en.menu.main]]
identifier = "posts"
name = "Tentang"
url = "/posts/"
weight = 1
[[languages.id.menu.main]]
identifier = "tags"
name = "Tags"
url = "/tags/"
weight = 2
[[languages.id.menu.main]]
identifier = "search"
name = "Pencarian"
url = "/search/"
weight = 3
[languages.zh] # Chinese language configuration
languageCode = "zh"
languageName = "中文"
weight = 2
[languages.zh.menu]
[[languages.zh.menu.main]]
identifier = "posts"
name = "文章"
url = "/posts/"
weight = 1
[[languages.zh.menu.main]]
identifier = "tags"
name = "标签"
url = "/tags/"
weight = 2
[[languages.zh.menu.main]]
identifier = "search"
name = "搜索"
url = "/search/"
weight = 3
[languages]
adalah blok konfigurasi utama untuk dukungan multi-bahasa Hugo.- Setiap sub-item (seperti
languages.id
danlanguages.zh
) mewakili satu bahasa. languageCode
digunakan untuk mengidentifikasi jenis bahasa, biasanya menggunakan kode standar ISO (misalnyaid
untuk Bahasa Inggris,zh
untuk Bahasa Tionghoa).languageName
adalah nama bahasa yang ditampilkan di halaman web.weight
mengontrol urutan prioritas bahasa; semakin kecil nilainya, semakin tinggi prioritasnya.
Tips: Jika membutuhkan bahasa tambahan (seperti Prancis, Jerman, dll.), cukup tambahkan sesuai format di atas.
Membuat File Halaman Multi-Bahasa
Untuk mendukung multi-bahasa, kita perlu membuat file halaman terpisah untuk setiap bahasa.
Menurut dokumentasi resmi Multilingual mode | HUGO, ada dua metode yang dapat digunakan:
- Pembedaan berdasarkan Nama File
/content/search.id.md
/content/search.zh.md
- Pembedaan berdasarkan Direktori
/content/id/search.md
/content/zh/search.md
Pilihan cara pembuatan tergantung pada preferensi individu. Di sini kami memilih bentuk “direktori”, sedangkan penggunaan nama file tidak memerlukan konfigurasi—hanya perlu menambahkan kode bahasa yang sesuai ke nama file bahasa yang sesuai. Oleh karena itu, kami akan menekankan pada penjelasan konfigurasi bentuk direktori.
Masuk ke direktori content/
dan susun struktur seperti ini:
content/
├── id/
│ └── search.md # Bahasa Indonesia version search page
└── zh/
└── search.md # Chinese version search page
Masing-masing edit file halaman bahasa yang sesuai. Contohnya:
id/search.md
:
---
title: "Pencarian"
layout: "search"
summary: "search"
placeholder: "Anda bisa memasukkan teks di sini..."
---
zh/search.md
:
---
title: "搜索"
layout: "search"
summary: "搜索页面"
placeholder: "这里可以输入..."
---
Kemudian lakukan modifikasi akhir pada hugo.toml
untuk menetapkan bahasa tampilan default dan menentukan direktori untuk setiap bahasa.
baseURL = "https://example.org/"
languageCode = "id"
defaultContentLanguage = "id" # <<--- Newly added item
title = "ExampleSite"
theme = "PaperMod"
...
[languages]
[languages.en]
languageCode = "id"
languageName = "Bahasa Indonesia"
contentDir = "content/id" # <<--- Newly added item
weight = 1
[languages.en.menu]
...
[languages.zh]
languageCode = "zh"
languageName = "中文"
contentDir = "content/zh" # <<--- Newly added item
weight = 2
[languages.zh.menu]
...
Tips: Setelah atribut
defaultContentLanguage
, Anda dapat menambahkandefaultContentLanguageInSubdir = true
untuk mengaktifkan pembuatan konten bahasa default dalam subdirektori.