Skip to content

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.


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ımDosyaNe tanımlanır
1src/config/routes.tspageId ve her dilin path’i
2src/pages/...İnce sarmalayıcı .astro (locale sabit)
3src/config/nav.tsHeader/footer linkleri (isteğe bağlı)
4src/i18n/pages/....tsSayfaya özel metinler (tercih edilen)
5src/components/pages/....astroOrtak içerik bileşeni

Projede Contact sayfası bu kalıbın tam uygulamasıdır.

sitePages.contact — tek pageId, dört farklı slug:

DilURL
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)”
DosyaGörev
src/pages/contact.astrolocale="en"<ContactPage />
src/pages/tr/iletisim.astrolocale="tr"
src/pages/de/kontakt.astrolocale="de"
src/pages/fr/contact.astrolocale="fr"
src/components/pages/ContactPage.astroLayout, 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ış:

  1. Astro.url.pathnameresolvePath() (src/i18n/routing.ts)
  2. Path routes.ts indeksinde eşleşirse → pageId + locale
  3. getPageIdFromPathname()SitePageId dö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ı.


  1. routes.tssitePages.yeniSayfa ve 4 locale path (slug’lar dil başına farklı olabilir)
  2. src/pages/ — her dil için bir .astro sarmalayıcı
  3. src/components/pages/YeniSayfa.astroBaseLayout + içerik
  4. nav.ts — menüde görünsün istiyorsanız header / footer dizisine siteHref(sitePages.yeniSayfa)
  5. i18n/common.ts — menü etiketi common.nav.* (Navigasyon)
  6. i18n/pages/yeni-sayfa.ts — başlık, lead, form metinleri vb.
  7. BaseLayout — her sayfada title ve description props (SEO)

Build: npm run build — eksik path veya bozuk import hemen görünür.


KontrolDosya / 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ü metnii18n/common.tscommon.nav.* (kullanılmıyorsa temizle)
Sayfa copyi18n/pages/....ts
Ortak bileşensrc/components/pages/....astro
Import referanslarıBaşka dosyada sitePages.xxx kalmadığından emin olun

Kaldırdıktan sonra build alın; ölü link kalmamalı.


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.


Statik ve blog URL’leri build sırasında otomatik üretilir. Manuel URL listesi tutmanız gerekmez.

Detay: Sitemap.


DeğişiklikSonuç
routes.ts pathTüm dil URL’leri ve dil değiştirici hedefleri güncellenir
Sarmalayıcı locale yanlışYanlış dil metni / 404 riski
nav.ts eklemeHeader + footer’da yeni link (aynı kaynak)
Ortak bileşen silinmeden sarmalayıcı silmeBuild hatası (import yok)
pageId dil başına farklıDesteklenmez — tek pageId, çoklu path

  • Her dil için farklı pageId tanımlamayın (contact + iletisim ayrı id değil).
  • Sayfa dosyasına Header/Footer kopyalamayınSite Layout zaten BaseLayout ile 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).


Ö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.