🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:product-card.php
<?php // Reusable Product Card if (!isset($product)) return; $discount = 0; if ($product['regular_price'] > 0 && $product['sale_price'] > 0 && $product['sale_price'] < $product['regular_price']) { $discount = round((($product['regular_price'] - $product['sale_price']) / $product['regular_price']) * 100); } $image_url = SITE_URL . 'assets/images/no-image.jpg'; if (!empty($product['thumbnail'])) { $candidate_url = UPLOADS_URL . 'products/' . $product['thumbnail']; $candidate_path = UPLOADS_PATH . 'products/' . $product['thumbnail']; if (file_exists($candidate_path)) { $image_url = $candidate_url; } else { // Try fallback to settings/ folder $alt_path = UPLOADS_PATH . 'settings/' . $product['thumbnail']; if (file_exists($alt_path)) { $image_url = UPLOADS_URL . 'settings/' . $product['thumbnail']; } } } $avg_rating = get_average_rating($product['id']); $rating = round($avg_rating['avg_rating'] ?? 0); $review_count = $avg_rating['total_reviews'] ?? 0; $is_in_wishlist = is_logged_in() ? in_wishlist($_SESSION['user_id'], $product['id']) : false; ?> <div class="product-card" data-aos="fade-up"> <div class="product-image-wrapper"> <a href="<?= SITE_URL ?>pages/product.php?slug=<?= $product['slug'] ?>"> <img src="<?= function_exists('img_url') ? img_url($image_url) : $image_url ?>" alt="<?= htmlspecialchars($product['name']) ?>" class="product-image" loading="lazy" onerror="this.onerror=null;this.src='<?= SITE_URL ?>assets/images/no-image.jpg';"> </a> <div class="product-badges"> <?php if ($product['new_arrival']): ?> <span class="product-badge new">New</span> <?php endif; ?> <?php if ($discount > 0): ?> <span class="product-badge sale">-<?= $discount ?>%</span> <?php endif; ?> <?php if ($product['featured']): ?> <span class="product-badge">Featured</span> <?php endif; ?> <?php if ($product['stock_status'] == 'out_of_stock'): ?> <span class="product-badge hot">Out of Stock</span> <?php endif; ?> </div> <div class="product-actions"> <button class="product-action-btn wishlist-btn <?= $is_in_wishlist ? 'active' : '' ?>" data-product-id="<?= $product['id'] ?>" data-bs-toggle="tooltip" title="Add to Wishlist"> <i class="<?= $is_in_wishlist ? 'fas' : 'far' ?> fa-heart"></i> </button> <a href="<?= SITE_URL ?>pages/product.php?slug=<?= $product['slug'] ?>" class="product-action-btn" data-bs-toggle="tooltip" title="Quick View"> <i class="far fa-eye"></i> </a> </div> <?php if ($product['stock_status'] != 'out_of_stock'): ?> <button class="product-add-cart add-to-cart-btn" data-product-id="<?= $product['id'] ?>"> <i class="fas fa-shopping-bag"></i> Add to Cart </button> <?php endif; ?> </div> <div class="product-info"> <div class="product-category"> <a href="<?= SITE_URL ?>pages/category.php?slug=<?= $product['category_slug'] ?? '' ?>" class="text-muted text-decoration-none"> <?= htmlspecialchars($product['category_name'] ?? '') ?> </a> </div> <a href="<?= SITE_URL ?>pages/product.php?slug=<?= $product['slug'] ?>" class="product-name"> <?= htmlspecialchars($product['name']) ?> </a> <div class="product-rating"> <div class="stars"> <?php for ($i = 1; $i <= 5; $i++): ?> <i class="fa<?= $i <= $rating ? 's' : 'r' ?> fa-star"></i> <?php endfor; ?> </div> <span class="count">(<?= $review_count ?>)</span> </div> <div class="product-price"> <?php if ($product['sale_price'] > 0 && $product['sale_price'] < $product['regular_price']): ?> <span class="regular"><?= format_currency($product['sale_price']) ?></span> <span class="sale"><?= format_currency($product['regular_price']) ?></span> <span class="discount">-<?= $discount ?>%</span> <?php else: ?> <span class="regular"><?= format_currency($product['regular_price']) ?></span> <?php endif; ?> </div> </div> </div>
Save Changes
Cancel
Create New File
Create New Folder