Modül Planı

Ürünler Modülü

Endüstriyel & Vitrin Ürünleri için Kapsamlı Modül

Basit Anlatım

Ne Yapacak?

Web sitenizde ürünlerinizi kategorilere ayırarak sergileyecek. Ziyaretçiler ürünleri görebilecek, teknik özellikleri inceleyebilecek, PDF katalogları indirebilecek.

Ne Yapamayacak?

Sepet, ödeme, stok takibi gibi e-ticaret özellikleri olmayacak. Bu bir vitrin/katalog sistemi.

Kaynak Modül: Portfolio

Portfolio modülü temel alınacak. Aşağıdaki özellikler hazır gelecek:

Hazır
  • • Çoklu dil desteği (TR/EN/AR)
  • • Hiyerarşik kategoriler
  • • Hero + Galeri görselleri
  • • SEO ayarları
  • • Soft delete
  • • Admin panel (Livewire)
  • • Yorum/değerlendirme sistemi
Eklenecek
  • • Teknik özellikler (specifications)
  • • PDF/döküman desteği
  • • Ürün kodu (SKU)
  • • Marka ilişkisi (opsiyonel)
  • • Fiyat alanı (gösterimsel)
  • • Teklif formu entegrasyonu
Dönüştürülecek
  • • portfolio → product
  • • portfolio_categories → product_categories
  • • portfolios → products
  • • Portfolio → Product
  • • Route prefix değişikliği

Veritabanı Yapısı

products

Alan Tip Açıklama Kaynak
product_id bigint Primary key Portfolio
product_category_id bigint nullable Kategori FK Portfolio
title json Çoklu dil başlık Portfolio
slug json Çoklu dil slug Portfolio
body json nullable Çoklu dil açıklama Portfolio
sku varchar(100) nullable Ürün kodu YENİ
specifications json nullable Teknik özellikler YENİ
price decimal(12,2) nullable Gösterimsel fiyat YENİ
currency varchar(3) default 'TRY' Para birimi YENİ
is_active boolean Aktif/pasif Portfolio
is_featured boolean default false Öne çıkan ürün YENİ
sort_order int default 0 Sıralama YENİ
timestamps, soft_deletes - Tarih alanları Portfolio

specifications JSON Yapısı

{
  "tr": [
    {"label": "Kapasite", "value": "1000 kg"},
    {"label": "Malzeme", "value": "Paslanmaz Çelik"},
    {"label": "Boyutlar", "value": "120x80x45 cm"}
  ],
  "en": [
    {"label": "Capacity", "value": "1000 kg"},
    {"label": "Material", "value": "Stainless Steel"},
    {"label": "Dimensions", "value": "120x80x45 cm"}
  ]
}

Media Collections (Spatie)

hero

Ana ürün görseli (1 adet)

Portfolio'dan
gallery

Ürün galerisi (50 adet)

Portfolio'dan
documents

PDF katalog/teknik doküman

YENİ

Uygulama Adımları

1

module.sh ile Klonlama

Portfolio modülünü "Product" olarak klonla. Otomatik string dönüşümleri yapılacak.

./module.sh
# Seçenek 1 (Portfolio) → Product
2

Migration Düzenleme

ONAY GEREKLİ

Yeni alanları migration dosyasına ekle (sku, specifications, price, currency, is_featured, sort_order)

3

Model Güncelleme

Product.php modeline yeni alanlar ve documents media collection ekle

4

Admin Panel Güncelleme

Livewire componentlere yeni alanların formlarını ekle (SKU, Özellikler, Fiyat, PDF yükleme)

5

Frontend Şablonları

Tema dosyalarını oluştur (index.blade.php, show.blade.php). Teknik özellikler tablosu, PDF indirme butonu ekle.

6

Lang Dosyaları

TR/EN/AR çevirilerini güncelle (Ürünler, Ürün Kodu, Teknik Özellikler, Teklif İste vb.)

7

Migrate & Test

ONAY GEREKLİ

Migration çalıştır, seeder ile örnek veri ekle, test et.

Oluşacak Dosya Yapısı

Modules/Product/
├── App/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   └── ProductController.php
│   │   └── Livewire/
│   │       ├── ProductComponent.php
│   │       ├── ProductManageComponent.php
│   │       ├── CategoryComponent.php
│   │       └── CategoryManageComponent.php
│   └── Models/
│       ├── Product.php
│       └── ProductCategory.php
├── config/
│   └── config.php
├── database/
│   ├── migrations/
│   │   ├── 2024_02_17_000000_create_product_categories_table.php
│   │   ├── 2024_02_17_000001_create_products_table.php
│   │   └── tenant/ (aynı dosyalar)
│   └── seeders/
│       └── ProductSeeder.php
├── lang/
│   ├── tr/
│   │   ├── admin.php
│   │   └── front.php
│   └── en/
│       ├── admin.php
│       └── front.php
├── resources/views/
│   ├── admin/livewire/
│   │   ├── product-component.blade.php
│   │   ├── product-manage-component.blade.php
│   │   ├── category-component.blade.php
│   │   └── category-manage-component.blade.php
│   ├── front/
│   │   ├── index.blade.php
│   │   └── show.blade.php
│   └── themes/
│       └── (tenant bazlı şablonlar)
├── routes/
│   ├── web.php
│   └── admin.php
├── Providers/
│   ├── ProductServiceProvider.php
│   └── RouteServiceProvider.php
└── module.json

Karar Noktaları

1. Marka Sistemi

Ürünler için ayrı bir marka (brand) tablosu oluşturulsun mu?

Ayrı tablo Metin alanı Gerek yok

2. Fiyat Gösterimi

Fiyat alanı eklensin mi? (Sadece gösterim amaçlı)

Evet Hayır

3. İlişkili Ürünler

Ürün detay sayfasında benzer ürünler gösterilsin mi?

Aynı kategoriden Manuel seçim Gerek yok

4. Teklif Formu

Ürün detayında "Teklif İste" formu olsun mu?

Modal form İletişim sayfasına yönlendir