Browse Source

feat: artile add relatedProducts

igb 4 days ago
parent
commit
5fa256dc09
1 changed files with 42 additions and 0 deletions
  1. 42 0
      app/Http/Controllers/PageController.php

+ 42 - 0
app/Http/Controllers/PageController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\DistAppearanceTemplate;
+use App\Models\DistProduct;
 use Illuminate\Http\Request;
 use App\Services\LiquidRenderer;
 use App\Models\SitePage;
@@ -120,6 +121,46 @@ class PageController extends Controller
         ];
         // 构建导航数据 结束
 
+
+        //能过 seo_keywords 查找相有相同 seo_keywords的产品, seo_keywords 可能是多个,用逗号分隔
+        $seo_keywords = $page->seo_keywords;
+
+        $seo_keywords_array = explode(',', $seo_keywords);
+
+        if(!empty($seo_keywords_array))
+        {
+            $seo_keywords_array = array_map('trim', $seo_keywords_array);
+            $seo_keywords_array = array_unique($seo_keywords_array);
+
+            // 构建查询条件
+            $query = DistProduct::where('dist_id', getDistId())
+                ->where('enabled', 1)
+                ->where('status', 2);
+
+            // 为每个关键词添加查询条件
+            $query->where(function($q) use ($seo_keywords_array) {
+                foreach ($seo_keywords_array as $keyword) {
+                    $q->orWhere(function($subQ) use ($keyword) {
+                        $subQ->where('seo_keywords', 'LIKE', $keyword)
+                            ->orWhere('seo_keywords', 'LIKE', $keyword . ',%')
+                            ->orWhere('seo_keywords', 'LIKE', '%,' . $keyword)
+                            ->orWhere('seo_keywords', 'LIKE', '%,' . $keyword . ',%');
+                    });
+                }
+            });
+
+            // 获取相关产品
+            $relatedProducts = $query->with('images')
+                ->orderBy('order', 'desc')
+                ->orderBy('id', 'desc')
+                ->limit(4)
+                ->get();
+
+        }
+
+
+
+
         $template_file ='pages_detail.liquid';
 
         if(!empty($page->template_file ))
@@ -139,6 +180,7 @@ class PageController extends Controller
                 'breadcrumbs' => $breadcrumbs,
                 'paginator' => $paginator,
                 'csrf_token' => csrf_token(),
+                'relatedProducts' => $relatedProducts,
 
             ]);
     }