Add coupons, newsletter, country-based shipping, sale prices, USP bar
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 8s

- Gutscheincodes: DB-Verwaltung (%, €-Rabatt, Mindestbestellwert, Ablauf),
  Eingabefeld im Checkout, Admin unter Marketing → Gutscheine
- Newsletter: Double-Opt-In per E-Mail, Formular im Footer,
  Admin-Liste mit CSV-Export
- Länderzonen-Versand: DE / DACH / EU / WORLD, Versandkosten nach
  Lieferland dynamisch berechnet, Coupon-Rabatt in Bestellung gespeichert
- Sale-Preise: sale_price auf Produkten, durchgestrichener UVP auf
  Produktkarte, Sonderangebote-Sektion auf Startseite
- USP-Leiste auf Startseite: Versand, Zahlung, Rückgabe, Service

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 11:07:14 +02:00
co-authored by Claude Sonnet 4.6
parent 5dad8b9324
commit 092dae6085
27 changed files with 782 additions and 51 deletions
+3
View File
@@ -27,6 +27,9 @@
<a href="{{ route('admin.pages.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.pages.*') ? 'bg-gray-700' : '' }}">Seiten</a>
<a href="{{ route('admin.banners.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.banners.*') ? 'bg-gray-700' : '' }}">Banner</a>
<a href="{{ route('admin.faqs.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.faqs.*') ? 'bg-gray-700' : '' }}">FAQ</a>
<div class="pt-2 pb-1 text-xs text-gray-400 uppercase tracking-wide">Marketing</div>
<a href="{{ route('admin.coupons.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.coupons.*') ? 'bg-gray-700' : '' }}">Gutscheine</a>
<a href="{{ route('admin.newsletter.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.newsletter.*') ? 'bg-gray-700' : '' }}">Newsletter</a>
<div class="pt-2 pb-1 text-xs text-gray-400 uppercase tracking-wide">System</div>
<a href="{{ route('admin.admins.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.admins.*') ? 'bg-gray-700' : '' }}">Admin-Benutzer</a>
<a href="{{ route('admin.email-templates.index') }}" class="block px-3 py-2 rounded hover:bg-gray-700 {{ request()->routeIs('admin.email-templates.*') ? 'bg-gray-700' : '' }}">E-Mail-Templates</a>
+21 -1
View File
@@ -196,7 +196,27 @@
$hasBlog = \App\Models\Page::where('type','blog')->where('published', true)->exists();
$hasFaq = \App\Models\Faq::exists();
@endphp
<footer class="bg-gray-900 text-gray-400 text-sm mt-12">
{{-- Newsletter --}}
<div class="bg-gray-800 text-white py-8">
<div class="max-w-6xl mx-auto px-4 flex flex-col sm:flex-row items-center gap-6">
<div class="shrink-0 text-center sm:text-left">
<p class="font-semibold text-lg">Newsletter abonnieren</p>
<p class="text-gray-400 text-sm">Angebote & Neuigkeiten direkt in Ihr Postfach.</p>
</div>
<form method="POST" action="{{ route('newsletter.subscribe') }}" class="flex gap-2 flex-1 max-w-md w-full">
@csrf
<input type="email" name="newsletter_email" placeholder="Ihre E-Mail-Adresse"
class="flex-1 rounded px-4 py-2 text-gray-800 text-sm border-0" required>
<button class="btn-primary px-4 py-2 rounded text-sm font-medium whitespace-nowrap">Anmelden</button>
</form>
@if(session('newsletter_success'))
<p class="text-green-400 text-sm">{{ session('newsletter_success') }}</p>
@elseif(session('newsletter_info'))
<p class="text-yellow-400 text-sm">{{ session('newsletter_info') }}</p>
@endif
</div>
</div>
<footer class="bg-gray-900 text-gray-400 text-sm">
<div class="max-w-6xl mx-auto px-4 py-8 grid grid-cols-2 md:grid-cols-4 gap-6">
<div>
@if($logo)