Sayfa Ekle / Kaldır
Bu belge, yeni bir pazarlama sayfası (ör. Contact; Hakkımızda henüz yok — aynı akışla eklenebilir) ekleme veya kaldırma adımlarını anlatır.
Sistem i18n ve locale routing için Çoklu Dil Kullanımı. Layout iskeleti için Site Layout. MDX blog sayfaları bu akışa girmez — Blog İçeriği.
Akış Şeması
Section titled “Akış Şeması”Yeni sayfa eklerken sıra önemlidir: önce URL tanımı, sonra dosyalar, sonra menü ve metinler.
flowchart LR A[routes.ts] --> B[pages/*.astro] B --> C[nav.ts] C --> D[i18n/pages/*.ts] B --> E[components/pages/*.astro]| Adım | Dosya | Ne tanımlanır |
|---|---|---|
| 1 | src/config/routes.ts | pageId ve her dilin path’i |
| 2 | src/pages/... | İnce sarmalayıcı .astro (locale sabit) |
| 3 | src/config/nav.ts | Header/footer linkleri (isteğe bağlı) |
| 4 | src/i18n/pages/....ts | Sayfaya özel metinler (tercih edilen) |
| 5 | src/components/pages/....astro | Ortak içerik bileşeni |
Contact Örneği (Canlı Referans)
Section titled “Contact Örneği (Canlı Referans)”Projede Contact sayfası bu kalıbın tam uygulamasıdır.
URL Ve PageId
Section titled “URL Ve PageId”sitePages.contact — tek pageId, dört farklı slug:
| Dil | URL |
|---|---|
| en | /contact |
| tr | /tr/iletisim |
| de | /de/kontakt |
| fr | /fr/contact |
routes.ts içinde:
contact: { en: '/contact', tr: '/tr/iletisim', de: '/de/kontakt', fr: '/fr/contact',},Dosyalar (4 Sarmalayıcı + 1 Ortak Bileşen)
Section titled “Dosyalar (4 Sarmalayıcı + 1 Ortak Bileşen)”| Dosya | Görev |
|---|---|
src/pages/contact.astro | locale="en" → <ContactPage /> |
src/pages/tr/iletisim.astro | locale="tr" |
src/pages/de/kontakt.astro | locale="de" |
src/pages/fr/contact.astro | locale="fr" |
src/components/pages/ContactPage.astro | Layout, form, iletişim kartı |
İnce sarmalayıcı pattern — sayfa dosyası yalnızca locale geçirir:
---import ContactPage from '@/components/pages/ContactPage.astro';
const locale = 'en';---
<ContactPage locale={locale} />Tüm HTML, BaseLayout, form ve contact.ts okuması ortak bileşende kalır. Dört dil dosyası kopya içermez.
Sayfa metinleri: src/i18n/pages/contact.ts (Çeviri Metinleri).
getPageIdFromPathname Ve Dil Değiştirici
Section titled “getPageIdFromPathname Ve Dil Değiştirici”Header’daki dil değiştirici, bulunduğunuz sayfanın karşılık URL’lerine gitmek için pageId kullanır.
Akış:
Astro.url.pathname→resolvePath()(src/i18n/routing.ts)- Path
routes.tsindeksinde eşleşirse →pageId+locale getPageIdFromPathname()→SitePageIddöner
Contact’ta /tr/iletisim açıkken dil değiştirici pageId = 'contact' tutar; Almanca’ya geçince /de/kontakt gider — ana sayfaya düşmez.
Blog yazısı (/blog/slug veya /tr/blog/slug) sitePages dışındadır; çözülemezse varsayılan pageId = 'home'. Yazı bazlı çeviri için sayfa alternatePaths ile BaseLayout’a geçilir — SEO / Meta, Çoklu Dil Kullanımı.
Yeni Sayfa Ekleme (Özet Checklist)
Section titled “Yeni Sayfa Ekleme (Özet Checklist)”routes.ts—sitePages.yeniSayfave 4 locale path (slug’lar dil başına farklı olabilir)src/pages/— her dil için bir.astrosarmalayıcısrc/components/pages/YeniSayfa.astro—BaseLayout+ içeriknav.ts— menüde görünsün istiyorsanızheader/footerdizisinesiteHref(sitePages.yeniSayfa)i18n/common.ts— menü etiketicommon.nav.*(Navigasyon)i18n/pages/yeni-sayfa.ts— başlık, lead, form metinleri vb.BaseLayout— her sayfadatitlevedescriptionprops (SEO)
Build: npm run build — eksik path veya bozuk import hemen görünür.
Sayfa Kaldırma Checklist
Section titled “Sayfa Kaldırma Checklist”| Kontrol | Dosya / yer |
|---|---|
| URL kaydı | routes.ts → ilgili pageId satırını sil |
| Astro sayfaları | src/pages/... sarmalayıcıları |
| Menü | nav.ts → header/footer girişleri |
| Menü metni | i18n/common.ts → common.nav.* (kullanılmıyorsa temizle) |
| Sayfa copy | i18n/pages/....ts |
| Ortak bileşen | src/components/pages/....astro |
| Import referansları | Başka dosyada sitePages.xxx kalmadığından emin olun |
Kaldırdıktan sonra build alın; ölü link kalmamalı.
BaseLayout Ve SEO
Section titled “BaseLayout Ve SEO”Her ortak sayfa bileşeni şunu kullanmalı:
<BaseLayout title={t(sayfaPage.metaTitle, locale)} description={t(sayfaPage.metaDescription, locale)}>Sayfa props vermezse varsayılanlar seo.ts’ten gelir — Site Bilgileri, SEO / Meta.
Sitemap
Section titled “Sitemap”Statik ve blog URL’leri build sırasında otomatik üretilir. Manuel URL listesi tutmanız gerekmez.
Detay: Sitemap.
Ne Değiştirirse Ne Olur
Section titled “Ne Değiştirirse Ne Olur”| Değişiklik | Sonuç |
|---|---|
routes.ts path | Tüm dil URL’leri ve dil değiştirici hedefleri güncellenir |
Sarmalayıcı locale yanlış | Yanlış dil metni / 404 riski |
nav.ts ekleme | Header + footer’da yeni link (aynı kaynak) |
| Ortak bileşen silinmeden sarmalayıcı silme | Build hatası (import yok) |
pageId dil başına farklı | Desteklenmez — tek pageId, çoklu path |
Yapmayın
Section titled “Yapmayın”- Her dil için farklı
pageIdtanımlamayın (contact+iletisimayrı id değil). - Sayfa dosyasına Header/Footer kopyalamayın — Site Layout zaten
BaseLayoutile gelir. - İletişim telefonunu sayfa içinde hardcode etmeyin —
contact.ts(Site Bilgileri). - Blog yazısını bu akışla karıştırmayın — koleksiyon + otomatik route (Blog İçeriği).
İlgili Rehberler
Section titled “İlgili Rehberler”- Navigasyon — menüye link ekleme
- Çeviri Metinleri —
i18n/pages/*.ts - Site Bilgileri — marka ve iletişim config
- Formlar (Demo) — Contact formu
- Animasyonlar — Contact başlık
data-motion-hero
Önce routes.ts, sonra ince pages/*.astro, ortak components/pages/*.astro, isteğe bağlı nav.ts + i18n/pages. Tek pageId, dört URL. Contact canlı örnek. Sitemap otomatik. Header/footer sayfaya yazılmaz.