Bir Hugo temasını sitenize üç yolla ekleyebilirsiniz: temanın klasörünü themes/ altına kopyalamak, temayı git alt modülü (submodule) olarak bağlamak ya da Hugo Modules ile içe aktarmak. Kopyalama en basitidir ama güncelleme yolunu kapatır. Asıl seçim diğer ikisi arasındadır ve cevabı büyük ölçüde iki soruya bağlıdır: makinenizde Go kurulu mu, ve temanın deposunda go.mod dosyası var mı.
20 Ekim 2026 ölçümümüzde yıldız sırasına göre izlediğimiz 80 Hugo temasının 33 tanesi kök klasöründe go.mod taşıyordu. Kalan temalar da modül olarak kullanılabilir, ama geliştirici bunu açıkça desteklemediği için alt modül yolu daha az sürprizlidir. Aynı ölçümde 80 temanın 52 tanesi Hugo’nun resmî galerisinde listeleniyordu; galeri, temaları kurulum yönteminden bağımsız olarak listeler, bu yüzden galeride olmak modül desteği anlamına gelmez. Her temanın durumunu Hugo temaları listesinde ve tema sayfasındaki teknik kontrol listesinde görebilirsiniz.
İki yöntem kısaca
Git alt modülü, başka bir git deposunu kendi deponuzun içine belirli bir commit’e sabitlenmiş olarak yerleştirir. Hugo açısından ortada özel bir şey yoktur; tema themes/tema-adi klasöründe durur ve yapılandırmada theme = "tema-adi" yazarsınız.
git submodule add https://github.com/kullanici/tema.git themes/tema
Hugo Modules ise Go’nun modül sistemini kullanır. Siteniz bir modül olur, tema da onun bağımlılığı. Tema klasörü deponuzda görünmez; Hugo onu derleme sırasında indirir ve önbellekte tutar.
hugo mod init github.com/kullanici/siteniz
Ardından yapılandırmaya içe aktarmayı eklersiniz:
[module]
[[module.imports]]
path = "github.com/kullanici/tema"
Hugo belgelerine göre hugo mod init komutundaki ad yalnızca benzersiz bir tanımlayıcıdır; GitHub’daki bir depoyla eşleşmesi gerekmez. İlk derlemede Hugo bir go.sum dosyası oluşturur ve kullanılan sürümü buraya yazar.
Gereksinimler
Hugo’nun kurulum sayfası Git’in alt modül olarak tema kurmak ve Hugo Modules kullanmak için gerektiğini, Go’nun ise yalnızca kaynaktan derleme ve Hugo Modules için gerektiğini söyler. Modül belgesi en az Go 1.18 ister.
Bu fark küçük görünür ama pratikte önemlidir. Siteyi Netlify, Cloudflare Pages ya da GitHub Actions gibi bir ortamda derliyorsanız, modül yöntemi o ortamda da Go bulunmasını gerektirir. Alt modül yönteminde ise yalnızca deponun alt modülleriyle birlikte klonlanması yeterlidir. Windows’ta tek başına hugo.exe indirip çalışan biri için alt modül, kuruluma yeni bir araç eklemeden çalışır.
Güncelleme nasıl yapılır
Alt modülde tema, eklediğiniz andaki commit’e kilitlidir. Yeni sürümü almak için:
git submodule update --remote themes/tema
Bu komut temanın ana dalındaki son commit’i çeker; değişikliği kendi deponuza commit ettiğinizde sabitlenmiş yeni nokta odur. İsterseniz alt modülün içine girip belirli bir etikete (tag) geçebilirsiniz.
Hugo Modules’ta belgede üç komut geçer:
hugo mod get -utüm modülleri en son sürüme yükseltir.hugo mod get -u ./...iç içe modülleri de yinelemeli olarak günceller.hugo mod get -u github.com/kullanici/temayalnızca o modülü günceller.
Temanın etiketli sürümleri varsa Go modül sistemi bunları anlamsal sürüm (semver) olarak okur, yoksa commit üzerinden ilerler. Sabitlenen sürüm go.mod ve go.sum dosyalarında durur; bu iki dosyayı deponuza eklemek, bir yıl sonra aynı siteyi aynı temayla derleyebilmenizin güvencesidir.
Ağ olmadan derlemek: vendor
Modül yönteminin sık dile getirilen kaygısı, her derlemede temanın internetten indirilmesidir. Hugo bunun için hugo mod vendor komutunu sunar. Komut içe aktarılan modüllerin kopyasını _vendor klasörüne koyar ve sonraki derlemeler bu kopyayı kullanır. Belgeye göre themes klasöründeki modüller vendor’a alınmaz.
Vendor klasöründeki bir dosyayı değiştirmek istediğinizde _vendor içinde düzenleme yapmazsınız; aynı göreli yolla projenizin köküne bir dosya koyarsınız. Bu, Hugo’nun genel geçersiz kılma kuralının bir uygulamasıdır.
Tema dosyasını değiştirmek: iki yöntemde de aynı kural
Hugo bir dosyayı ararken önce projenize, sonra temaya bakar. Tema bileşenleri belgesi bunu şöyle açıklar: birden çok bileşen listelendiğinde soldaki kazanır; şablonlar, statik dosyalar ve arşetipler dosya düzeyinde birleştirilir, yani soldaki eşleşen dosya seçilir. Çeviri (i18n) ve veri dosyaları ise çeviri kimliği ya da veri anahtarı düzeyinde derin birleştirilir.
Bu, temayı kendi deponuzda değiştirmek yerine yalnızca değiştirmek istediğiniz şablonu layouts/ altında aynı yolla kopyalamanız gerektiği anlamına gelir. Yöntem ne olursa olsun bu yaklaşım güncellemeyi kolaylaştırır; çünkü temanın kendisi el değmemiş kalır, sizin değişikliğiniz ayrı bir katmandır. Alt modülün içinde doğrudan dosya düzenlemek ise en sık yapılan hatadır: bir sonraki git submodule update değişikliklerinizi ya ezer ya da çakışma çıkarır.
Türkçe çeviri dosyası eklemek bu kuralın iyi bir örneğidir. Temada i18n/tr.toml yoksa projenizin kökünde i18n/tr.toml oluşturmanız yeterlidir; tema güncellendiğinde dosyanız yerinde kalır. Hangi temalarda hazır Türkçe dosyası olduğunu Türkçe destekli temalar sayfasında listeliyoruz.
Hangisini seçmeli
Kesin bir doğru yok; ama birkaç durum seçimi netleştirir.
| Durum | Daha uygun yöntem |
|---|---|
| Derleme ortamında Go yok ya da kurmak istemiyorsunuz | Alt modül |
| Temanın deposunda go.mod var ve README modül kurulumunu anlatıyor | Modül |
| Birden fazla tema bileşenini (kısa kodlar, analiz, tema) birlikte kullanacaksınız | Modül |
| Temayı kendi çatalınızda (fork) uzun süre değiştirerek kullanacaksınız | Alt modül ya da kopya |
| Derlemenin internetsiz de çalışması gerekiyor | Modül + vendor ya da alt modül |
Modül yönteminin güçlü yanı, birden çok parçayı aynı yapılandırmada sırayla bağlayabilmesidir. Örneğin bir arama bileşenini, bir kısa kod paketini ve temayı ayrı modüller olarak içe aktarabilir, öncelik sırasını listedeki yerleriyle belirleyebilirsiniz. Alt modülde de theme = ["bilesen", "tema"] ile benzer bir katmanlama yapılabilir; fark, her parçanın ayrı bir git alt modülü olarak klonlanmasıdır.
Geçiş yapmak isterseniz
Alt modülden modüle geçmek birkaç adımdır: hugo mod init ile siteyi modül yapın, yapılandırmadaki theme satırını module.imports ile değiştirin, alt modülü git submodule deinit ve git rm ile kaldırın, ardından bir derleme alıp go.sum oluştuğunu kontrol edin. Tersine geçişte önce go.mod’daki tema sürümünü not edin ve alt modülü aynı commit’e sabitleyin; böylece görünümde fark olmaz.
Tema seçerken bakımın sürüp sürmediği, kurulum yönteminden daha belirleyicidir. İki yıldır commit almamış bir temada modül de alt modül de aynı sorunu taşır: güncelleme gelmez. Bunu kontrol etmek için bakım durumu sayfasına, sürüm uyumu için de Hugo extended gerekir mi yazısına bakabilirsiniz.