123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Services\LiquidRenderer;
- use App\Models\DistProduct;
- use App\Models\DistProductCategory;
- class ProductController extends Controller
- {
- protected $liquidRenderer;
- public function __construct(LiquidRenderer $liquidRenderer)
- {
- $this->liquidRenderer = $liquidRenderer;
- }
-
- public function category($slug)
- {
-
-
-
- $category = DistProductCategory::where(function ($query) use ($slug) {
- $query->where('slug', $slug)
- ->orWhere('id', $slug);
- })
- ->where('dist_id', getDistId())
- ->firstOrFail();
-
- $products = DistProduct::where('category_id', $category->id)
- ->where('dist_id', getDistId())
- ->where('enabled', 1)
- ->with('images')
- ->orderBy('order', 'desc')
- ->orderBy('id', 'desc')
- ->paginate(12);
-
- $paginator = [
- 'previous_page' => $products->previousPageUrl() ? true : false,
- 'previous_page_url' => $products->previousPageUrl(),
- 'next_page' => $products->nextPageUrl() ? true : false,
- 'next_page_url' => $products->nextPageUrl(),
- 'current_page' => $products->currentPage(),
- 'total_pages' => $products->lastPage(),
- 'pages' => range(1, $products->lastPage()),
- 'page_url' => array_combine(
- range(1, $products->lastPage()),
- array_map(fn($page) => $products->url($page), range(1, $products->lastPage()))
- ),
- ];
-
- $breadcrumbs = [
- [
- 'url' => '/',
- 'name' => 'Home',
- ]
- ];
- $breadcrumbs[] = [
- 'url' => '#',
- 'name' => $category->name,
- ];
-
- $cacheKey = "product_category_{$category->id}_page_{$products->currentPage()}";
-
- return $this->liquidRenderer->render('products_categories.liquid', [
- 'category' => $category,
- 'products' => $products,
- 'paginator' => $paginator,
- 'breadcrumbs' => $breadcrumbs,
- ], $cacheKey);
- }
-
- public function detail($id)
- {
- $product = DistProduct::getProduct($id);
- if(!$product)
- {
- abort('404');
- }
-
- $breadcrumbs = [
- [
- 'url' => '/',
- 'name' => 'Home',
- ]
- ];
- $category=$product->distProductCategory;
- $categoryUrl = $category->slug ? "/products/categories/{$category->slug}" : "/products/categories/{$category->id}";
- $breadcrumbs[] = [
- 'url' => $categoryUrl,
- 'name' => $category->name,
- ];
- $breadcrumbs[] = [
- 'url' => '#',
- 'name' => $product->title,
- ];
- return $this->liquidRenderer->render('products_detail.liquid',
- [
- 'product' => $product,
- 'csrf_token' => csrf_token(),
- 'breadcrumbs' => $breadcrumbs,
- ]);
- }
- }
|