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());
}