feat: 产品
refactor: 产品详情页seo
This commit is contained in:
@@ -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']);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user