Kapsamlı Analiz ve Kullanım Rehberi
SEO (Arama Motoru Optimizasyonu), web sitelerinin Google gibi arama motorlarında daha üst sıralarda çıkmasını sağlayan ayarlardır. İyi bir SEO, daha fazla ziyaretçi demektir.
Doğru SEO ayarları yapıldığında sayfalarınız Google aramalarında üst sıralarda çıkar, sosyal medyada paylaşıldığında düzgün görünür ve daha fazla kişi sitenizi ziyaret eder.
Modules/SeoManagement/
├── App/
│ ├── Models/
│ │ └── SeoSetting.php
│ ├── Services/
│ │ ├── SeoService.php
│ │ ├── SeoAIService.php
│ │ └── SchemaGeneratorService.php
│ └── Http/Livewire/Admin/
│ ├── UniversalSeoComponent.php
│ └── UniversalSeoTabComponent.php
├── database/migrations/
│ ├── tenant/
│ │ └── 2025_07_19_000001_create_seo_settings_table.php
│ └── 2025_07_19_000001_create_seo_settings_table.php
└── resources/views/components/
└── universal-seo-tab.blade.php
app/
├── Traits/HasSeo.php
├── Services/SeoMetaTagService.php
└── Models/SeoSetting.php
HasSeo trait kullanır
seo_settings tablosuna bağlanır
SeoMetaTagService meta tag'leri üretir
| Kolon | Tip | Zorunlu | Açıklama |
|---|---|---|---|
seoable_type |
VARCHAR(255) | Evet | Model class adı (örn: Modules\Page\App\Models\Page) |
seoable_id |
BIGINT | Evet | Model ID (polymorphic relation) |
titles |
JSON | Önerilen | SEO başlıkları {"tr": "Başlık", "en": "Title"} |
descriptions |
JSON | Önerilen | Meta description {"tr": "Açıklama", "en": "Description"} |
og_titles |
JSON | Opsiyonel | Open Graph başlıkları (sosyal medya) |
og_descriptions |
JSON | Opsiyonel | Open Graph açıklamaları |
og_image |
VARCHAR(255) | Opsiyonel | Sosyal medya paylaşım görseli URL |
og_type |
VARCHAR(255) | Default: website | website, article, product vb. |
canonical_url |
VARCHAR(255) | Opsiyonel | Canonical URL (duplicate content önleme) |
robots_meta |
JSON | Default: index,follow | {"index": true, "follow": true} |
schema_type |
JSON | Opsiyonel | Schema.org tipi {"tr": "Article"} |
seo_score |
INT | Default: 0 | SEO puanı (0-100) |
author |
VARCHAR(255) | Opsiyonel | İçerik yazarı (E-E-A-T için) |
author_url |
VARCHAR(255) | Opsiyonel | Yazar profil URL'si |
priority_score |
INT | Default: 5 | Öncelik puanı (1-10) |
status |
ENUM | Default: active | active, inactive, pending |
Database: tenant_ixtif
Database: tenant_yildirimpanjur_04d389
<?php
namespace Modules\Service\App\Models;
use App\Models\BaseModel;
use App\Traits\HasTranslations;
use App\Traits\HasSeo;
class Service extends BaseModel
{
use HasTranslations, HasSeo;
// ... model kodu
}
/**
* SEO başlığı için fallback
*/
public function getSeoFallbackTitle(): ?string
{
return $this->getTranslated('title', app()->getLocale());
}
/**
* SEO açıklaması için fallback
*/
public function getSeoFallbackDescription(): ?string
{
$content = $this->getTranslated('body', app()->getLocale());
return \Illuminate\Support\Str::limit(strip_tags($content), 160);
}
/**
* Canonical URL için fallback
*/
public function getSeoFallbackCanonicalUrl(): ?string
{
return $this->getUrl();
}
{{-- manage.blade.php içinde --}}
<x-seomanagement::universal-seo-tab
:model="$model"
:available-languages="$availableLanguages"
:current-language="$currentLanguage"
:seo-data-cache="$seoDataCache"
/>
// Livewire component'te
public function save()
{
// ... validasyon
$this->model->save();
// SEO verilerini kaydet
if ($this->model->seoSetting) {
foreach ($this->availableLanguages as $lang) {
$this->model->updateSeoForLanguage($lang, [
'title' => $this->seoDataCache[$lang]['seo_title'] ?? '',
'description' => $this->seoDataCache[$lang]['seo_description'] ?? '',
'og_title' => $this->seoDataCache[$lang]['og_title'] ?? '',
'og_description' => $this->seoDataCache[$lang]['og_description'] ?? '',
]);
}
}
}
{
"seoable_type": "Modules\\Service\\App\\Models\\Service",
"seoable_id": 5,
"titles": {
"tr": "Garaj Kapısı Istanbul | Otomatik Garaj Kapıları | Yıldırım Panjur",
"en": "Garage Door Istanbul | Automatic Garage Doors | Yıldırım Panjur"
},
"descriptions": {
"tr": "Seksiyonel garaj kapısı, otomatik garaj kapısı kurulumu ve tamiri. Uzaktan kumandalı, güvenlik sensörlü sistemler. 5 yıl garanti!",
"en": "Sectional garage door, automatic garage door installation and repair. Remote controlled, security sensor systems. 5 year warranty!"
},
"og_titles": {
"tr": "Garaj Kapısı Sistemleri",
"en": "Garage Door Systems"
},
"og_descriptions": {
"tr": "Profesyonel garaj kapısı çözümleri",
"en": "Professional garage door solutions"
},
"og_type": "website",
"robots_meta": {
"index": true,
"follow": true,
"archive": true
},
"seo_score": 85,
"priority_score": 7,
"status": "active"
}
{"tr": "Değer", "en": "Value"}ai_suggestions kolonunda saklanırindex: true |
Sayfayı indeksle |
follow: true |
Linkleri takip et |
archive: true |
Cache'e izin ver |
noindex |
Sayfayı indeksleme |
# Central database için
php artisan migrate --force
# Tenant database'ler için
php artisan tenants:migrate --force
# Migration dosya konumu:
# Modules/SeoManagement/database/migrations/tenant/