From a5a3248c69925f7c5e36d5b4e5434f293991f3b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Tue, 30 Dec 2025 21:18:02 +0300 Subject: [PATCH] Add Frontend Theme Implementation Rules: Introduced a new markdown file outlining the rules for converting static HTML templates in the `public/html` directory to Laravel Blade structure. This includes guidelines on source and target structure, component organization, code conversion rules, CMS integration, and automatic menu configuration, enhancing the development process for frontend themes. --- .cursor/rules/frontend-theme.mdc | 138 +++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 .cursor/rules/frontend-theme.mdc diff --git a/.cursor/rules/frontend-theme.mdc b/.cursor/rules/frontend-theme.mdc new file mode 100644 index 0000000..30b4ca9 --- /dev/null +++ b/.cursor/rules/frontend-theme.mdc @@ -0,0 +1,138 @@ +--- +description: Public HTML şablonlarını Laravel Blade yapısına dönüştürme kuralları +globs: resources/views/**/*.blade.php, public/html/**/*.html +--- +# Frontend Theme Implementation Rules + +Bu kurallar, `public/html` dizinindeki statik HTML şablonlarının Laravel Blade yapısına dönüştürülmesi sırasında geçerlidir. + +## 1. Kaynak ve Hedef Yapısı + +- **Kaynak (Source):** `public/html/` dizinindeki `.html` dosyaları referans alınır. +- **Hedef (Target):** `resources/views/front/` dizini altında Blade dosyaları oluşturulur. +- **Assets (Varlıklar):** Statik dosyalar `public/html/assets` altındadır. Blade içinde erişim `asset('html/assets/...')` şeklinde olmalıdır. + +## 2. Bileşen (Component) Yapısı + +Yeni UI bileşenleri oluştururken aşağıdaki isimlendirme ve klasör yapısını kullan: + +- **Layout:** `resources/views/layouts/front.blade.php` (Master layout) +- **Header:** `resources/views/components/front/header.blade.php` -> `` +- **Footer:** `resources/views/components/front/footer.blade.php` -> `` +- **Page Sections:** `resources/views/components/front/sections/` altında: + - Hero/Slider -> `` + - Features -> `` + - About -> `` + +## 3. Kod Dönüştürme Kuralları + +### A. CSS ve Sınıflar +- **ÖNEMLİ:** Şablondaki `!` önekli Tailwind sınıflarını (örn: `!bg-[#f0f0f8]`, `!absolute`) KESİNLİKLE KORU. Bunlar temanın çalışması için kritiktir. +- HTML'deki `class="..."` yapılarını birebir kopyala, Tailwind sınıflarını sadeleştirme veya değiştirme. + +### B. Asset Bağlantıları +HTML içindeki: +```html + + +``` +Blade içinde şu şekilde olmalı: +```blade + + +``` + +### C. Dinamik İçerik +- Metinleri `{{ __('theme.key') }}` şeklinde lokalizasyon fonksiyonu ile sar. +- Tekrarlayan elemanları (örn: slider itemları, hizmet kutuları) `@foreach` döngüsü içine al. + +## 4. Layout Şablonu (Örnek) + +`front.blade.php` layout dosyası şu yapıda olmalıdır: + +```blade + + + + + + @yield('title', config('app.name')) + + @stack('styles') + + + + + +
+ @yield('content') +
+ + + + + @stack('scripts') + + +``` + +## 5. CMS Entegrasyonu (Dinamik Şablon Seçimi) + +Kullanıcı, bir prompt ile belirli bir section, header veya footer şablonunun kullanılmasını istediğinde (örn: "Header V1 ve About Section 3 kullan"), aşağıdaki stratejiyi izle: + +1. **Veritabanı Araması:** İlgili şablonun veritabanında (genellikle `sections` veya `templates` tablosunda) var olduğunu varsay. +2. **Seeder/Migration Oluşturma:** Kullanıcının istediği yapıyı oluşturmak için bir Laravel Seeder veya Migration kodu üret. Bu kod: + - İlgili şablonu (title veya slug ile) bulmalı. + - Sayfa veya layout ile ilişkilendirmeli. + +**Örnek Senaryo:** "Ana sayfada 'Hero Slider V2' ve 'Services Grid' kullan." +**Üretilecek Kod (Örnek):** +```php +// DatabaseSeeder.php veya özel bir seeder içinde +$homePage = Page::firstOrCreate(['slug' => 'home'], ['title' => 'Ana Sayfa']); + +// Şablonları bul +$heroSection = Section::where('title', 'like', '%Hero Slider V2%')->first(); +$servicesSection = Section::where('title', 'like', '%Services Grid%')->first(); + +// İlişkilendir (Proje yapısına göre attach veya update) +if ($heroSection) { + // Örnek ilişkilendirme mantığı + $homePage->sections()->attach($heroSection->id, ['order' => 1]); +} +``` + +## 6. Otomatik Menü ve Sayfa Yapılandırması + +Kullanıcı "Şu yapıda bir menü tasarla" dediğinde (örn: "Ana Sayfa, Kurumsal > Hakkımızda, İletişim"): + +1. **Page Modeli:** İstenen sayfaların veritabanında var olup olmadığını kontrol eden ve yoksa oluşturan bir kod bloğu hazırla. +2. **Menu Modeli:** Sayfaları hiyerarşik olarak menü yapısına ekleyen bir kod bloğu hazırla. +3. **Çıktı:** Bu işlemleri gerçekleştirecek bir `php artisan tinker` komutu veya `MenuSeeder` sınıfı sun. + +**Örnek Prompt:** "Menü: Ana Sayfa, Kurumsal (Hakkımızda, Vizyon), İletişim" +**Beklenen Aksiyon:** +```php +// 1. Sayfaları Oluştur +$pages = [ + 'Ana Sayfa' => '/', + 'Kurumsal' => '#', + 'Hakkımızda' => '/kurumsal/hakkimizda', + 'Vizyon' => '/kurumsal/vizyon', + 'İletişim' => '/iletisim' +]; + +foreach ($pages as $title => $url) { + Page::firstOrCreate(['title' => $title], ['slug' => Str::slug($title)]); +} + +// 2. Menü Yapısını Kur +$mainMenu = Menu::firstOrCreate(['name' => 'Main Menu']); +// ... Menü elemanlarını ekleyen kod ... +``` + +## 7. Analiz Stratejisi +Bir sayfayı dönüştürürken: +1. Önce `public/html` altındaki ilgili `.html` dosyasını oku. +2. `header` ve `footer` kısımlarını ayır. +3. `main` içeriğindeki her bir `section` veya mantıksal bloğu ayrı bir Blade component olarak çıkar.