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,
]);
// Περνάμε Session και Γλώσσα στο Twig (για το header)
$twig->addGlobal('session',$_SESSION);
$twig->addGlobal('current_lang',$current_lang);
// --- Φόρτωση Δυναμικών Κειμένων ανάλογα τη γλώσσα ---
$siteTexts = [];
try {
$text_column = ($current_lang === 'en') ? 'text_value_en' : 'text_value_el';
$textsStmt =$pdo->query("SELECT text_key, {$text_column} as text_value FROM site_texts");
while ($row = $textsStmt->fetch(PDO::FETCH_ASSOC)) {$siteTexts[$row['text_key']] =$row['text_value'];
}
} catch (Exception $e) {}
$twig->addGlobal('text',$siteTexts);
// --- Φόρτωση Logo Site ---
$site_logo = '';
try {
$logoStmt =$pdo->prepare("SELECT value FROM settings WHERE `key` = 'site_logo'");
$logoStmt->execute();
$site_logo =$logoStmt->fetchColumn();
} catch (Exception $e) {}
$twig->addGlobal('site_logo',$site_logo);
// 1. Παίρνουμε το ID του προϊόντος από το URL
$product_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if ($product_id === 0) {
die("Δεν επιλέχθηκε προϊόν.");
}
try {
// 2. Φέρνουμε τα στοιχεία του προϊόντος, την κατηγορία (Δίγλωσσα) και τον πωλητή
$stmt =$pdo->prepare("
SELECT p.*, c.name_el as cat_name_el, c.name_en as cat_name_en, u.username as seller_name, pi.image_path
FROM products p
LEFT JOIN categories c ON p.category_id = c.id
LEFT JOIN users u ON p.seller_id = u.id
LEFT JOIN product_images pi ON (p.id = pi.product_id AND pi.is_primary = 1)
WHERE p.id = ?
");
$stmt->execute([$product_id]);
$product =$stmt->fetch(PDO::FETCH_ASSOC);
if (!$product) {
die("Το προϊόν δεν βρέθηκε.");
}
// Ορισμός της σωστής γλώσσας για το όνομα της κατηγορίας του προϊόντος
$product['cat_name'] = ($current_lang === 'en' && !empty($product['cat_name_en'])) ? $product['cat_name_en'] :$product['cat_name_el'];
// 3. Φέρνουμε τα Δυναμικά Χαρακτηριστικά (Attributes) - Δίγλωσσα
$attrStmt =$pdo->prepare("
SELECT a.name as name_el, a.name_en, a.unit, pav.value
FROM product_attribute_values pav
JOIN attributes a ON pav.attribute_id = a.id
WHERE pav.product_id = ?
ORDER BY a.name
");
$attrStmt->execute([$product_id]);
$attributesRaw =$attrStmt->fetchAll(PDO::FETCH_ASSOC);
// Μεταφράζουμε τα χαρακτηριστικά δυναμικά
$attributes = [];
foreach ($attributesRaw as $attr) {$attr['name'] = ($current_lang === 'en' && !empty($attr['name_en'])) ? $attr['name_en'] :$attr['name_el'];
$attributes[] =$attr;
}
// 4. Φέρνουμε τις Κατηγορίες για το Sidebar μενού - Δίγλωσσα
$categoriesRaw =$pdo->query("SELECT * FROM categories ORDER BY sort_order ASC, name_el ASC")->fetchAll(PDO::FETCH_ASSOC);
$categories = [];
foreach ($categoriesRaw as $cat) {$cat['display_name'] = ($current_lang === 'en' && !empty($cat['name_en'])) ? $cat['name_en'] :$cat['name_el'];
$categories[] =$cat;
}
// 5. Render μέσω Twig του template
echo $twig->render('product.html.twig', [
'site_title' => 'Hockey Gear CMS',
'categories' => $categories,
'product' => $product,
'attributes' => $attributes
]);
} catch (Exception $e) {
die("Σφάλμα συστήματος: " . $e->getMessage());
}