| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- // Αρχείο: /var/www/html/hockey-cms/category.php
- require_once __DIR__ . '/vendor/autoload.php';
- require_once __DIR__ . '/config/database.php';
- // Δυναμική ανάγνωση ενεργού theme
- $active_theme = 'default';
- try {
- $stmt =$pdo->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());
- }
|