Laravel SEO optimizasyonu, modern web geliştirme projelerinde hayati bir rol oynar. Arama motorlarında daha üst sıralarda yer almak, organik trafiği artırmak ve hedef kitlenize ulaşmak için doğru SEO stratejileri kullanmak gerekir. Bu makalede, ralphjsmit/laravel-seo paketini kullanarak Laravel uygulamalarınızda SEO optimizasyonunu nasıl gerçekleştireceğinizi detaylı bir şekilde inceleyeceğiz. Bu paket, meta etiketleri, başlıklar, açıklamalar, Open Graph etiketleri ve daha fazlasını yönetmek için basit ve etkili bir çözüm sunar.
ralphjsmit/laravel-seo Paketine Giriş
ralphjsmit/laravel-seo, Laravel uygulamalarınız için kapsamlı bir SEO yönetim aracıdır. Bu paket, dinamik meta etiketleri oluşturmanıza, sosyal medya optimizasyonu yapmanıza ve arama motorlarına web sitenizin içeriği hakkında daha fazla bilgi vermenize olanak tanır. Temel amacı, SEO sürecini basitleştirmek ve geliştiricilerin karmaşık SEO gereksinimlerini kolayca yönetmelerini sağlamaktır.
Kurulum ve Yapılandırma
Paket Kurulumu
ralphjsmit/laravel-seo paketini kurmak için Composer kullanmanız gerekmektedir. Proje dizininizde aşağıdaki komutu çalıştırın:
composer require ralphjsmit/laravel-seo
Bu komut, paketi projenize indirir ve bağımlılıklarını otomatik olarak yükler.
Yapılandırma Dosyası
Paketi kurduktan sonra, yapılandırma dosyasını yayınlamanız gerekebilir. Bu dosyayı yayınlamak için aşağıdaki komutu kullanın:
php artisan vendor:publish --provider="RalphJSmit\Laravel\SEO\SEOServiceProvider" --tag="config"
Bu komut, config/seo.php adında bir yapılandırma dosyası oluşturur. Bu dosyada, paketin varsayılan ayarlarını ve davranışlarını özelleştirebilirsiniz.
Veritabanı Migrasyonu
Paket, SEO verilerini depolamak için bir veritabanı tablosu kullanır. Bu tabloyu oluşturmak için aşağıdaki migrasyon komutunu çalıştırın:
php artisan migrate
Bu komut, seos adında bir tablo oluşturacaktır. Bu tablo, SEO ile ilgili bilgileri (başlık, açıklama, anahtar kelimeler vb.) depolamak için kullanılacaktır.
Temel Kullanım
Meta Etiketlerini Ayarlama
ralphjsmit/laravel-seo paketi, meta etiketlerini ayarlamak için basit bir API sunar. Örneğin, bir sayfanın başlığını, açıklamasını ve anahtar kelimelerini ayarlamak için aşağıdaki kodu kullanabilirsiniz:
use RalphJSmit\Laravel\SEO\Facades\SEO; SEO::title('Anasayfa'); SEO::description('Web sitemizin açıklaması.'); SEO::keywords(['laravel', 'seo', 'optimizasyon']);
Bu kod parçacığı, sayfanın başlığını "Anasayfa", açıklamasını "Web sitemizin açıklaması." ve anahtar kelimelerini "laravel", "seo", "optimizasyon" olarak ayarlar.
Open Graph Etiketlerini Ayarlama
Open Graph etiketleri, sosyal medya platformlarında paylaşıldığında sayfanızın nasıl görüneceğini kontrol etmenizi sağlar. ralphjsmit/laravel-seo paketi, Open Graph etiketlerini ayarlamak için de kolay bir yol sunar:
use RalphJSmit\Laravel\SEO\Facades\SEO; SEO::ogTitle('Makale Başlığı'); SEO::ogDescription('Makale açıklaması.'); SEO::ogImage('https://example.com/images/makale.jpg'); SEO::ogUrl(request()->url());
Bu kod, Open Graph başlığını "Makale Başlığı", açıklamasını "Makale açıklaması.", resmini https://example.com/images/makale.jpg ve URL'sini mevcut sayfanın URL'si olarak ayarlar.
Twitter Kartlarını Ayarlama
Twitter kartları, Twitter'da paylaşıldığında sayfanızın nasıl görüneceğini özelleştirmenizi sağlar. ralphjsmit/laravel-seo paketi, Twitter kartlarını da destekler:
use RalphJSmit\Laravel\SEO\Facades\SEO; SEO::twitterTitle('Ürün Adı'); SEO::twitterDescription('Ürün açıklaması.'); SEO::twitterImage('https://example.com/images/urun.jpg'); SEO::twitterCard('summarylargeimage'); // summary, summarylargeimage, app, player
Bu kod, Twitter başlığını "Ürün Adı", açıklamasını "Ürün açıklaması.", resmini https://example.com/images/urun.jpg ve kart türünü "summarylargeimage" olarak ayarlar.
Robots Meta Etiketi
Arama motoru botlarının web sitenizi nasıl tarayacağını ve indeksleyeceğini kontrol etmek için robots meta etiketini kullanabilirsiniz. ralphjsmit/laravel-seo paketi, bu etiketi ayarlamak için de bir yöntem sunar:
use RalphJSmit\Laravel\SEO\Facades\SEO; SEO::robots('index, follow'); // veya 'noindex, nofollow', 'index, nofollow', 'noindex, follow'
Bu kod, arama motoru botlarının sayfayı indekslemesine ve bağlantıları takip etmesine izin verir.
Gelişmiş Kullanım
Dinamik SEO Verileri
Çoğu durumda, SEO verileri dinamik olarak oluşturulmalıdır. Örneğin, bir blog yazısının başlığı ve açıklaması, yazının içeriğine göre değişmelidir. ralphjsmit/laravel-seo paketi, dinamik verileri kullanmanıza olanak tanır:
use RalphJSmit\Laravel\SEO\Facades\SEO; use App\Models\BlogPost; $blogPost = BlogPost::findOrFail($id); SEO::title($blogPost->title); SEO::description($blogPost->excerpt); SEO::keywords(explode(',', $blogPost->tags)); // Etiketleri virgülle ayrılmış bir dize olarak varsayalım SEO::ogTitle($blogPost->title); SEO::ogDescription($blogPost->excerpt); SEO::ogImage($blogPost->image_url);
Bu kod, bir blog yazısının başlığını, özetini, etiketlerini ve resmini veritabanından alır ve SEO etiketlerini buna göre ayarlar.
SEO Verilerini Veritabanında Saklama
SEO verilerini veritabanında saklamak, büyük ve karmaşık web sitelerinde SEO yönetimini kolaylaştırır. ralphjsmit/laravel-seo paketi, SEO verilerini veritabanında saklamayı destekler. Öncelikle, SEOServiceProvider'ı yapılandırma dosyanızda (config/app.php) eklemeniz gerekir. Bu genellikle otomatik olarak yapılır, ancak kontrol etmekte fayda var.
Ardından, her model için SEO verilerini nasıl saklayacağınızı belirlemeniz gerekir. Örneğin, bir BlogPost modeli için SEO verilerini saklamak için aşağıdaki gibi bir yöntem kullanabilirsiniz:
namespace App\Models; use Illuminate\Database\Eloquent\Model; use RalphJSmit\Laravel\SEO\Models\SEO; use RalphJSmit\Laravel\SEO\Traits\HasSEO; class BlogPost extends Model { use HasSEO; protected $fillable = [ 'title', 'content', ]; public function getDynamicSEOModel(): SEO { $seo = $this->seo()->firstOrNew(); // İlişkiyi oluştur veya varsa getir $seo->title = $this->title; $seo->description = substr(strip_tags($this->content), 0, 160); // HTML etiketlerini temizle ve 160 karakterle sınırla $seo->og_title = $this->title; $seo->og_description = $seo->description; $seo->ogimage = 'https://example.com/images/defaultblog_image.jpg'; // Varsayılan bir resim URL'si return $seo; } }
Bu kod, BlogPost modeline HasSEO trait'ini ekler ve getDynamicSEOModel adında bir yöntem tanımlar. Bu yöntem, modelin SEO verilerini dinamik olarak oluşturur ve döndürür. seo() ilişkisi ile SEO verilerini model ile ilişkilendirebilirsiniz.
BlogPost modelini kullanmadan önce, modelde seo ilişkisini tanımlamanız gerekir. HasSEO trait'i, bu ilişkiyi otomatik olarak tanımlar, ancak manuel olarak da tanımlayabilirsiniz. Modelde seo() metodu tanımlanmamışsa, trait otomatik olarak bir MorphOne ilişkisi oluşturur.
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\MorphOne; use RalphJSmit\Laravel\SEO\Models\SEO; use RalphJSmit\Laravel\SEO\Traits\HasSEO; class BlogPost extends Model { use HasSEO; protected $fillable = [ 'title', 'content', ]; public function seo(): MorphOne { return $this->morphOne(SEO::class, 'seoable'); } public function getDynamicSEOModel(): SEO { $seo = $this->seo()->firstOrNew(); // İlişkiyi oluştur veya varsa getir $seo->title = $this->title; $seo->description = substr(strip_tags($this->content), 0, 160); // HTML etiketlerini temizle ve 160 karakterle sınırla $seo->og_title = $this->title; $seo->og_description = $seo->description; $seo->ogimage = 'https://example.com/images/defaultblog_image.jpg'; // Varsayılan bir resim URL'si return $seo; } }
Son olarak, görünümünüzde SEO verilerini göstermek için aşağıdaki kodu kullanabilirsiniz:
use RalphJSmit\Laravel\SEO\Facades\SEO; $blogPost = BlogPost::findOrFail($id); SEO::use($blogPost->getDynamicSEOModel()); // SEO verilerini kullan // veya, traiti kullanmıyorsanız: // $seo = SEO::model($blogPost);
Bu kod, BlogPost modelinin getDynamicSEOModel yöntemini çağırır ve elde edilen SEO verilerini kullanır.
JSON-LD Verilerini Ayarlama
JSON-LD, arama motorlarına web siteniz hakkında daha fazla bilgi vermenizi sağlayan bir yapılandırılmış veri biçimidir. ralphjsmit/laravel-seo paketi, JSON-LD verilerini ayarlamak için doğrudan bir yöntem sunmaz, ancak kolayca entegre edebilirsiniz. Örneğin, bir ürün için JSON-LD verilerini aşağıdaki gibi ayarlayabilirsiniz:
use RalphJSmit\Laravel\SEO\Facades\SEO; $product = Product::findOrFail($id); $jsonLd = [ "@context" => "https://schema.org/", "@type" => "Product", "name" => $product->name, "image" => [ $product->image_url, ], "description" => $product->description, "brand" => [ "@type" => "Brand", "name" => $product->brand, ], "offers" => [ "@type" => "Offer", "url" => request()->url(), "priceCurrency" => "USD", "price" => $product->price, "availability" => "https://schema.org/InStock", ], ]; SEO::addJsonLd($jsonLd);
Bu kod, bir ürünün adını, resmini, açıklamasını, markasını ve tekliflerini içeren bir JSON-LD nesnesi oluşturur ve SEO::addJsonLd() yöntemini kullanarak sayfaya ekler.
Özel Meta Etiketleri Ekleme
ralphjsmit/laravel-seo paketi, özel meta etiketleri eklemenize de olanak tanır. Örneğin, bir sayfanın dilini belirtmek için aşağıdaki gibi bir meta etiketi ekleyebilirsiniz:
use RalphJSmit\Laravel\SEO\Facades\SEO; SEO::addMeta('language', 'tr');
Bu kod, language adında ve tr değerinde bir meta etiketi ekler.
Şablonlarda Kullanım
SEO verilerini şablonlarda görüntülemek için, SEO::generate() yöntemini kullanabilirsiniz. Bu yöntem, ayarlanmış tüm meta etiketlerini, Open Graph etiketlerini ve Twitter kartlarını içeren bir HTML dizesi döndürür.
@yield('title', 'Varsayılan Başlık') {!! SEO::generate() !!} @yield('content')
Bu kod, SEO::generate() yöntemini kullanarak SEO etiketlerini bölümüne ekler.
SEO İpuçları ve En İyi Uygulamalar
- Anahtar Kelime Araştırması: Hedef kitlenizin kullandığı anahtar kelimeleri belirlemek için kapsamlı bir anahtar kelime araştırması yapın.
- Başlık ve Açıklama Optimizasyonu: Her sayfa için benzersiz ve alakalı başlıklar ve açıklamalar oluşturun.
- İçerik Kalitesi: Yüksek kaliteli, bilgilendirici ve ilgi çekici içerik oluşturun.
- Mobil Uyumluluk: Web sitenizin mobil cihazlarda düzgün çalıştığından emin olun.
- Site Hızı: Web sitenizin hızlı yüklendiğinden emin olun.
- Bağlantı Oluşturma: Diğer güvenilir web sitelerinden bağlantılar alın.
- Analiz ve İzleme: SEO performansınızı düzenli olarak analiz edin ve iyileştirmeler yapın.
Sonuç
ralphjsmit/laravel-seo paketi, Laravel uygulamalarınızda SEO optimizasyonunu kolaylaştıran güçlü bir araçtır. Bu makalede, paketin kurulumunu, temel ve gelişmiş kullanımını ve SEO ipuçlarını ayrıntılı olarak inceledik. Bu bilgileri kullanarak, web sitenizin arama motorlarında daha üst sıralarda yer almasını sağlayabilir ve organik trafiğinizi artırabilirsiniz. Unutmayın ki SEO sürekli bir süreçtir ve düzenli analiz ve iyileştirme gerektirir.