Blog yazılarına dön
Web Development 1 dk okuma 176 görüntülenme Doğukan Ersan

Laravel ile Blog Sistemi Oluşturmak

Laravel, Filament ve MySQL kullanarak yönetilebilir bir blog sistemi oluşturma süreci.

Yazar: Doğukan Ersan

Laravel ile Blog Sistemi Oluşturmak

Laravel ile Blog Sistemi Oluşturmak

Modern web uygulamalarında içerik yönetimi, kullanıcı deneyimi ve sürdürülebilir kod mimarisi önemli bir yer tutar. Laravel, sunduğu güçlü araçlar ve düzenli proje yapısı sayesinde blog sistemleri geliştirmek için kullanışlı bir PHP framework'üdür.

Bu yazıda Laravel ile temel bir blog sisteminin nasıl oluşturulabileceğini, hangi bileşenlere ihtiyaç duyulduğunu ve geliştirilebilir bir mimarinin nasıl kurulabileceğini ele alacağız.

Neden Laravel?

Laravel; veritabanı işlemleri, yönlendirme, kimlik doğrulama ve şablon yönetimi gibi birçok ihtiyacı ortak bir yapı altında toplar. Böylece geliştiriciler, tekrar eden işlemlerle uğraşmak yerine uygulamanın özelliklerine odaklanabilir.

Laravel'in blog geliştirme sürecinde öne çıkan özellikleri şunlardır:

  • Eloquent ORM: Veritabanı kayıtlarını modeller üzerinden yönetmeyi kolaylaştırır.

  • Blade: Dinamik ve tekrar kullanılabilir sayfa şablonları oluşturmayı sağlar.

  • Routing: Blog yazıları ve yönetim sayfaları için düzenli URL yapıları kurmaya yardımcı olur.

  • Migration: Veritabanı şemasının kod üzerinden yönetilmesini sağlar.

  • Validation: Formlardan gelen verilerin kurallara uygunluğunu kontrol eder.

  • Middleware: Yetkisiz erişimleri sınırlandırmak gibi işlemleri gerçekleştirir.

1. Proje Yapısını Oluşturmak

Yeni bir Laravel projesi oluşturmak için Composer kullanılabilir:

composer create-project laravel/laravel blog
cd blog

Ardından .env dosyasında veritabanı bağlantısı yapılandırılır. Geliştirme ortamında kullanılan veritabanı adı, kullanıcı adı ve bağlantı bilgileri doğru tanımlanmalıdır.

Veritabanı ayarları tamamlandıktan sonra temel migration işlemleri çalıştırılabilir:

php artisan migrate

Bu işlem, projede tanımlı migration dosyalarına göre gerekli tabloları oluşturur.

2. Blog Yazıları İçin Model ve Migration Oluşturmak

Blog yazılarını yönetmek için Post isimli bir model ve migration oluşturabiliriz:

php artisan make:model Post -m

Migration dosyasında yazı başlığı, URL adresi, içerik ve yayın tarihi gibi alanlar tanımlanabilir:

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->string('slug')->unique();
    $table->text('excerpt')->nullable();
    $table->longText('content');
    $table->boolean('is_published')->default(false);
    $table->timestamp('published_at')->nullable();
    $table->timestamps();
});

Burada slug, yazıların okunabilir URL adreslerinde kullanılmasını sağlar. is_published alanı ise taslak yazılar ile yayımlanmış yazıları birbirinden ayırır.

Tabloyu oluşturmak için:

php artisan migrate

3. CRUD İşlemlerini Uygulamak

Bir blog sisteminin temelinde CRUD işlemleri bulunur:

  • Create: Yeni yazı oluşturmak.

  • Read: Yazıları listelemek ve ayrıntılarını görüntülemek.

  • Update: Mevcut yazıları düzenlemek.

  • Delete: Gereksiz veya istenmeyen yazıları silmek.

Laravel'de bu işlemler modeller, controller sınıfları ve form doğrulama kuralları kullanılarak gerçekleştirilebilir.

Örneğin, blog yazıları için bir resource controller oluşturabiliriz:

php artisan make:controller PostController --resource

Controller içerisinde yazı listesini görüntülemek için Eloquent kullanılabilir:

public function index()
{
    $posts = Post::query()
        ->where('is_published', true)
        ->whereNotNull('published_at')
        ->where('published_at', '<=', now())
        ->latest('published_at')
        ->paginate(10);

    return view('posts.index', compact('posts'));
}

Bu örnek yalnızca yayımlanmış ve yayın zamanı gelmiş yazıları listeler. Sayfalama sayesinde çok sayıda yazı tek bir sayfaya yüklenmek zorunda kalmaz.

4. Blog Arayüzünü Hazırlamak

Blog arayüzü, ziyaretçilerin içerikleri kolayca bulabileceği ve okuyabileceği şekilde tasarlanmalıdır.

Temel sayfalar şunlar olabilir:

  • Ana sayfa ve yazı listesi

  • Yazı detay sayfası

  • Kategori ve etiket sayfaları

  • Hakkında ve iletişim sayfaları

  • Yönetim paneli

Blade şablonları kullanılarak ortak bir sayfa düzeni oluşturulabilir. Böylece başlık, menü, alt bilgi ve diğer ortak bileşenler her sayfada tekrar yazılmadan kullanılabilir.

5. Yönetim Paneli Eklemek

Blog içeriklerinin kod dosyalarına müdahale etmeden yönetilebilmesi için bir yönetim paneli gerekir.

Yönetim panelinde yeni yazı oluşturma, mevcut yazıları düzenleme, taslakları yönetme ve içerikleri yayımlama gibi özellikler bulunabilir. Laravel ekosistemindeki Filament, bu tür yönetim arayüzlerini geliştirmek için kullanılabilecek seçeneklerden biridir.

Yönetim paneli mutlaka kimlik doğrulama ve yetkilendirme mekanizmalarıyla korunmalıdır. Yalnızca giriş yapmış olmak her kullanıcıya içerik oluşturma veya silme izni vermek anlamına gelmemelidir.

6. Güvenlik ve Performans

Bir blog sistemini geliştirirken yalnızca çalışan özelliklere odaklanmak yeterli değildir. Uygulamanın güvenli ve performanslı olması da gerekir.

Dikkat edilmesi gereken başlıca konular:

  • Form verilerini sunucu tarafında doğrulamak

  • Kullanıcı girdilerini güvenli biçimde görüntülemek

  • Yönetim rotalarını yetkilendirme ile korumak

  • Gizli bilgileri .env dosyasında tutmak

  • Veritabanı sorgularında Eloquent ve parametreli sorgulardan yararlanmak

  • Sayfalama ve uygun veritabanı indeksleri kullanmak

  • Üretim ortamında hata ayıklama modunu kapalı tutmak

  • Düzenli yedekleme ve güncelleme süreçleri oluşturmak

Bu adımlar, sistemin yalnızca başlangıçta değil, içerik sayısı ve kullanıcı ihtiyaçları arttığında da sürdürülebilir kalmasına yardımcı olur.

Sonuç

Laravel ile blog sistemi geliştirmek; yönlendirme, veritabanı yönetimi, şablonlama, form doğrulama ve yetkilendirme gibi temel web geliştirme konularını tek bir projede bir araya getirir.

Doğru bir mimariyle oluşturulan blog sistemi zaman içinde kategoriler, etiketler, arama, SEO meta verileri, görsel yönetimi ve Markdown tabanlı içerik desteği gibi özelliklerle genişletilebilir.

Küçük bir kişisel blogla başlamak, Laravel'in temel bileşenlerini öğrenmek ve daha sonra ihtiyaçlara göre yeni özellikler eklemek için etkili bir yaklaşımdır.

Etiketler