[ 'home' => 'Home', 'latest' => 'Latest', 'basics' => 'Basics', 'eyebrow' => 'Seasonal, unfussy, ridiculously tasty.', 'headline' => 'Cook better weeknights and brighter weekends.', 'subhead' => 'Search for a craving, filter by vibe, or jump into this week\'s featured recipe.', 'search_placeholder' => 'Search for pasta, brunch, sauce...', 'search_button' => 'Search', 'tag_clear' => 'Clear', 'featured' => 'Featured', 'latest_drops' => 'Latest drops', 'count_suffix_default' => ' recipes ready to cook.', 'count_suffix_filtered' => ' recipes matching your filter.', 'kitchen_basics' => 'Kitchen basics', 'basics_sub' => 'Quick wins that upgrade everything else.', 'servings' => 'servings', 'cook_it' => 'Cook it', 'coming_features' => 'Coming soon', 'coming_features_sub' => 'Features I’m shipping next.', ], 'de' => [ 'home' => 'Start', 'latest' => 'Neueste', 'basics' => 'Basics', 'eyebrow' => 'Saisonal, unkompliziert, richtig lecker.', 'headline' => 'Besser kochen unter der Woche, glänzen am Wochenende.', 'subhead' => 'Suche nach einem Gericht, filtere nach Stimmung oder starte mit dem Highlight der Woche.', 'search_placeholder' => 'Suche nach Pasta, Brunch, Sauce...', 'search_button' => 'Suchen', 'tag_clear' => 'Zurücksetzen', 'featured' => 'Highlight', 'latest_drops' => 'Frisch dazugekommen', 'count_suffix_default' => ' Rezepte bereit zum Kochen.', 'count_suffix_filtered' => ' Rezepte passend zum Filter.', 'kitchen_basics' => 'Küchenbasics', 'basics_sub' => 'Kleine Tricks, die alles besser machen.', 'servings' => 'Portionen', 'cook_it' => 'Nachkochen', 'coming_features' => 'Demnächst', 'coming_features_sub' => 'Features, an denen ich gerade baue.', ], ]; $t = $copy[$lang]; $allRecipes = load_recipes(); $siteSettings = load_site_settings(); $cms = $siteSettings['cms'][$lang] ?? []; $localizedAll = localize_recipes($allRecipes, $lang); $recipes = filter_recipes($allRecipes, $q ?: null, $tag ?: null, $lang); $recipes = array_values(array_filter($recipes, fn($r) => empty($r['coming_soon']))); // hide coming soon from main list $comingSoon = array_values(array_filter($localizedAll, fn($r) => !empty($r['coming_soon']))); $placeholderTitle = $lang === 'de' ? 'Bald verfügbar' : 'Coming soon'; $comingSoonDisplay = array_pad($comingSoon, 5, [ 'hero' => '/assets/placeholder.svg', 'title' => $placeholderTitle, ]); $featured = null; foreach ($allRecipes as $recipe) { if (!empty($recipe['featured']) && empty($recipe['coming_soon'])) { $featured = $recipe; break; } } $featured = $featured ?? ($allRecipes[0] ?? null); $featured = $featured ? localize_recipe($featured, $lang) : null; // Build tag cloud $allTags = []; foreach ($localizedAll as $recipe) { foreach ($recipe['tags'] ?? [] as $tTag) { $allTags[] = $tTag; } } $allTags = array_values(array_unique($allTags)); $comingFeatures = array_values(array_filter([ trim((string) ($cms['coming_feature_1'] ?? '')), trim((string) ($cms['coming_feature_2'] ?? '')), trim((string) ($cms['coming_feature_3'] ?? '')), ], 'strlen')); $pageTitle = trim((string) ($cms['home_title'] ?? '')) ?: ($lang === 'de' ? 'FlixCooks | Moderner Foodblog für schnelle Alltagsküche' : 'FlixCooks | Modern food blog for busy home cooks'); $description = trim((string) ($cms['home_description'] ?? '')) ?: ($lang === 'de' ? 'Frische, schnelle Rezepte mit klaren Schritten und großem Geschmack. Gebaut für Hetzner Webhosting in einfachem PHP.' : 'Fresh, fast recipes with clear steps, smart prep notes, and big flavor. Built for Hetzner web hosting in plain PHP.'); $langSwitchLabel = $lang === 'de' ? 'DE' : 'EN'; $langSwitchHref = lang_url($lang === 'de' ? 'en' : 'de'); $navHome = $t['home']; $navLatest = $t['latest']; $navBasics = $t['basics']; $quickStartRecipes = array_slice($recipes, 0, 3); $latestRecipes = array_slice($recipes, 0, 6); $recipeCount = count($recipes); $totalMinutes = array_sum(array_map(fn($recipe) => (int) ($recipe['total_time'] ?? 0), $recipes)); $averageMinutes = $recipeCount > 0 ? (int) ceil($totalMinutes / $recipeCount) : 0; $activeTag = $tag !== '' ? $tag : null; $tagCount = count($allTags); $copy['en'] += [ 'discover_title' => 'Find your next easy favorite.', 'discover_text' => 'Everything below the landing area is simplified for smaller screens: search, tap a tag, and jump into a recipe without cramped text blocks.', 'browse_tags' => 'Browse tags', 'quick_start_title' => 'Quick start', 'quick_start_text' => 'Open one of the recipes with the shortest path from craving to plate.', 'library_title' => 'Recipe library', 'library_text' => 'Clean cards, shorter descriptions, and tap-friendly actions for mobile browsing.', 'stats_recipes' => 'live recipes', 'stats_average' => 'avg. total time', 'stats_tags' => 'browseable tags', 'empty_title' => 'No recipes found yet', 'empty_text' => 'Try another search term or clear the active tag to see every recipe again.', 'view_recipe' => 'View recipe', ]; $copy['de'] += [ 'discover_title' => 'Finde schnell dein nächstes Lieblingsrezept.', 'discover_text' => 'Alles unterhalb der Landingpage ist für kleine Screens vereinfacht: suchen, Tag antippen und ohne gequetschte Textblöcke ins Rezept springen.', 'browse_tags' => 'Tags entdecken', 'quick_start_title' => 'Schnell starten', 'quick_start_text' => 'Öffne eines der Rezepte mit dem kürzesten Weg von Appetit zu Teller.', 'library_title' => 'Rezeptübersicht', 'library_text' => 'Saubere Karten, kürzere Beschreibungen und gut tappbare Aktionen für Mobile.', 'stats_recipes' => 'Rezepte online', 'stats_average' => 'Ø Gesamtzeit', 'stats_tags' => 'durchsuchbare Tags', 'empty_title' => 'Noch keine Rezepte gefunden', 'empty_text' => 'Probiere einen anderen Suchbegriff oder entferne den aktiven Tag, um wieder alle Rezepte zu sehen.', 'view_recipe' => 'Rezept ansehen', ]; $t = $copy[$lang]; // Small helpers for URLs $langQuery = ['lang' => $lang]; $recipeUrl = fn(array $recipe) => '/recipe.php?' . http_build_query(['slug' => $recipe['slug']] + $langQuery); $tagUrl = fn(string $tagValue) => '/index.php?' . http_build_query(['tag' => $tagValue] + $langQuery); include __DIR__ . '/partials/head.php'; ?>

<?php echo e($cs['title'] ?? 'Coming soon'); ?>

#

<?php echo e($recipe['title']); ?>

🙂
#