Skip to content

Site Layout

Bu belge, sitenin dış kabuğunu anlatır: üst menü, alt bilgi, ortadaki içerik alanı.

Fix UI Kullanımı buton ve kart görünümü içindir. Layout (header/footer, sayfa gövdesi) Tailwind ile yapılır; karıştırmayın. Shell’de text-sm, font-medium gibi utility’ler normaldir; tekrarlayan buton/kart görünümü için <Button> kullanın. Ayrıntı: Yazı Stilleri.


Her public sayfa aynı şablonu kullanır:

BaseLayout
├── Header (logo, menü, tema, dil)
├── <main> (sayfanın kendi içeriği — genelde PageShell)
└── Footer (sütunlar, sosyal, disclaimer)

Sayfa dosyası yalnızca <main> içini doldurur; header/footer tekrar yazılmaz.

---
import BaseLayout from '@/layouts/BaseLayout.astro';
import PageShell from '@/components/layout/PageShell.astro';
---
<BaseLayout title="Sayfa başlığı" description="Kısa açıklama">
<PageShell>
<!-- section içeriği -->
</PageShell>
</BaseLayout>

PageShellmax-w-6xl (veya narrow ile max-w-3xl), yatay gutter, dikey section padding. Header/footer aynı max-w-6xl mantığını kullanır.


Ne değiştirirsenNeredeNe olur
Menü genişliği, sticky, borderHeader.astro Tailwind sınıflarıTüm sayfalarda üst çubuk görünümü
İçerik kolon genişliğiPageShell (narrow prop) veya ek classYalnızca o sayfa
Buton / CTA görünümüFix UI (Button, _fix-button.css)Tüm fix-btn kullanan yerler
Logo metnisite.tsnameHeader marka
Menü linklerisrc/config/nav/ (nav1.ts, navbar3-menus.ts) + routes.ts + sitePageMenuLinkHeader + mobil menü
Footer sütunlarıfooter-nav.ts + i18n/common.tsAlt link grid’i

Kural: Header/footer’da uzun class="flex gap-4 ..." zinciri normal. Buton stilini layout’ta icat etme — <Button variant="primary"> kullan.


DosyaGörevi
src/layouts/BaseLayout.astroHTML kabuğu, SEO <head>, Header, main, Footer, Toaster, motion
src/components/layout/PageShell.astroSayfa içeriği container (max-w-6xl, py-16 …)
src/components/layout/Header.astroÜst navigasyon
src/components/layout/Footer.astroAlt bilgi (footer sütunları + sosyal)
src/config/nav/nav1.tsÜst menü (navbar1/2): megaMenus
src/config/nav/navbar3-menus.tsÜst menü (navbar3): megaMenusNavbar3
src/config/nav/page-link.tssitePageMenuLink — href’i sitePages’ten üretir
src/config/header.tsHangi navbar tasarımı aktif (navbar1 …)
src/config/routes.tsHer linkin dil başına URL’si
src/config/site.tsSite adı, logo yolu, domain
src/config/footer-nav.tsFooter tedavi / hizmet sütunları
src/config/social.tsFooter sosyal profiller
src/i18n/common.tsMenü ve footer metinleri (4 dil)

Ne yapar:

  • <head> — title, description, canonical, hreflang, Open Graph (SEO / Meta)
  • Tema script — sayfa çizilmeden önce .dark (yanlış tema flaşını azaltır)
  • <body class="flex min-h-screen flex-col"> — footer sayfa altında kalsın
  • <main class="flex-1"> — içerik orta alanı büyüsün
  • Global: Toaster, scroll/hero animasyon (initMotion)

Sayfadan gelen props:

  • title, description, image — SEO
  • alternatePaths — blog çevirisi gibi özel hreflang (isteğe bağlı)

Değiştirince ne olur:

  • Layout’a dokunmadan yeni sayfa ekleyebilirsin; otomatik header/footer alır.
  • BaseLayout’u bozarsan tüm site etkilenir — dikkatli değiştir.

Ayrıntılı ve basit anlatım: Header, Navbar ve Mobil Menü.

Bileşenler:

  1. Logosite.tsHeaderLogo.astro
  2. Masaüstü menüNavbar1 / Navbar2 / Navbar3 (config/header.ts ile seçilir)
  3. Mobil menüMobileNav.tsx (hamburger; navbar seçiminden bağımsız)
  4. Tema / dilHeaderActions.astro içinde React island’lar

Tailwind örnekleri (Header’da):

  • sticky top-0 z-50 — kaydırınca üstte kalır
  • max-w-6xl mx-auto px-4 — içerik genişliği
  • border-b border-border — alt çizgi
  1. src/config/routes.ts → yeni pageId ve tüm dillerin path’i (sitePages)
  2. Sayfa dosyalarını oluştur
  3. src/config/nav/nav1.ts veya navbar3-menus.ts → ilgili megaMenus / links içine sitePageMenuLink('pageId', etiket) (page-link.ts — bkz. Header rehberi)
  4. src/i18n/common.tscommon.headerNav.* (ls())

Detay: Header, Navbar ve Mobil Menü.

getPageIdFromPathname() (src/i18n/routing.ts):

  • resolvePath bir sitePages URL’si döndürürse → pageId = home | blog | fixUi (vb.)
  • Blog yazı URL’si (/blog/slug, /tr/blog/slug …) sitePages’te yok → pageId = 'home'; header dil linkleri ana sayfaya gider
  • Yazı çevirisi: blog slug sayfası alternatePaths ile BaseLayout’a geçer — SEO / Meta, Çoklu Dil Kullanımı

Yapı (masaüstü):

  1. Tedavi / hizmet sütunları — footer-nav.tsfooterColumns
  2. Sosyal sütun — social.ts (boş URL’ler gösterilmez)
  3. Disclaimer — common.footer.disclaimer

Veri kaynakları:

  • Sütun başlıkları ve link etiketleri → i18n/common.ts (footer.columnTitles, footer.links)
  • Link hedefleri → footer-nav.ts (# placeholder veya routes path’leri)
  • Sosyal → social.ts

Değiştirince ne olur:

  • footer-nav.ts güncelle → alt link sütunları değişir
  • social.ts güncelle → sosyal ikonlar değişir

Layout içeriğe karışmaz. Her sayfa PageShell veya eşdeğer Tailwind ile kurar:

<BaseLayout title="...">
<PageShell class="flex flex-col gap-8">
<h1 class="fix-type-h1">...</h1>
<Button variant="primary">CTA</Button>
</PageShell>
</BaseLayout>

Blog yazıları: BlogPostView.astro içinde PageShell narrow + proseMDX Kullanımı.

Sayfada ikinci bir <main> veya tekrar ThemeSelect koyma — layout’tan gelir.


İstediğinNe yap
Yeni menü maddesiroutes.ts + sayfa + nav1.ts / navbar3-menus.ts + sitePageMenuLink + common.headerNav
Logo değişsinsite.tslogo, dosyayı public/ veya public/og/
Footer tedavi linkifooter-nav.ts + common.footer.links
Üst bar rengi / blurHeader.astro Tailwind
Tüm sitede buton rengi_fix-button.css veya token — Fix UI Kullanımı
Blog dil linki yazıya gitsinBlog slug sayfasında alternatePaths prop
Bileşen demosu/fix-ui sayfası


Layout = BaseLayout + Header + Footer + PageShell. Üst menü: Header, Navbar ve Mobil Menü. Footer: footer-nav.ts + social.ts. Sayfa dosyası yalnızca <main> içini doldurur.