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
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 blogArdı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 migrateBu 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 -mMigration 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 migrate3. 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 --resourceController 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
.envdosyasında tutmakVeritabanı 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