File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/views/catalog/search.php
Back
<div class="row g-4"> <!-- Desktop Left Sidebar: Filters --> <div class="col-lg-3 d-none d-lg-block"> <div class="cargoo-card p-3 position-sticky" style="top: 80px;"> <div class="d-flex align-items-center justify-content-between pb-3 mb-3 border-bottom"> <h6 class="fw-bold mb-0 text-dark"> <i class="bi bi-funnel me-1 text-primary"></i> <?= __('filter_btn') ?> </h6> <a href="<?= url('/search') ?>" class="text-muted small text-decoration-none"> <?= __('clear_filter') ?> </a> </div> <form action="<?= url('/search') ?>" method="GET"> <?php if (!empty($filters['q'])): ?> <input type="hidden" name="q" value="<?= e($filters['q']) ?>"> <?php endif; ?> <!-- Categories List --> <?php if (!empty($categories)): ?> <div class="mb-4"> <label class="form-label small fw-bold text-uppercase text-muted"><?= __('filter_by_category') ?></label> <div class="d-flex flex-column gap-1" style="max-height: 220px; overflow-y: auto;"> <a href="<?= url('/search' . (!empty($filters['q']) ? '?q=' . urlencode($filters['q']) : '')) ?>" class="text-decoration-none small py-1 px-2 rounded <?= empty($filters['category_id']) && empty($filters['category_slug']) ? 'bg-primary-subtle text-primary fw-bold' : 'text-dark' ?>"> <?= __('all_categories') ?> </a> <?php foreach ($categories as $cat): ?> <?php $isSelected = (!empty($filters['category_id']) && (int)$filters['category_id'] === (int)$cat['id']) || (!empty($filters['category_slug']) && $filters['category_slug'] === $cat['slug']); ?> <a href="<?= url('/category/' . $cat['slug'] . (!empty($filters['q']) ? '?q=' . urlencode($filters['q']) : '')) ?>" class="text-decoration-none small py-1 px-2 rounded d-flex justify-content-between align-items-center <?= $isSelected ? 'bg-primary-subtle text-primary fw-bold' : 'text-dark' ?>"> <span class="text-truncate"><?= e($cat['name']) ?></span> <span class="badge bg-light text-muted border"><?= (int)$cat['product_count'] ?></span> </a> <?php endforeach; ?> </div> </div> <?php endif; ?> <!-- Price Range Filter --> <div class="mb-4"> <label class="form-label small fw-bold text-uppercase text-muted"><?= __('filter_by_price') ?> (฿)</label> <div class="row g-2 mb-2"> <div class="col-6"> <input type="number" name="min_price" class="form-control form-control-sm" placeholder="ต่ำสุด" value="<?= e($filters['min_price'] ?? '') ?>" min="0"> </div> <div class="col-6"> <input type="number" name="max_price" class="form-control form-control-sm" placeholder="สูงสุด" value="<?= e($filters['max_price'] ?? '') ?>" min="0"> </div> </div> </div> <!-- In Stock Only Checkbox --> <div class="mb-4"> <div class="form-check"> <input class="form-check-input" type="checkbox" name="in_stock" id="inStockCb" value="1" <?= !empty($filters['in_stock_only']) ? 'checked' : '' ?>> <label class="form-check-label small" for="inStockCb"> <?= __('in_stock_only') ?> </label> </div> </div> <button type="submit" class="btn btn-cargoo-primary btn-sm w-100 py-2"> <i class="bi bi-funnel me-1"></i> <?= __('filter_btn') ?> </button> </form> </div> </div> <!-- Mobile Offcanvas Filter Drawer --> <div class="offcanvas offcanvas-start" tabindex="-1" id="filterOffcanvas" aria-labelledby="filterOffcanvasLabel"> <div class="offcanvas-header border-bottom"> <h5 class="offcanvas-title fw-bold" id="filterOffcanvasLabel"> <i class="bi bi-funnel me-1 text-primary"></i> <?= __('filter_btn') ?> </h5> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <form action="<?= url('/search') ?>" method="GET"> <?php if (!empty($filters['q'])): ?> <input type="hidden" name="q" value="<?= e($filters['q']) ?>"> <?php endif; ?> <!-- Categories List --> <?php if (!empty($categories)): ?> <div class="mb-4"> <label class="form-label small fw-bold text-uppercase text-muted"><?= __('filter_by_category') ?></label> <div class="d-flex flex-column gap-1"> <a href="<?= url('/search' . (!empty($filters['q']) ? '?q=' . urlencode($filters['q']) : '')) ?>" class="text-decoration-none small py-2 px-2 rounded <?= empty($filters['category_id']) && empty($filters['category_slug']) ? 'bg-primary-subtle text-primary fw-bold' : 'text-dark' ?>"> <?= __('all_categories') ?> </a> <?php foreach ($categories as $cat): ?> <?php $isSelected = (!empty($filters['category_id']) && (int)$filters['category_id'] === (int)$cat['id']) || (!empty($filters['category_slug']) && $filters['category_slug'] === $cat['slug']); ?> <a href="<?= url('/category/' . $cat['slug'] . (!empty($filters['q']) ? '?q=' . urlencode($filters['q']) : '')) ?>" class="text-decoration-none small py-2 px-2 rounded d-flex justify-content-between align-items-center <?= $isSelected ? 'bg-primary-subtle text-primary fw-bold' : 'text-dark' ?>"> <span class="text-truncate"><?= e($cat['name']) ?></span> <span class="badge bg-light text-muted border"><?= (int)$cat['product_count'] ?></span> </a> <?php endforeach; ?> </div> </div> <?php endif; ?> <!-- Price Range Filter --> <div class="mb-4"> <label class="form-label small fw-bold text-uppercase text-muted"><?= __('filter_by_price') ?> (฿)</label> <div class="row g-2 mb-2"> <div class="col-6"> <input type="number" name="min_price" class="form-control form-control-sm" placeholder="ต่ำสุด" value="<?= e($filters['min_price'] ?? '') ?>" min="0"> </div> <div class="col-6"> <input type="number" name="max_price" class="form-control form-control-sm" placeholder="สูงสุด" value="<?= e($filters['max_price'] ?? '') ?>" min="0"> </div> </div> </div> <!-- In Stock Only Checkbox --> <div class="mb-4"> <div class="form-check"> <input class="form-check-input" type="checkbox" name="in_stock" id="inStockMobile" value="1" <?= !empty($filters['in_stock_only']) ? 'checked' : '' ?>> <label class="form-check-label small" for="inStockMobile"> <?= __('in_stock_only') ?> </label> </div> </div> <button type="submit" class="btn btn-cargoo-primary btn-sm w-100 py-2"> <i class="bi bi-funnel me-1"></i> นำตัวกรองไปใช้ </button> </form> </div> </div> <!-- Right Main Area: Product Grid --> <div class="col-lg-9"> <!-- Top Header Bar (Result count, Mobile filter button & Sorting) --> <div class="cargoo-card p-3 mb-3 d-flex flex-column flex-sm-row justify-content-between align-items-sm-center gap-3"> <div class="d-flex align-items-center justify-content-between w-100 w-sm-auto"> <div> <h5 class="fw-bold mb-0 text-dark"> <?php if (!empty($filters['q'])): ?> <?= __('search_results_for') ?> "<span class="text-primary"><?= e($filters['q']) ?></span>" <?php else: ?> <?= __('search_products') ?> <?php endif; ?> </h5> <small class="text-muted">พบสินค้าทั้งหมด <?= number_format($total_count) ?> รายการ</small> </div> <!-- Mobile Filter Button Trigger --> <button type="button" class="btn btn-outline-primary btn-sm d-lg-none" data-bs-toggle="offcanvas" data-bs-target="#filterOffcanvas" aria-controls="filterOffcanvas"> <i class="bi bi-funnel me-1"></i> ตัวกรอง </button> </div> <!-- Sorting Selector --> <form action="<?= url('/search') ?>" method="GET" class="d-flex align-items-center gap-2 m-0" id="sortForm"> <?php foreach ($filters as $k => $v): ?> <?php if ($k !== 'sort' && !empty($v)): ?> <input type="hidden" name="<?= e($k) ?>" value="<?= e($v) ?>"> <?php endif; ?> <?php endforeach; ?> <label class="small text-muted text-nowrap" for="sortSelect"><?= __('sort_by') ?>:</label> <select name="sort" id="sortSelect" class="form-select form-select-sm" style="min-width: 170px;" onchange="document.getElementById('sortForm').submit();"> <option value="latest" <?= ($filters['sort'] ?? '') === 'latest' ? 'selected' : '' ?>><?= __('sort_latest') ?></option> <option value="popular" <?= ($filters['sort'] ?? '') === 'popular' ? 'selected' : '' ?>><?= __('sort_popular') ?></option> <option value="price_asc" <?= ($filters['sort'] ?? '') === 'price_asc' ? 'selected' : '' ?>><?= __('sort_price_asc') ?></option> <option value="price_desc" <?= ($filters['sort'] ?? '') === 'price_desc' ? 'selected' : '' ?>><?= __('sort_price_desc') ?></option> </select> </form> </div> <!-- Product Grid reusing unified product_card.php --> <?php if (empty($products)): ?> <div class="cargoo-card p-5 text-center my-4"> <i class="bi bi-search text-muted fs-1 mb-3"></i> <h5 class="fw-bold text-dark"><?= __('no_products_found') ?></h5> <p class="text-muted small mb-3">ลองปรับเปลี่ยนคำค้นหา หรือล้างตัวกรองเพื่อค้นหาสินค้าใหม่</p> <a href="<?= url('/search') ?>" class="btn btn-cargoo-outline btn-sm px-4"> <?= __('clear_filter') ?> </a> </div> <?php else: ?> <div class="row row-cols-2 row-cols-sm-3 row-cols-md-3 row-cols-lg-4 g-3 mb-4"> <?php foreach ($products as $p): ?> <?php $product = $p; require __DIR__ . '/../components/product_card.php'; ?> <?php endforeach; ?> </div> <!-- Pagination --> <?php if ($total_pages > 1): ?> <nav aria-label="Catalog pagination" class="d-flex justify-content-center my-4"> <ul class="pagination pagination-sm"> <?php for ($i = 1; $i <= $total_pages; $i++): ?> <?php $queryParams = array_merge($filters, ['page' => $i]); $pageUrl = url('/search?' . http_build_query($queryParams)); ?> <li class="page-item <?= $i === $current_page ? 'active' : '' ?>"> <a class="page-link" href="<?= $pageUrl ?>"><?= $i ?></a> </li> <?php endfor; ?> </ul> </nav> <?php endif; ?> <?php endif; ?> </div> </div>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings