# TCEFORM: Alan Özelleştirme

TCEFORM, backend form alanlarının görünürlüğünü, sıralamasını ve davranışını Page/User TSconfig ile özelleştirmeyi sağlar.

---

## TCEFORM Nedir?

TCEFORM, TCA (Table Configuration Array) üzerindeki form alanlarını TSconfig ile dinamik olarak özelleştirmenizi sağlar. Alanları gizleyebilir, yeniden adlandırabilir, seçenekleri filtreleyebilir.

---

## Temel Sözdizimi

```
TCEFORM.[tableName].[fieldName].[property]
```

---

## Alan Gizleme

### Page TSconfig ile

Backend > Sayfa özellikleri > **Resources** sekmesinde veya root sayfada:

```typoscript
# tt_content tablosunda alanları gizle
TCEFORM.tt_content {
    # Layout alanını gizle
    layout.disabled = 1

    # Frame class'ı gizle
    frame_class.disabled = 1

    # Space before/after gizle
    space_before_class.disabled = 1
    space_after_class.disabled = 1

    # Tarih alanını gizle
    date.disabled = 1

    # Kategoriler alanını gizle
    categories.disabled = 1

    # Erişim sekmesindeki alanları gizle
    editlock.disabled = 1
    fe_group.disabled = 1
}

# Pages tablosunda alanları gizle
TCEFORM.pages {
    # Backend layout alanını gizle
    backend_layout.disabled = 1
    backend_layout_next_level.disabled = 1

    # Abstract alanını gizle
    abstract.disabled = 1

    # Yazar alanlarını gizle
    author.disabled = 1
    author_email.disabled = 1
}
```

---

## Alan Seçeneklerini Filtreleme

### CType Filtreleme

```typoscript
# Belirli CType'ları kaldır
TCEFORM.tt_content.CType {
    removeItems = text,bullets,table,uploads,menu_abstract,menu_recently_updated
    keepItems = textmedia,header,html,list,shortcut,div
}
```

### Layout Seçenekleri

```typoscript
# Sayfa layout seçeneklerini özelleştir
TCEFORM.pages.layout {
    removeItems = 1,2
    addItems {
        10 = Geniş Sayfa
        20 = Dar Sayfa
        30 = Tam Ekran
    }
}

# İçerik layout seçenekleri
TCEFORM.tt_content.layout {
    removeItems = 1,2,3
    addItems {
        10 = Varsayılan
        20 = Vurgulu
        30 = Gölgeli
    }
}
```

### Header Type Filtreleme

```typoscript
TCEFORM.tt_content.header_layout {
    removeItems = 0,5
    addItems {
        100 = Büyük Başlık (Display)
        101 = Alt Başlık (Caption)
    }
    altLabels {
        1 = H1 — Ana Başlık
        2 = H2 — Bölüm Başlığı
        3 = H3 — Alt Başlık
        4 = H4 — Küçük Başlık
    }
}
```

---

## Alan Yeniden Adlandırma

```typoscript
TCEFORM.tt_content {
    # Header alanının etiketini değiştir
    header.label = İçerik Başlığı

    # Bodytext etiketini değiştir
    bodytext.label = Ana İçerik Metni

    # Subheader etiketini değiştir
    subheader.label = Kısa Açıklama
}

TCEFORM.pages {
    title.label = Sayfa Başlığı
    nav_title.label = Menü Başlığı
    subtitle.label = Alt Başlık
}
```

---

## Belirli CType'a Özel Ayarlar

```typoscript
# Sadece textmedia elemanı için
TCEFORM.tt_content.imageorient {
    types.textmedia {
        removeItems = 8,9,10,17,18,25,26
    }
}

# Sadece header elemanı için
TCEFORM.tt_content.header_layout {
    types.header {
        keepItems = 1,2,3
    }
}
```

---

## RTE (Rich Text Editor) Yapılandırması

```typoscript
# RTE'yi özelleştir
RTE.default.editor.config {
    # Kullanılabilir butonlar
    toolbarGroups {
        1 = basicstyles
        2 = paragraph
        3 = links
        4 = cleanup
    }

    # Stil seçenekleri
    stylesSet (
        [
            { "name": "Lead Paragraph", "element": "p", "attributes": { "class": "lead" } },
            { "name": "Small Text", "element": "span", "attributes": { "class": "text-sm" } }
        ]
    )
}
```

---

## Yeni Özel Alan Ekleme

### TCA Overrides

`Configuration/TCA/Overrides/tt_content.php`:

```php
<?php

declare(strict_types=1);

// Yeni alan tanımla
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tt_content',
    [
        'tx_mysite_custom_class' => [
            'label' => 'Özel CSS Class',
            'config' => [
                'type' => 'input',
                'size' => 50,
                'eval' => 'trim',
                'placeholder' => 'my-custom-class',
            ],
        ],
        'tx_mysite_background_color' => [
            'label' => 'Arka Plan Rengi',
            'config' => [
                'type' => 'select',
                'renderType' => 'selectSingle',
                'items' => [
                    ['label' => 'Yok', 'value' => ''],
                    ['label' => 'Beyaz', 'value' => 'bg-white'],
                    ['label' => 'Açık Gri', 'value' => 'bg-gray-100'],
                    ['label' => 'Koyu', 'value' => 'bg-gray-900'],
                ],
                'default' => '',
            ],
        ],
    ]
);

// Alanı tüm CType'lara ekle
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
    'tt_content',
    '--div--;Özel Ayarlar, tx_mysite_custom_class, tx_mysite_background_color',
    '',
    'after:categories'
);
```

### SQL Tanımı

`ext_tables.sql`:

```sql
CREATE TABLE tt_content (
    tx_mysite_custom_class varchar(255) DEFAULT '' NOT NULL,
    tx_mysite_background_color varchar(50) DEFAULT '' NOT NULL,
);
```

---

## Kaynaklar

- [TCEFORM TSconfig](https://docs.typo3.org/m/typo3/reference-tsconfig/main/en-us/PageTsconfig/TceForm.html)
- [TCA Reference](https://docs.typo3.org/m/typo3/reference-tca/main/en-us/)
