Files
citrus/docs/SEEDER_USAGE.md

256 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Veritabanı Seeder Kullanım Kılavuzu
## Genel Bakış
Sistemde 2 ana seeder bulunmaktadır:
1. **PageSeeder** - Örnek sayfalar (home, about, services, contact, pricing)
2. **SettingSeeder** - Site ayarları ve yapılandırmaları
## Seeder'ları Çalıştırma
### Tüm Seeder'ları Çalıştırma
```bash
php artisan db:seed
```
### Sadece Page Seeder'ı Çalıştırma
```bash
php artisan db:seed --class=PageSeeder
```
### Sadece Setting Seeder'ı Çalıştırma
```bash
php artisan db:seed --class=SettingSeeder
```
### Fresh Migration + Seed (Dikkat: Tüm veriler silinir!)
```bash
php artisan migrate:fresh --seed
```
---
## PageSeeder İçeriği
### Oluşturulan Sayfalar
1. **Anasayfa** (`slug: home`)
- `is_homepage: true`
- `template: home`
- Bloklar: Hero, Features, Stats, CTA
- Durum: published
2. **Hakkımızda** (`slug: about`)
- `template: generic`
- Bloklar: Hero, Features
- Durum: published
3. **Hizmetlerimiz** (`slug: services`)
- `template: generic`
- Bloklar: Hero, Features (6 hizmet)
- Durum: published
4. **İletişim** (`slug: contact`)
- `template: generic`
- Bloklar: Hero, Contact Form
- Durum: published
5. **Fiyatlandırma** (`slug: pricing`)
- `template: generic`
- Bloklar: Hero, Pricing (3 paket)
- Durum: published
- `show_in_menu: false` (menüde görünmez)
### Blok Yapısı Örneği
```json
{
"sections": [
{
"type": "hero",
"data": {
"badge": "YENİ PLATFORM",
"title": "Modern ve Çok Amaçlı Web Çözümleri",
"subtitle": "...",
"primary_button_text": "Hemen Başla",
"primary_button_url": "#features"
}
},
{
"type": "features",
"data": {
"section_title": "Neden Truncgil Citrus?",
"features": [...]
}
}
]
}
```
---
## SettingSeeder İçeriği
### Gruplar ve Ayarlar
| Grup | Açıklama | Örnek Ayarlar |
|------|----------|---------------|
| `general` | Genel site ayarları | site_name, site_description, logo, favicon |
| `theme` | Tema ve renk ayarları | primary_color, secondary_color, custom_css |
| `localization` | Dil ve bölge ayarları | timezone, currency, date_format |
| `email` | E-posta sunucu ayarları | mail_host, mail_port, mail_from |
| `social` | Sosyal medya linkleri | facebook, instagram, linkedin, twitter |
| `layout` | Frontend layout ayarları | default_meta_title, logo_path, favicon_path |
| `seo` | SEO ve analitik ayarları | google_analytics, meta_keywords |
| `security` | Güvenlik ayarları | max_login_attempts, password_rules |
| `upload` | Dosya yükleme ayarları | max_size, allowed_types, image_quality |
| `notification` | Bildirim ayarları | email_enabled, sms_enabled |
| `cache` | Cache ayarları | cache_driver, cache_duration |
| `payment` | Ödeme ayarları | default_gateway, test_mode |
| `api` | API ayarları | rate_limit, auth_method |
| `logging` | Log ayarları | log_level, retention_days |
| `performance` | Performans ayarları | query_cache, cdn_enabled |
| `integration` | 3. parti entegrasyonlar | recaptcha, stripe, paypal |
### Frontend için Kritik Ayarlar
```php
// Layout için
'default_meta_title' => 'Truncgil Citrus - Modern Web Çözümleri'
'default_meta_description' => 'Yenilikçi teknoloji çözümleri...'
'default_meta_image' => 'assets/img/demos/f1.png'
'logo_path' => 'assets/img/truncgil-yatay.svg'
'favicon_path' => 'assets/img/favicon.ico'
// Sosyal medya
'social_links' => {
'facebook': 'https://facebook.com/',
'instagram': 'https://instagram.com/',
'linkedin': 'https://linkedin.com/',
'twitter': 'https://twitter.com/'
}
```
---
## Seeder Sonrası Kontrol
### 1. Veritabanı Kontrolü
```bash
# Pages tablosunu kontrol et
php artisan tinker
>>> App\Models\Page::count()
=> 5
>>> App\Models\Page::where('status', 'published')->count()
=> 5
>>> App\Models\Page::where('is_homepage', true)->first()->slug
=> "home"
```
### 2. Setting Kontrolü
```bash
php artisan tinker
>>> App\Models\Setting::where('key', 'default_meta_title')->first()->value
=> "Truncgil Citrus - Modern Web Çözümleri"
>>> App\Models\Setting::where('key', 'social_links')->first()->value
=> "{\"facebook\":\"https://facebook.com/\",...}"
```
### 3. Frontend Kontrolü
- `https://citrus.truncgil.com/` → Anasayfa (home template + bloklar)
- `https://citrus.truncgil.com/about` → Hakkımızda
- `https://citrus.truncgil.com/services` → Hizmetler
- `https://citrus.truncgil.com/contact` → İletişim
- `https://citrus.truncgil.com/pricing` → Fiyatlandırma
---
## Özelleştirme
### Yeni Sayfa Ekleme
`database/seeders/PageSeeder.php` içinde `$pages` dizisine ekleyin:
```php
[
'title' => 'Portfolyo',
'slug' => 'portfolio',
'template' => 'generic',
'status' => 'published',
'show_in_menu' => true,
'sort_order' => 6,
'published_at' => now(),
'sections' => [
// Bloklar...
],
]
```
### Var Olan Sayfayı Güncelleme
Seeder updateOrCreate kullanıyor, slug'a göre günceller:
```bash
php artisan db:seed --class=PageSeeder
```
Aynı slug varsa güncellenir, yoksa yeni kayıt oluşturulur.
### Setting Değerlerini Değiştirme
`database/seeders/SettingSeeder.php` içinde ilgili `value` alanını değiştirin ve çalıştırın:
```bash
php artisan db:seed --class=SettingSeeder
```
---
## Sorun Giderme
### "Class not found" Hatası
```bash
composer dump-autoload
php artisan clear-compiled
php artisan config:clear
php artisan db:seed
```
### "Table doesn't exist" Hatası
```bash
php artisan migrate
php artisan db:seed
```
### Seeder Çalışmıyor
```bash
# Verbose mode ile hata detaylarını görün
php artisan db:seed --class=PageSeeder -vvv
```
### Fresh Start (Tüm veriyi sıfırlama)
```bash
php artisan migrate:fresh --seed
```
⚠️ **Uyarı:** Bu komut tüm tabloları siler ve yeniden oluşturur!
---
**Son Güncelleme:** {{ now()->format('d.m.Y H:i') }}