*/ public const MAP_POSITIONS = [ 'rotpunkt' => ['x' => 330, 'y' => 55, 'label' => 'left'], 'februe' => ['x' => 480, 'y' => 90, 'label' => 'right'], 'tischlerei' => ['x' => 295, 'y' => 285, 'label' => 'left'], 'cabinet' => ['x' => 80, 'y' => 345, 'label' => 'right'], ]; /** @var array */ public array $content = []; public string $bg = ''; public function mount(string $bg = ''): void { $section = cms_theme_section('origin_section'); $this->content = is_array($section) ? $section : []; $this->bg = $bg; } /** * Veröffentlichte Marken mit gepflegtem Fertigungsort, in der Reihenfolge der Marken. * * Eine unveröffentlichte Marke fällt heraus, eine Marke ohne Ort ebenfalls. Der Link zur * Markenseite hängt daran, ob die Marke eine Detailseite hat (Lang-Fallback: keine). * * @return list */ public function getLocationsProperty(): array { $out = []; foreach (CmsBrand::forFrontend() as $slug => $brand) { $city = trim((string) ($brand['origin_city'] ?? '')); $name = trim((string) ($brand['name'] ?? '')); if ($city === '' || $name === '') { continue; } $out[] = [ 'slug' => (string) $slug, 'city' => $city, 'brand' => $name, 'role' => trim((string) ($brand['origin_role'] ?? '')), 'distance' => trim((string) ($brand['origin_distance'] ?? '')), 'link' => ! empty($brand['has_detail_page']) ? '/marken/'.$slug : null, 'map' => self::MAP_POSITIONS[$slug] ?? null, ]; } return $out; } public function render() { return view('livewire.web.components.sections.origin-section'); } }