From 7a15409888429ae8c922e39ed700e9169156e77f Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Thu, 23 Nov 2023 10:17:45 +0100 Subject: [PATCH] wip #6498 --- .docker/production/images/php-fpm/Dockerfile | 2 +- app/Templates/Category.php | 55 +++++++++++++------- app/Templates/Products.php | 6 +++ resources/views/pages/category.blade.php | 7 ++- resources/views/pages/products.blade.php | 8 +++ 5 files changed, 56 insertions(+), 22 deletions(-) diff --git a/.docker/production/images/php-fpm/Dockerfile b/.docker/production/images/php-fpm/Dockerfile index 64fbb74..a5af62e 100644 --- a/.docker/production/images/php-fpm/Dockerfile +++ b/.docker/production/images/php-fpm/Dockerfile @@ -1,5 +1,5 @@ ############################################ -# PHPDocker.io PHP 7.4 / CLI and FPM image # +# PHPDocker.io PHP 8.0 / CLI and FPM image # ############################################ FROM ubuntu:jammy AS cli diff --git a/app/Templates/Category.php b/app/Templates/Category.php index a867097..ec81885 100644 --- a/app/Templates/Category.php +++ b/app/Templates/Category.php @@ -6,6 +6,7 @@ namespace App\Templates; use App\Models\Product; use App\Models\ProductType; use Cubist\Backpack\app\Magic\PageData; +use Cubist\Backpack\Facades\App; class Category extends Base { @@ -49,29 +50,43 @@ class Category extends Base public function setData(&$data) { - parent::setData($data); + \Barryvdh\Debugbar\Facade::startMeasure('set cat data'); $cat = $data['page']->get('category'); - $productType = ProductType::find($cat); - - if (!$productType) { + $d = cache()->remember('cat_data_' . $cat . '_' . App::getVariant() . '_' . App::getLocale(), 3600, function () use ($cat) { + + $res = []; + $productType = ProductType::find($cat); + if (!$productType) { + return false; + } + $res['product_type'] = $productType->getPageData(); + + $products = Product::with('media') // Eager load media to avoid N+1 query problem + ->whereVariant() + ->where('product_type', $cat) + ->where('online', 1) + ->where('public', 1) + ->orderBy('reference') + ->get(); + + $res['products'] = PageData::fromEntities($products); + + // Get available filters + $filters = Product::getFilteredProducts($cat); + $res['filters'] = $filters ? $filters['filters'] : []; // To be used by Vue component + $res['filter_results'] = $filters ? $filters['results'] : []; + return $res; + }); + if (!$d) { $this->_404(); } - $data['product_type'] = $productType->getPageData(); - - $products = Product::with('media') // Eager load media to avoid N+1 query problem - ->whereVariant() - ->where('product_type', $cat) - ->where('online', 1) - ->where('public', 1) - ->orderBy('reference') - ->get(); - - $data['products'] = PageData::fromEntities($products); - - // Get available filters - $filters = Product::getFilteredProducts($cat); - $data['filters'] = $filters ? $filters['filters'] : []; // To be used by Vue component - $data['filter_results'] = $filters ? $filters['results'] : []; + + foreach ($d as $k => $v) { + $data[$k] = $v; + } + parent::setData($data); + + \Barryvdh\Debugbar\Facade::stopMeasure('set cat data'); } } diff --git a/app/Templates/Products.php b/app/Templates/Products.php index 3de3ebe..f9130fa 100644 --- a/app/Templates/Products.php +++ b/app/Templates/Products.php @@ -32,6 +32,11 @@ class Products extends Base $root = $menu->getRoot(); + \Barryvdh\Debugbar\Facade::startMeasure('set products nav'); + $products = self::_getProducts($menu->getVariant(), $menu->getLocale()); + + $root = $menu->getRoot(); + foreach ($products as $product) { $product->setLocale('fr'); @@ -55,6 +60,7 @@ class Products extends Base $detail->addUrlAliases([$slug_fr]); $menu->addChild($detail); } + \Barryvdh\Debugbar\Facade::stopMeasure('set products nav'); } /** diff --git a/resources/views/pages/category.blade.php b/resources/views/pages/category.blade.php index b4766cc..99e1cff 100644 --- a/resources/views/pages/category.blade.php +++ b/resources/views/pages/category.blade.php @@ -3,7 +3,9 @@ @section('content') @intro(['padding' => 'pb-1v']) - + @php + \Barryvdh\Debugbar\Facade::startMeasure('render category view'); + @endphp @@ -34,4 +36,7 @@ + @php + \Barryvdh\Debugbar\Facade::stopMeasure('render category view') + @endphp @endsection diff --git a/resources/views/pages/products.blade.php b/resources/views/pages/products.blade.php index ec53d15..314ec4f 100644 --- a/resources/views/pages/products.blade.php +++ b/resources/views/pages/products.blade.php @@ -3,6 +3,10 @@ @section('content') @intro(['padding' => 'pb-1v']) + @php + \Barryvdh\Debugbar\Facade::startMeasure('render products view') + @endphp + @@ -34,4 +38,8 @@ + @php + \Barryvdh\Debugbar\Facade::stopMeasure('render products view') + @endphp + @endsection -- 2.39.5