# Site Sets & Settings: Yeni Yapılandırma Sistemi (v13 Standardı)

TYPO3 v13'te "Include static from extensions" yaklaşımının yerine gelen modern Site Sets sistemini kapsar.

---

## Site Sets Nedir?

Site Sets, TYPO3 v13 ile gelen yeni yapılandırma dağıtım sistemidir. Bir extension'ın TypoScript, ayarlar ve bağımlılıklarını paket halinde sunmasını sağlar.

**Eski yaklaşım (v12 ve öncesi):**
- `sys_template` kaydı ile "Include static from extensions"
- `ext_typoscript_setup.txt` / `ext_typoscript_constants.txt`

**Yeni yaklaşım (v13):**
- `Configuration/Sets/` dizini
- `config.yaml` ile tanımlama
- Site configuration'da `dependencies` ile ekleme

---

## Dizin Yapısı

```
packages/my_site_package/Configuration/Sets/MySitePackage/
├── config.yaml              # Set tanımı ve bağımlılıklar
├── settings.yaml            # Ayar tanımları
├── settings.definitions.yaml # Ayar şemaları (opsiyonel)
├── constants.typoscript     # TypoScript sabitleri
├── setup.typoscript         # TypoScript setup
└── page.tsconfig            # Page TSconfig (opsiyonel)
```

---

## config.yaml — Set Tanımı

```yaml
name: my-site/site-package
label: My Site Package
dependencies:
  - typo3/fluid-styled-content
  - typo3/seo
```

### Parametreler

| Parametre | Açıklama |
|-----------|----------|
| `name` | Benzersiz set adı (vendor/name formatı) |
| `label` | İnsan okunur başlık |
| `dependencies` | Bu set'in bağımlı olduğu diğer set'ler |
| `optionalDependencies` | İsteğe bağlı bağımlılıklar |

---

## settings.yaml — Ayarlar

```yaml
# Fluid Styled Content ayarları
styles:
  content:
    defaultHeaderType: 2
    textmedia:
      maxW: 1200
      maxWInText: 600
      linkWrap:
        lightboxEnabled: true
        lightboxCssClass: lightbox

# Özel ayarlar
website:
  name: My Website
  logo: EXT:my_site_package/Resources/Public/Images/logo.svg
  social:
    facebook: https://facebook.com/mysite
    twitter: https://twitter.com/mysite
    instagram: https://instagram.com/mysite
  contact:
    email: info@example.com
    phone: '+90 212 000 0000'
```

---

## settings.definitions.yaml — Ayar Şemaları

```yaml
settings:
  website.name:
    label: 'Website Adı'
    description: 'Sitenin görüntülenen adı'
    type: string
    default: 'My Website'

  website.logo:
    label: 'Logo Dosyası'
    type: string
    default: 'EXT:my_site_package/Resources/Public/Images/logo.svg'

  website.contact.email:
    label: 'İletişim E-postası'
    type: string
    default: 'info@example.com'

  styles.content.defaultHeaderType:
    label: 'Varsayılan Başlık Tipi'
    type: int
    default: 2
    enum:
      - 1
      - 2
      - 3
      - 4
      - 5
```

---

## TypoScript Dosyaları

### setup.typoscript

```typoscript
# Ana sayfa yapılandırması
page = PAGE
page {
    typeNum = 0

    10 = FLUIDTEMPLATE
    10 {
        templateName = Default
        templateRootPaths.10 = EXT:my_site_package/Resources/Private/Templates/Page/
        layoutRootPaths.10 = EXT:my_site_package/Resources/Private/Layouts/
        partialRootPaths.10 = EXT:my_site_package/Resources/Private/Partials/

        variables {
            content < styles.content.get
        }

        settings {
            # settings.yaml'dan gelen değerler otomatik erişilebilir
            # {settings.website.name} şeklinde Fluid'de kullanılır
        }

        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
            10 {
                levels = 3
                as = mainMenu
            }
            20 = TYPO3\CMS\Frontend\DataProcessing\SiteProcessor
            20 {
                as = site
            }
        }
    }
}
```

### constants.typoscript

```typoscript
# Sabitler artık settings.yaml üzerinden yönetilir
# Ama gerekirse burada da tanımlanabilir
page.fluidtemplate.templateRootPath = EXT:my_site_package/Resources/Private/Templates/Page/
```

---

## Site Configuration'da Kullanım

`config/sites/main/config.yaml`:

```yaml
base: 'https://typo3v13.ddev.site/'
rootPageId: 1

# Site Sets dependencies
dependencies:
  - my-site/site-package
  - typo3/fluid-styled-content
  - typo3/seo

# Site-specific settings override
settings:
  website:
    name: 'Benim Sitem'
    contact:
      email: 'contact@mysite.com'
```

### Site-Level Ayar Geçersiz Kılma

Site configuration'da `settings` bölümü ile extension'ın varsayılan ayarlarını geçersiz kılabilirsiniz.

---

## Fluid'de Settings Erişimi

```html
<!-- Site Settings -->
<p>Site: {settings.website.name}</p>
<p>E-posta: {settings.website.contact.email}</p>

<!-- Site bilgisi (SiteProcessor ile) -->
<p>Base URL: {site.base}</p>

<!-- Logo -->
<f:image src="{settings.website.logo}" alt="{settings.website.name}" />
```

---

## Backend'de Aktif Etme

1. **Site Management > Sites** modülüne gidin
2. Sitenizi düzenleyin
3. **Sets for this Site** bölümünde set'inizi seçin
4. Kaydedin
5. Cache temizleyin

---

## Migration: Eski Sistemden Geçiş

### Eski (v12)

```php
// Configuration/TCA/Overrides/sys_template.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
    'my_site_package',
    'Configuration/TypoScript',
    'My Site Package'
);
```

### Yeni (v13)

```yaml
# Configuration/Sets/MySitePackage/config.yaml
name: my-site/site-package
label: My Site Package
dependencies:
  - typo3/fluid-styled-content
```

> **Not:** Eski `addStaticFile` yöntemi hala çalışır ama Site Sets modern ve önerilen yaklaşımdır.

---

## Kaynaklar

- [Site Sets Documentation](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/SiteHandling/SiteSets.html)
- [Settings Management](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/SiteHandling/SiteSettings.html)
