diff --git a/app/Http/Controllers/Admin/CategoryController.php b/app/Http/Controllers/Admin/CategoryController.php index 757964c..d4a0d04 100644 --- a/app/Http/Controllers/Admin/CategoryController.php +++ b/app/Http/Controllers/Admin/CategoryController.php @@ -32,6 +32,7 @@ class CategoryController extends Controller ]); $data['slug'] = Str::slug($data['name']); $data['active'] = $request->boolean('active'); + $data['show_in_nav'] = $request->boolean('show_in_nav'); if ($request->hasFile('image')) { $data['image'] = $request->file('image')->store('categories', 'public'); @@ -58,6 +59,7 @@ class CategoryController extends Controller ]); $data['slug'] = Str::slug($data['name']); $data['active'] = $request->boolean('active'); + $data['show_in_nav'] = $request->boolean('show_in_nav'); if ($request->hasFile('image')) { $data['image'] = $request->file('image')->store('categories', 'public'); diff --git a/app/Models/Category.php b/app/Models/Category.php index e9647cf..552ab76 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; class Category extends Model { - protected $fillable = ['parent_id','name','slug','description','image','sort_order','active']; + protected $fillable = ['parent_id','name','slug','description','image','sort_order','active','show_in_nav']; - protected $casts = ['active' => 'boolean']; + protected $casts = ['active' => 'boolean', 'show_in_nav' => 'boolean']; public function parent(): BelongsTo { diff --git a/database/migrations/2024_01_01_000016_add_show_in_nav_to_categories.php b/database/migrations/2024_01_01_000016_add_show_in_nav_to_categories.php new file mode 100644 index 0000000..a05e0ef --- /dev/null +++ b/database/migrations/2024_01_01_000016_add_show_in_nav_to_categories.php @@ -0,0 +1,22 @@ +boolean('show_in_nav')->default(false)->after('active'); + }); + } + + public function down(): void + { + Schema::table('categories', function (Blueprint $table) { + $table->dropColumn('show_in_nav'); + }); + } +}; diff --git a/resources/views/admin/categories/form.blade.php b/resources/views/admin/categories/form.blade.php index 46b81fe..d67a2b2 100644 --- a/resources/views/admin/categories/form.blade.php +++ b/resources/views/admin/categories/form.blade.php @@ -43,6 +43,10 @@ active ?? true) ? 'checked' : '' }}> +
+ show_in_nav ?? false) ? 'checked' : '' }}> + +
diff --git a/resources/views/layouts/shop.blade.php b/resources/views/layouts/shop.blade.php index d8bf357..60d303a 100644 --- a/resources/views/layouts/shop.blade.php +++ b/resources/views/layouts/shop.blade.php @@ -33,6 +33,11 @@ ->orderBy('nav_sort') ->orderBy('title') ->get(); + $navCategories = \App\Models\Category::whereNull('parent_id') + ->where('active', true) + ->where('show_in_nav', true) + ->orderBy('sort_order') + ->get(); @endphp {{-- Header: Logo-Leiste --}} @@ -57,6 +62,13 @@ class="px-3 py-2 rounded-lg text-sm font-medium text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition"> Alle Produkte + @foreach($navCategories as $navCat) + + {{ $navCat->name }} + + @endforeach @foreach($navPages as $navPage)