]> _ Git - pmi.git/commitdiff
wip #6498
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 23 Nov 2023 09:17:45 +0000 (10:17 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 23 Nov 2023 09:17:45 +0000 (10:17 +0100)
.docker/production/images/php-fpm/Dockerfile
app/Templates/Category.php
app/Templates/Products.php
resources/views/pages/category.blade.php
resources/views/pages/products.blade.php

index 64fbb7462ef520688ea51ae40b78d6ef97982916..a5af62e2fd32758b5764972ed5ce4160d9b7cefa 100644 (file)
@@ -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
index a867097b85853b2ef7d7cee565be3e547d11d127..ec8188530b63febdf1b5b8ed15261b7f54bb2f3d 100644 (file)
@@ -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');
     }
 }
index 3de3ebe7aee994bb6fafedd7081d57aff373c370..f9130fad80b2be4aea21565e29de1a9fc17b835b 100644 (file)
@@ -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');
     }
 
     /**
index b4766cc89409d6afa78884d1b0af72de729e14c6..99e1cffa459e11f036529ab04c2822f123e6f67b 100644 (file)
@@ -3,7 +3,9 @@
 @section('content')
 
     @intro(['padding' => 'pb-1v'])
-
+    @php
+        \Barryvdh\Debugbar\Facade::startMeasure('render category view');
+    @endphp
     <full-width class="bg-grey-100" padding="pt-1v pb-2v">
 
         <content class="product-category">
@@ -34,4 +36,7 @@
 
     </full-width>
 
+    @php
+        \Barryvdh\Debugbar\Facade::stopMeasure('render category view')
+    @endphp
 @endsection
index ec53d151efa4374600830db664ca114f9d384fcd..314ec4ffe8369f255269f2de216831fd1d8af9a0 100644 (file)
@@ -3,6 +3,10 @@
 @section('content')
     @intro(['padding' => 'pb-1v'])
 
+    @php
+        \Barryvdh\Debugbar\Facade::startMeasure('render products view')
+    @endphp
+
     <full-width class="bg-grey-100" padding="pt-1v pb-2v">
 
         <content>
@@ -34,4 +38,8 @@
 
     </full-width>
 
+    @php
+        \Barryvdh\Debugbar\Facade::stopMeasure('render products view')
+    @endphp
+
 @endsection