query("SELECT `key`, value FROM settings WHERE `key` IN ('active_theme', 'site_logo', 'site_title')"); while ($row =$stmtSettings->fetch(PDO::FETCH_ASSOC)) { if ($row['key'] === 'active_theme' && !empty($row['value'])) { $active_theme = trim($row['value']); } elseif ($row['key'] === 'site_logo') { $site_logo =$row['value']; } elseif ($row['key'] === 'site_title' && !empty($row['value'])) { $site_title = trim($row['value']); } } } 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, ]); $twig->addGlobal('session',$_SESSION); $twig->addGlobal('current_lang',$current_lang); $twig->addGlobal('site_logo',$site_logo); // --- Φόρτωση Δυναμικών Κειμένων Site --- $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); // 1. Παίρνουμε τον όρο αναζήτησης $search_query = isset($_GET['q']) ? trim($_GET['q']) : ''; try { // 2. Φόρτωση κατηγοριών για το sidebar $categories = []; try { $categoriesRaw =$pdo->query("SELECT id, parent_id, name_el, name_en, sort_order FROM categories ORDER BY sort_order ASC, name_el ASC")->fetchAll(PDO::FETCH_ASSOC); foreach ($categoriesRaw as $cat) {$cat['display_name'] = ($current_lang === 'en' && !empty($cat['name_en'])) ? $cat['name_en'] :$cat['name_el']; $categories[] =$cat; } } catch (Exception $e) {} $products = []; if (!empty($search_query)) { $words = preg_split('/\s+/', mb_strtolower($search_query, 'UTF-8')); $words = array_filter($words, function($w) { return mb_strlen(trim($w)) > 0; }); if (!empty($words)) { $whereClauses = [];$params = []; foreach ($words as $word) {$like = '%' . $word . '\%';$whereClauses[] = "(LOWER(p.title) LIKE ? OR LOWER(p.description) LIKE ? OR LOWER(p.search_tags) LIKE ?)"; array_push($params,$like, $like,$like); } $searchCondition = "(" . implode(" OR ", $whereClauses) . ")"; $sql = " 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.status = 'available' AND " . $searchCondition . " ORDER BY p.id DESC "; // --- DEBUG SECTION --- echo "
"; echo "DEBUG INFO:
"; echo "Search Query: " . htmlspecialchars($search_query) . "
"; echo "SQL: " . htmlspecialchars($sql) . "
"; echo "Params: "; print_r($params); echo "
"; // --------------------- $stmt = $pdo->prepare($sql); $stmt->execute($params); $products =$stmt->fetchAll(PDO::FETCH_ASSOC); echo "
"; echo "Products Found Count: " . count($products) . "
"; echo "
"; } } // 4. Αποστολή δεδομένων στο Twig echo $twig->render('index.html.twig', [ 'site_title' => $site_title, 'categories' => $categories, 'products' => $products, 'search_query' => $search_query ]); } catch (Exception $e) { die("Σφάλμα αναζήτησης: " . $e->getMessage()); }