diff --git a/app/Services/MenuService.php b/app/Services/MenuService.php
index c56ee10..f8a2e22 100644
--- a/app/Services/MenuService.php
+++ b/app/Services/MenuService.php
@@ -3,6 +3,8 @@
namespace App\Services;
use App\Models\Page;
+use App\Models\MenuTemplate;
+use App\Models\Setting;
use Illuminate\Support\Facades\Cache;
class MenuService
@@ -10,10 +12,9 @@ class MenuService
/**
* Render menu structure as HTML
*
- * @param array|null $menuTemplate Optional menu template data
* @return string Rendered menu HTML
*/
- public static function render(?array $menuTemplate = null): string
+ public static function render(): string
{
// Get menu items from Pages
$menuItems = Cache::remember('menu_items', 3600, function () {
@@ -31,15 +32,21 @@ class MenuService
->get();
});
- // If menu template is provided, use it to wrap the menu
- if ($menuTemplate && !empty($menuTemplate['html_content'])) {
- $html = $menuTemplate['html_content'];
+ // Get menu template from Settings
+ $menuTemplateId = Setting::get('menu_template_id');
+
+ if ($menuTemplateId) {
+ $menuTemplate = MenuTemplate::where('is_active', true)->find($menuTemplateId);
- // Replace {menu} placeholder with rendered menu structure
- $renderedMenu = self::buildMenuStructure($menuItems);
- $html = str_replace('{menu}', $renderedMenu, $html);
-
- return $html;
+ if ($menuTemplate && !empty($menuTemplate->html_content)) {
+ $html = $menuTemplate->html_content;
+
+ // Replace {menu} placeholder with rendered menu structure
+ $renderedMenu = self::buildMenuStructure($menuItems);
+ $html = str_replace('{menu}', $renderedMenu, $html);
+
+ return $html;
+ }
}
// Otherwise, return default menu structure
diff --git a/docs/DYNAMIC_TEMPLATE_SYSTEM.md b/docs/DYNAMIC_TEMPLATE_SYSTEM.md
index 2c292c0..dc15200 100644
--- a/docs/DYNAMIC_TEMPLATE_SYSTEM.md
+++ b/docs/DYNAMIC_TEMPLATE_SYSTEM.md
@@ -791,17 +791,103 @@ protected $casts = [
feature/dynamic-template-system
```
+## Menü Template Sistemi
+
+### Kurulum
+
+Menü template sistemi global bir ayardır. Admin panelden oluşturduğunuz menü template'ini Settings'e manuel olarak eklemeniz gerekir:
+
+#### 1. Admin Panelde Menü Template Oluştur
+```
+Admin Panel → Menü Şablonları → Yeni Menü Şablonu
+```
+
+**Örnek Menü Template:**
+```html
+
+```
+
+#### 2. Settings'e Menü Template ID Ekle
+Admin panelden yeni bir Setting oluşturun:
+- **Key:** `menu_template_id`
+- **Type:** `integer`
+- **Value:** Menü template ID'niz (örn: 1, 2, 3)
+- **Group:** `general`
+
+#### 3. Kullanım
+
+Menü otomatik olarak render edilir. Header template'inde `{menu}` placeholder'ı kullanabilirsiniz:
+
+**Header Template Örneği:**
+```html
+
+```
+
+**Çıktı:**
+```html
+
+```
+
+### Menü Rendering
+
+Menü otomatik olarak Pages tablosundan alınır:
+- Sadece `status = 'published'` olanlar
+- Sadece `show_in_menu = true` olanlar
+- Hierarchical yapı korunur (parent_id ile)
+- `sort_order` ile sıralanır
+
+### Cache
+
+Menü öğeleri 1 saat süreyle cache'lenir. Cache'i temizlemek için:
+
+```php
+use App\Services\MenuService;
+
+MenuService::clearCache();
+```
+
## İmplement Adımları
1. ✅ Migrations oluştur (4 adet)
-2. ✅ Model'ler oluştur (3 adet)
-3. ✅ Filament Resources oluştur (3 adet)
+2. ✅ Model'ler oluştur (4 adet)
+3. ✅ Filament Resources oluştur (4 adet)
4. ✅ TemplateService helper oluştur
5. ✅ PageForm'u güncelle (template tabs ekle)
6. ✅ PageRenderer component oluştur
-7. ✅ Lang dosyaları oluştur (6 adet)
+7. ✅ Lang dosyaları oluştur (8 adet)
8. ✅ Frontend route ve controller güncelle
-9. ✅ Test
+9. ✅ Menü Service eklendi
+10. ✅ Test
---