🎯 Ana Hedef
Her blog yazısının kendi author bilgilerine sahip olması
Şu an: Tüm bloglar Nurullah Okatan görünüyor (global fallback)
Hedef: Her blog kendi yazarını gösterecek + SEO schema eklenecek
❌ Mevcut Problemler
1. Tek Author Sorunu
Tüm blog yazıları aynı authoru gösteriyor:
// Şu an çalışan sistem:
Author Name: Nurullah Okatan (global fallback)
Author Title: iXtif (yanlış - firma adı!)
Author Bio: iXtif, Türk Bilişim ve Tuufi...
Sorun: Her blog aynı kişi tarafından yazılmış gibi görünüyor
2. SEO Settings Tablosu Kullanılmıyor
Databasede seo_settings tablosu var ama author bilgileri için kullanılmıyor!
Tablo
Kullanım
Durum
seo_settings
Blog-specific SEO data
❌ Author fieldları yok
settings (Group 8)
Global default author
✅ Çalışıyor (fallback)
3. Schema.org Eksik Veri
Schema markup ekledik ama her blog için aynı person gösteriliyor
Google her blogu farklı yazar olarak görmeli!
✅ Çözüm: 3 Katmanlı Author Sistemi
Cascade (Öncelik) Mantığı:
1. ÖNCELİK: Blogun kendi SEO settingsi (seo_settings tablosu)
2. ÖNCELİK: Global default author (settings Group 8)
3. ÖNCELİK: Site bilgileri (son fallback)
// PHP Logic:
$authorName = $blog->seoSettings->author_name
?? setting(seo_default_author)
?? setting(site_title);
$authorTitle = $blog->seoSettings->author_title
?? setting(seo_default_author_title)
?? İçerik Yazarı;
Sistem Akışı:
Senaryo 1: Blogun kendi authoru var
Blog ID 123:
seo_settings → author_name = "Ali Yılmaz"
seo_settings → author_title = "SEO Uzmanı"
Sonuç: Ali Yılmaz gösterilir ✅
Senaryo 2: Blog authoru boş (fallback)
Blog ID 124:
seo_settings → author_name = NULL
Fallback → settings → seo_default_author = "Nurullah Okatan"
Sonuç: Nurullah Okatan gösterilir ✅
Senaryo 3: Her ikisi de boş (son fallback)
Blog ID 125:
seo_settings → author_name = NULL
settings → seo_default_author = NULL
Fallback → settings → site_title = "iXtif"
Sonuç: iXtif gösterilir (firma adı) ⚠️
🗄️ Database Değişiklikleri
Migration: seo_settings Tablosuna Author Alanları Ekle
Schema::table(seo_settings, function (Blueprint $table) {
// Author bilgileri
$table->string(author_name)->nullable();
$table->string(author_title)->nullable();
$table->text(author_bio)->nullable();
$table->string(author_image)->nullable();
$table->string(author_url)->nullable();
// Index
$table->index([model_type, model_id, author_name]);
});
Mevcut Yapı:
Tablo
Field
Kullanım
seo_settings
model_type
Blog, Product, Page, vb.
model_id
İlgili içeriğin IDsi
meta_title
SEO başlık
meta_description
SEO açıklama
author_name ⭐ NEW
Yazar adı
author_title ⭐ NEW
Yazar ünvanı
...diğer author fieldları ⭐
Bio, image, url, vb.
🔧 Kod Değişiklikleri
1. Author Card Component Güncellemesi
// Eski (sadece global settings):
$authorName = setting(seo_default_author);
// Yeni (cascade fallback):
$authorName = $blog->seoSettings->author_name
?? setting(seo_default_author)
?? setting(site_title);
2. Blog Modele SEO Settings İlişkisi
// Blog.php model
public function seoSettings()
{
return $this->morphOne(SeoSetting::class, model);
}
// Kullanım:
$blog->seoSettings->author_name
3. Component Parametresi Ekleme
// show-content.blade.php
<x-blog.author-card variant="full" :blog="$item" />
// author-card.blade.php
@props([variant => full, blog => null])
📊 Authorun Diğer İçerikleri - Karar Zamanı!
✅ OPTION A: Göster
Avantajlar:
✓ Internal linking (SEO+)
✓ Author authority artışı
✓ Kullanıcı sitede daha fazla kalır
✓ E-E-A-T sinyali (Google SEO)
Dezavantajlar:
✗ Mobilde yer kaplar
✗ Ekstra database query
✗ Sayfa daha uzun
❌ OPTION B: Gösterme
Avantajlar:
✓ Temiz, minimal görünüm
✓ Hızlı sayfa yükleme
✓ Mobilde yer kazanımı
Dezavantajlar:
✗ Internal linking kaybı
✗ Author authority zayıf
✗ Kullanıcı siteden çıkabilir
💡 ÖNERİ: Hibrit Çözüm
Desktop: Authorun son 3 yazısını göster (sidebar veya bottom)
Mobil: Gösterme (yer kazanmak için)
Tasarım: Kompakt kartlar, thumbnail + başlık
📋 Yapılacaklar Listesi
Yüksek Öncelik 1. Database Migration
seo_settings tablosuna author alanları ekle
Migration dosyası oluştur (tenant + central)
Migration çalıştır
Yüksek Öncelik 2. Model İlişkileri
Blog modele seoSettings ilişkisi ekle
SeoSetting modele author accessorlar ekle
Yüksek Öncelik 3. Author Card Güncelleme
Componente blog parametresi ekle
3 katmanlı fallback sistemi kur
Schema.org markupı dinamik hale getir
Orta Öncelik 4. Admin Panel Entegrasyonu
Blog edit sayfasına "Author Bilgileri" sekmesi ekle
Author fieldlarını forma ekle
Kaydetme logicini güncelle
Düşük Öncelik 5. Authorun Diğer Yazıları (Opsiyonel)
Karar: Gösterilecek mi? (Desktop/Mobil)
Query: Authora göre blog filtreleme
Component: Kompakt blog kartları
Düşük Öncelik 6. Test & SEO Doğrulama
Google Rich Results Test
Schema.org validator
Farklı senaryoları test et (blog author var/yok)
🎯 Beklenen Sonuç
SEO Açısından:
✅ Her blog farklı author (Google için unique content)
✅ Author authority tracking (Google yazarı takip eder)
✅ E-E-A-T puanı artışı (Experience, Expertise, Authority, Trust)
✅ Rich snippets (yazar kutusu Googleda)
Kullanıcı Deneyimi:
✅ Kim yazdı? sorusuna net cevap
✅ Yazar hakkında bilgi (bio, sosyal medya)
✅ Güven artışı (gerçek kişiler yazıyor)
✅ İlgili içerik keşfi (authorun diğer yazıları)
Yönetim Açısından:
✅ Her blog için ayrı author atama
✅ Fallback sistem (otomatik default author)
✅ Merkezi yönetim (global author ayarları)
✅ Esneklik (blog bazında override)
❓ Kararlar
Senin Onayın Gereken Noktalar:
Authorun Diğer Yazıları gösterilsin mi?
A) Evet (Desktopta göster, mobilde gizle)
B) Hayır (sadece author bilgileri yeterli)
Admin panelde ayrı sekme mi yoksa mevcut SEO sekmesine ekle mi?
A) Ayrı "Author" sekmesi
B) Mevcut "SEO" sekmesine ekle
Migration şimdi mi yoksa ileride toplu mu?
A) Şimdi yap (hemen kullan)
B) Sonra yap (planlama aşamasında kal)
🤖 Claude AI tarafından oluşturuldu
📅 2025-11-19 | 🎯 Blog Author System Planning