Markenlogos einbinden: Seitenkopf und alle Kacheln
Zulieferung dev/2026-08-28/markenlogos/ (CABINET und Rotpunkt als SVG, Februe als PNG). Die Dateien liegen unter public/img/assets/marken/ und haengen als `logo` an der jeweiligen Marke. - Kopf der Markenseite: Logo anstelle des Schriftzugs, im <h1>, damit die Ueberschrift erhalten bleibt – den Text liefert das alt-Attribut. Ohne Logo erscheint weiterhin der Schriftzug. - Logo zusaetzlich auf der Startseiten-Kachel, im Block auf /marken und in den „Weitere Marken“-Kacheln am Seitenfuss. - Feste Box (Hoehe + Maximalbreite + object-contain) statt fester Hoehe: die Seitenverhaeltnisse gehen weit auseinander (Februe 2,3:1, Rotpunkt 1,2:1), mit reiner Hoehenangabe waere Februe doppelt so breit erschienen. Konvention aus der Sponsoring-Sektion. - Februe-Logo auf seinen Inhalt beschnitten: im Original waren knapp drei Viertel der Flaeche leerer Rand, in einer Box haette es winzig gewirkt. 53 KB → 15 KB. - BrandLogoSeeder traegt die Logos auf bestehenden Installationen nach – CmsBrandSeeder ueberspringt vorhandene Marken. Setzt nur `logo` und nur bei leerem Feld, ein im Admin hochgeladenes Logo bleibt stehen. Tests: 871 gruen (3215 Assertions), Pint sauber, alle Themes gebaut. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
093e0ece51
commit
c8899e2d7d
12 changed files with 282 additions and 13 deletions
59
database/seeders/BrandLogoSeeder.php
Normal file
59
database/seeders/BrandLogoSeeder.php
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\CmsBrand;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
/**
|
||||
* Traegt die Markenlogos nach.
|
||||
*
|
||||
* Grundlage: dev/2026-08-28/markenlogos/ (Zulieferung vom 03.09.2026). Die Dateien liegen unter
|
||||
* public/img/assets/marken/; das Februe-Logo ist dabei auf seinen Inhalt beschnitten – im
|
||||
* Original war knapp drei Viertel der Flaeche leerer Rand, wodurch es neben den beiden SVGs
|
||||
* winzig gewirkt haette.
|
||||
*
|
||||
* {@see CmsBrandSeeder} bringt dieselben Werte fuer frische Installationen mit, ueberspringt
|
||||
* aber bereits angelegte Marken. Dieser Seeder fasst nur das Feld `logo` an und auch nur dann,
|
||||
* wenn es leer ist – ein selbst hochgeladenes Logo bleibt also stehen. Mehrfaches Ausfuehren
|
||||
* ist unbedenklich.
|
||||
*
|
||||
* php artisan db:seed --class=BrandLogoSeeder
|
||||
*/
|
||||
class BrandLogoSeeder extends Seeder
|
||||
{
|
||||
/** @var array<string, string> */
|
||||
private const LOGOS = [
|
||||
'cabinet' => 'marken/cabinet.svg',
|
||||
'rotpunkt' => 'marken/rotpunkt.svg',
|
||||
'februe' => 'marken/februe.png',
|
||||
];
|
||||
|
||||
public function run(): void
|
||||
{
|
||||
$set = 0;
|
||||
$kept = 0;
|
||||
|
||||
foreach (self::LOGOS as $slug => $logo) {
|
||||
$brand = CmsBrand::query()->where('slug', $slug)->first();
|
||||
|
||||
if (! $brand) {
|
||||
$this->command?->warn("Marke „{$slug}“ nicht gefunden – uebersprungen.");
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (trim((string) $brand->logo) !== '') {
|
||||
$kept++;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$brand->logo = $logo;
|
||||
$brand->save();
|
||||
$set++;
|
||||
}
|
||||
|
||||
$this->command?->info("Markenlogos gesetzt: {$set}, vorhandene behalten: {$kept}.");
|
||||
}
|
||||
}
|
||||
|
|
@ -8,9 +8,11 @@ use Illuminate\Database\Seeder;
|
|||
/**
|
||||
* Legt die drei Kernmarken an. Texte aus dev/2026-08-28/umsetzung-inhalte.md §5.
|
||||
*
|
||||
* Bestehende Marken werden nicht überschrieben – Marcel pflegt sie im Admin.
|
||||
* Logos, Stimmungsbilder und Galerien fehlen als Zulieferung und bleiben leer;
|
||||
* die Kacheln und Detailseiten zeigen so lange einen Platzhalter.
|
||||
* Bestehende Marken werden nicht überschrieben – Marcel pflegt sie im Admin. Für bereits
|
||||
* angelegte Marken setzt {@see BrandLogoSeeder} die Logos nach.
|
||||
*
|
||||
* Stimmungsbilder und Galerien fehlen als Zulieferung und bleiben leer; die Kacheln und
|
||||
* Detailseiten zeigen so lange einen Platzhalter.
|
||||
*/
|
||||
class CmsBrandSeeder extends Seeder
|
||||
{
|
||||
|
|
@ -38,6 +40,7 @@ class CmsBrandSeeder extends Seeder
|
|||
return [
|
||||
[
|
||||
'slug' => 'cabinet',
|
||||
'logo' => 'marken/cabinet.svg',
|
||||
'name' => ['de' => 'CABINET', 'en' => 'CABINET'],
|
||||
'tagline' => ['de' => 'Einbauschränke nach Maß.', 'en' => 'Fitted wardrobes made to measure.'],
|
||||
'teaser' => [
|
||||
|
|
@ -72,6 +75,7 @@ Experience the possibilities in our Bielefeld showroom.',
|
|||
],
|
||||
[
|
||||
'slug' => 'rotpunkt',
|
||||
'logo' => 'marken/rotpunkt.svg',
|
||||
'name' => ['de' => 'Rotpunkt Küchen', 'en' => 'Rotpunkt Küchen'],
|
||||
'tagline' => ['de' => 'Küchen, die Haltung zeigen.', 'en' => 'Kitchens with character.'],
|
||||
'teaser' => [
|
||||
|
|
@ -106,6 +110,7 @@ Consultation and planning in our kitchen studio.',
|
|||
],
|
||||
[
|
||||
'slug' => 'februe',
|
||||
'logo' => 'marken/februe.png',
|
||||
'name' => ['de' => 'Febrü', 'en' => 'Febrü'],
|
||||
'tagline' => ['de' => 'Arbeiten, wo man gerne bleibt.', 'en' => 'Work where you like to stay.'],
|
||||
'teaser' => [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue