query("SELECT value FROM settings WHERE `key` = 'active_theme'"); $res =$stmt->fetchColumn(); if ($res) { $active_theme =$res; } } catch (Exception $e) {} $theme_dir = __DIR__ . '/themes/' .$active_theme; if (!is_dir($theme_dir)) { $active_theme = 'default';$theme_dir = __DIR__ . '/themes/default'; } $loader = new \Twig\Loader\FilesystemLoader($theme_dir); $twig = new \Twig\Environment($loader, [ 'cache' => false, ]); // 1. Παίρνουμε το ID της κατηγορίας από το URL (π.χ. category.php?id=2) $cat_id = isset($_GET['id']) ? (int)$_GET['id'] : 0; if ($cat_id === 0) { header("Location: index.php"); exit; } try { // 2. Φέρνουμε τα στοιχεία της συγκεκριμένης κατηγορίας $catStmt =$pdo->prepare("SELECT * FROM categories WHERE id = ?"); $catStmt->execute([$cat_id]); $current_category =$catStmt->fetch(); if (!$current_category) { die("Η κατηγορία δεν βρέθηκε."); } // 3. Φέρνουμε όλες τις κατηγορίες για το μενού του header $categories =$pdo->query("SELECT * FROM categories ORDER BY name")->fetchAll(); // 4. Φέρνουμε ΜΟΝΟ τα προϊόντα που ανήκουν σε αυτή την κατηγορία $stmt =$pdo->prepare(" SELECT p.id, p.title, p.price, p.created_at, pi.image_path FROM products p LEFT JOIN product_images pi ON (p.id = pi.product_id AND pi.is_primary = 1) WHERE p.category_id = ? AND p.status = 'available' ORDER BY p.id DESC "); $stmt->execute([$cat_id]); $products =$stmt->fetchAll(); // 5. Render μέσω Twig (μπορούμε να ξαναχρησιμοποιήσουμε το index.html.twig ή να φτιάξουμε ξεχωριστό category.html.twig) // Εδώ περνάμε και το όνομα της τρέχουσας κατηγορίας για τίτλο echo $twig->render('index.html.twig', [ 'site_title' => 'Hockey Gear CMS', 'categories' => $categories, 'products' => $products, 'current_category' => $current_category ]); } catch (Exception $e) { die("Σφάλμα συστήματος: " . $e->getMessage()); }