# Error Sayfası Yapılandırması

TYPO3 v13 için global error handling sistemi ve özel error sayfası yapılandırması.

## Genel Bakış

Bu yapılandırma, TYPO3 siteniz için 404, 403 ve 500 HTTP hata kodlarını yönetecek özel error sayfaları oluşturur. Error sayfaları, site tasarımına uyumlu ve kullanıcı dostu bir deneyim sunar.

## Dosya Yapısı

```
packages/my_site_package/Resources/Private/Templates/Sites/
└── Error.html
```

## Yapılandırma Adımları

### 1. Error Template Oluşturma

Error sayfası template'i `Error.html` dosyası olarak oluşturulur:

- **Konum**: `EXT:my_site_package/Resources/Private/Templates/Sites/Error.html`
- **Layout**: Default layout kullanır
- **Dinamik İçerik**: Hata koduna göre dinamik başlık ve mesaj gösterir

### 2. Site Configuration

`config/sites/[site-identifier]/config.yaml` dosyasına error handling eklenir:

```yaml
errorHandling:
  - errorCode: 404
    errorHandler: Fluid
    errorFluidTemplate: "EXT:my_site_package/Resources/Private/Templates/Sites/Error.html"
    errorFluidTemplatesRootPath: "EXT:my_site_package/Resources/Private/Templates/"
    errorFluidLayoutsRootPath: "EXT:my_site_package/Resources/Private/Layouts/"
    errorFluidPartialsRootPath: "EXT:my_site_package/Resources/Private/Partials/"
  - errorCode: 403
    errorHandler: Fluid
    errorFluidTemplate: "EXT:my_site_package/Resources/Private/Templates/Sites/Error.html"
    errorFluidTemplatesRootPath: "EXT:my_site_package/Resources/Private/Templates/"
    errorFluidLayoutsRootPath: "EXT:my_site_package/Resources/Private/Layouts/"
    errorFluidPartialsRootPath: "EXT:my_site_package/Resources/Private/Partials/"
  - errorCode: 500
    errorHandler: Fluid
    errorFluidTemplate: "EXT:my_site_package/Resources/Private/Templates/Sites/Error.html"
    errorFluidTemplatesRootPath: "EXT:my_site_package/Resources/Private/Templates/"
    errorFluidLayoutsRootPath: "EXT:my_site_package/Resources/Private/Layouts/"
    errorFluidPartialsRootPath: "EXT:my_site_package/Resources/Private/Partials/"
```

> [!IMPORTANT]
> **Fluid Error Handler Gereksinimleri**
>
> `errorHandler: Fluid` kullanırken, eğer template'iniz `<f:layout>` veya `<f:partial>` kullanıyorsa, aşağıdaki üç path ayarını **mutlaka** eklemelisiniz:
>
> - `errorFluidTemplatesRootPath`: Templates dizini yolu
> - `errorFluidLayoutsRootPath`: Layouts dizini yolu
> - `errorFluidPartialsRootPath`: Partials dizini yolu
>
> Bu ayarlar olmadan TYPO3, "Undefined array key" hatası verir ve template dosyaları yüklenemez.

## Template Özellikleri

### Dinamik Değişkenler

- `{statusCode}`: HTTP hata kodu (404, 403, 500)
- `{reasonText}`: Hata mesajı
- `{exceptionMessage}`: Özel hata açıklaması
- `{exception.timestamp}`: Hata zaman damgası

### Kullanıcı Arayüzü

- **Responsive Tasarım**: Tailwind CSS ile mobil uyumlu
- **Dark Mode**: Otomatik dark mode desteği
- **Navigasyon**: Ana sayfa ve önceki sayfa dönüş butonları
- **Türkçe İçerik**: Yerelleştirilmiş mesajlar

## Özelleştirme

### Mesajları Değiştirme

Template içindeki statik mesajları değiştirebilirsiniz:

```html
<h2 class="text-2xl font-semibold text-gray-700 dark:text-gray-300 mb-4">
  Sayfa Bulunamadı
</h2>
```

### Stil Özelleştirme

Tailwind CSS sınıflarını değiştirerek tasarımı özelleştirebilirsiniz:

- Renkler: `bg-blue-600`, `text-gray-900`
- Boyutlar: `text-6xl`, `px-6 py-3`
- Layout: `container`, `text-center`

## Test Etme

Error sayfalarını test etmek için:

1. **404 Hatası**: Mevcut olmayan bir URL ziyaret edin
2. **403 Hatası**: Erişim kısıtlı sayfaya erişmeyi deneyin
3. **500 Hatası**: Geçersiz bir extension veya kod hatası oluşturun

## İleri Seviye Yapılandırma

### Farklı Error Sayfaları

Her hata kodu için farklı template'ler kullanabilirsiniz:

```yaml
errorHandling:
  - errorCode: 404
    errorHandler: Fluid
    errorFluidTemplate: "EXT:my_site_package/Resources/Private/Templates/Sites/404.html"
  - errorCode: 500
    errorHandler: Fluid
    errorFluidTemplate: "EXT:my_site_package/Resources/Private/Templates/Sites/500.html"
```

### External Error Pages

Harici URL'ler için:

```yaml
errorHandling:
  - errorCode: 404
    errorHandler: Page
    errorContentSource: "t3://page?uid=145"
```

## Sorun Giderme

### "Undefined array key" Hatası

Aşağıdaki gibi bir hata alıyorsanız:

```
PHP Warning: Undefined array key "errorFluidTemplatesRootPath"
PHP Warning: Undefined array key "errorFluidLayoutsRootPath"
PHP Warning: Undefined array key "errorFluidPartialsRootPath"
TYPO3Fluid\Fluid\View\Exception\InvalidTemplateResourceException: The Fluid template files "" could not be loaded.
```

**Çözüm:** Site configuration'ınızda (`config.yaml`) her Fluid error handler için şu üç ayarı ekleyin:

```yaml
errorFluidTemplatesRootPath: "EXT:my_site_package/Resources/Private/Templates/"
errorFluidLayoutsRootPath: "EXT:my_site_package/Resources/Private/Layouts/"
errorFluidPartialsRootPath: "EXT:my_site_package/Resources/Private/Partials/"
```

Bu ayarlar, template'inizde `<f:layout>` veya `<f:partial>` kullandığınızda zorunludur.

### Template Çalışmıyor

1. Template dosyasının doğru konumda olduğundan emin olun
2. EXT: key'in doğru yazıldığını kontrol edin
3. Cache temizleyin

### Stil Yüklenmiyor

1. Tailwind CSS yapılandırmasını kontrol edin
2. Layout dosyasının CSS'i yüklediğinden emin olun
3. Asset path'lerini doğrulayın

## Best Practices

1. **Kullanıcı Dostu**: Korkutucu teknik mesajlardan kaçının
2. **Navigasyon**: Kullanıcıları site içinde tutacak seçenekler sunun
3. **Marka Uyumu**: Site tasarımına uygun error sayfaları oluşturun
4. **Loglama**: Error'ları loglamak için monitoring ekleyin
