feat: 产品

refactor: 产品详情页seo
This commit is contained in:
2025-04-24 10:21:45 +08:00
parent 49c865bf85
commit e2265629f9
43 changed files with 592 additions and 63 deletions

View File

@@ -17,6 +17,9 @@ abstract class Common extends BaseController
// 当前语言id
protected $lang_id = 1;
// 网站配置中的基本配置项
protected $basic_config = [];
/**
* 控制器初始化
* @access public
@@ -49,6 +52,7 @@ abstract class Common extends BaseController
// 获取系统配置
$configs = $this->getSysConfig($this->lang_id, ['basic', 'contact', 'media']);
$this->basic_config = $configs['basic'];
// 输出系统配置
View::assign('basic_config', $configs['basic']);
View::assign('contact_config', $configs['contact']);

View File

@@ -9,6 +9,7 @@ use app\index\model\ProductInquiryModel;
use app\index\model\ProductModel;
use app\index\model\ProductParamsModel;
use app\index\model\ProductPurchaseLinkModel;
use app\index\model\ProductRelatedModel;
use app\index\model\ProductSkuAttrModel;
use app\index\model\ProductSkuModel;
use app\index\model\SysBannerModel;
@@ -172,11 +173,12 @@ class Product extends Common
->find();
View::assign('product', $product);
$product_categorys = [];
$product_params = [];
$product_skus = [];
$product_sku_attrs = [];
$product_categorys = [];
$product_params = [];
$product_skus = [];
$product_sku_attrs = [];
$product_purchase_links = [];
$product_related = [];
if (!empty($product)) {
// 获取产品分类信息
$product_categorys = ProductCategoryModel::field(['id', 'pid', 'name'])
@@ -237,12 +239,24 @@ class Product extends Common
->hidden(['platform'])
->bindAttr('platform', ['platform_name' => 'platform'])
->toArray();
// 获取相关产品信息
$related = ProductRelatedModel::with(['product' => function($query) {
$query->field(['id', 'name', 'spu', 'cover_image']);
}])
->byProductId($product['id'])
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
if (!$related->isEmpty()) {
$product_related = Arr::pluck($related, 'product');
}
}
View::assign('product_categorys', $product_categorys);
View::assign('product_params', $product_params);
View::assign('product_skus', $product_skus);
View::assign('product_sku_attrs', $product_sku_attrs);
View::assign('product_purchase_links', $product_purchase_links);
View::assign('product_categorys', $product_categorys); // 产品分类
View::assign('product_params', $product_params); // 产品参数
View::assign('product_skus', $product_skus); // 产品sku
View::assign('product_sku_attrs', $product_sku_attrs); // 产品sku属性
View::assign('product_purchase_links', $product_purchase_links); // 产品购买链接
View::assign('product_related', $product_related); // 相关产品
// 获取询盘可选国家
$config = $this->basic_config['optional_country_for_product_inquiry'];
@@ -328,28 +342,26 @@ class Product extends Common
->isNew(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
if ($products->isEmpty()) {
return [];
}
// 按分类分组产品
$products_map = [];
foreach ($products as $product) {
$products_map[$product['category_id']][] = $product;
}
// 获取产品分类信息
$categorys = ProductCategoryModel::field(['id', 'name'])
->byPks(array_keys($products_map))
->language($this->lang_id)
->displayed(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
if (!$categorys->isEmpty()) {
foreach ($categorys as $category) {
$newpros[] = [
'category' => $category,
'products' => $products_map[$category['id']] ?? [],
];
if (!$products->isEmpty()) {
// 按分类分组产品
$products_map = [];
foreach ($products as $product) {
$products_map[$product['category_id']][] = $product;
}
// 获取产品分类信息
$categorys = ProductCategoryModel::field(['id', 'name'])
->byPks(array_keys($products_map))
->language($this->lang_id)
->displayed(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
if (!$categorys->isEmpty()) {
foreach ($categorys as $category) {
$newpros[] = [
'category' => $category,
'products' => $products_map[$category['id']] ?? [],
];
}
}
}
View::assign('newpros', $newpros);