Add show_in_nav option for categories in top menu
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 6s
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 6s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -32,6 +32,7 @@ class CategoryController extends Controller
|
|||||||
]);
|
]);
|
||||||
$data['slug'] = Str::slug($data['name']);
|
$data['slug'] = Str::slug($data['name']);
|
||||||
$data['active'] = $request->boolean('active');
|
$data['active'] = $request->boolean('active');
|
||||||
|
$data['show_in_nav'] = $request->boolean('show_in_nav');
|
||||||
|
|
||||||
if ($request->hasFile('image')) {
|
if ($request->hasFile('image')) {
|
||||||
$data['image'] = $request->file('image')->store('categories', 'public');
|
$data['image'] = $request->file('image')->store('categories', 'public');
|
||||||
@@ -58,6 +59,7 @@ class CategoryController extends Controller
|
|||||||
]);
|
]);
|
||||||
$data['slug'] = Str::slug($data['name']);
|
$data['slug'] = Str::slug($data['name']);
|
||||||
$data['active'] = $request->boolean('active');
|
$data['active'] = $request->boolean('active');
|
||||||
|
$data['show_in_nav'] = $request->boolean('show_in_nav');
|
||||||
|
|
||||||
if ($request->hasFile('image')) {
|
if ($request->hasFile('image')) {
|
||||||
$data['image'] = $request->file('image')->store('categories', 'public');
|
$data['image'] = $request->file('image')->store('categories', 'public');
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|||||||
|
|
||||||
class Category extends Model
|
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
|
public function parent(): BelongsTo
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('categories', function (Blueprint $table) {
|
||||||
|
$table->boolean('show_in_nav')->default(false)->after('active');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('categories', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('show_in_nav');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -43,6 +43,10 @@
|
|||||||
<input type="checkbox" name="active" id="active" value="1" {{ old('active', $category->active ?? true) ? 'checked' : '' }}>
|
<input type="checkbox" name="active" id="active" value="1" {{ old('active', $category->active ?? true) ? 'checked' : '' }}>
|
||||||
<label for="active" class="text-sm">Aktiv</label>
|
<label for="active" class="text-sm">Aktiv</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex items-end gap-2 pb-2">
|
||||||
|
<input type="checkbox" name="show_in_nav" id="show_in_nav" value="1" {{ old('show_in_nav', $category->show_in_nav ?? false) ? 'checked' : '' }}>
|
||||||
|
<label for="show_in_nav" class="text-sm">Im Top-Menü anzeigen</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex gap-3 pt-2">
|
<div class="flex gap-3 pt-2">
|
||||||
|
|||||||
@@ -33,6 +33,11 @@
|
|||||||
->orderBy('nav_sort')
|
->orderBy('nav_sort')
|
||||||
->orderBy('title')
|
->orderBy('title')
|
||||||
->get();
|
->get();
|
||||||
|
$navCategories = \App\Models\Category::whereNull('parent_id')
|
||||||
|
->where('active', true)
|
||||||
|
->where('show_in_nav', true)
|
||||||
|
->orderBy('sort_order')
|
||||||
|
->get();
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
{{-- Header: Logo-Leiste --}}
|
{{-- 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">
|
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
|
Alle Produkte
|
||||||
</a>
|
</a>
|
||||||
|
@foreach($navCategories as $navCat)
|
||||||
|
<a href="{{ route('shop.category', $navCat->slug) }}"
|
||||||
|
class="px-3 py-2 rounded-lg text-sm font-medium text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition
|
||||||
|
{{ request()->route('slug') === $navCat->slug ? 'bg-blue-50 text-blue-700' : '' }}">
|
||||||
|
{{ $navCat->name }}
|
||||||
|
</a>
|
||||||
|
@endforeach
|
||||||
@foreach($navPages as $navPage)
|
@foreach($navPages as $navPage)
|
||||||
<a href="{{ route('page', $navPage->slug) }}"
|
<a href="{{ route('page', $navPage->slug) }}"
|
||||||
class="px-3 py-2 rounded-lg text-sm font-medium text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition
|
class="px-3 py-2 rounded-lg text-sm font-medium text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition
|
||||||
|
|||||||
Reference in New Issue
Block a user