refactor: pc导航重构
Some checks failed
Gitea Actions Official-website / deploy-dev (push) Failing after 2s
Some checks failed
Gitea Actions Official-website / deploy-dev (push) Failing after 2s
This commit is contained in:
@@ -8,6 +8,7 @@ use app\index\model\LanguageModel;
|
||||
use app\index\model\ProductCategoryModel;
|
||||
use app\index\model\ProductModel;
|
||||
use app\index\model\SysConfigModel;
|
||||
use app\index\model\SysMallStoreEntranceModel;
|
||||
use app\index\model\SysNavigationItemModel;
|
||||
use think\facade\Lang;
|
||||
use think\facade\View;
|
||||
@@ -38,7 +39,7 @@ abstract class Common extends BaseController
|
||||
}
|
||||
|
||||
// 获取产品分类
|
||||
$categorys = $this->getProductCategory($this->lang_id);
|
||||
$categorys = $this->getProductCategory($this->lang_id, true);
|
||||
// 输出产品分类
|
||||
View::assign('header_categorys', $categorys);
|
||||
|
||||
@@ -47,6 +48,9 @@ abstract class Common extends BaseController
|
||||
// 输出热销产品
|
||||
View::assign('header_hot_products', $hot_products);
|
||||
|
||||
// 获取商品购买入口
|
||||
View::assign("header_mall_entrance", $this->getMallStoreEntrance($this->lang_id));
|
||||
|
||||
// 输出顶部导航
|
||||
View::assign('header_navigation', $this->getNavigation('NAV_67f3701f3e831', $this->lang_id));
|
||||
|
||||
@@ -78,7 +82,7 @@ abstract class Common extends BaseController
|
||||
}
|
||||
|
||||
// 获取产品分类
|
||||
protected function getProductCategory($language = 1)
|
||||
protected function getProductCategory($language = 1, $with_recommends = false)
|
||||
{
|
||||
$categorys = ProductCategoryModel::field([
|
||||
'id',
|
||||
@@ -87,15 +91,42 @@ abstract class Common extends BaseController
|
||||
'icon',
|
||||
'level'
|
||||
])
|
||||
->when($with_recommends, function($query) {
|
||||
$query->with(['recommends' => function($query) {
|
||||
$query->field(['id', 'category_id', 'title', 'image', 'desc', 'link'])
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
}]);
|
||||
})
|
||||
->language($language)
|
||||
->displayed()
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->select();
|
||||
->select()
|
||||
->hidden(["recommends.category_id"]);
|
||||
if ($categorys->isEmpty()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return array_to_tree($categorys->toArray(), 0, 'pid', 1, false);
|
||||
return $this->toTreeAndChunk($categorys->toArray(), 0, 1);
|
||||
}
|
||||
private function toTreeAndChunk(array $categorys, int $pid, int|bool $level): array
|
||||
{
|
||||
$ret = [];
|
||||
foreach ($categorys as $item) {
|
||||
if ($item['pid'] == $pid) {
|
||||
$lv = $level;
|
||||
if ($level !== false) {
|
||||
$item['level'] = $level;
|
||||
$lv = $level + 1;
|
||||
}
|
||||
$children = $this->toTreeAndChunk($categorys, $item['id'], $lv);
|
||||
if (!empty($children)) {
|
||||
$item['children'] = $item['level'] == 1 ? array_chunk($children, 2) : $children;
|
||||
}
|
||||
$ret[] = $item;
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 获取顶部导航
|
||||
@@ -164,6 +195,26 @@ abstract class Common extends BaseController
|
||||
return $languages;
|
||||
}
|
||||
|
||||
// 获取商品购买入口
|
||||
private function getMallStoreEntrance($language = 1)
|
||||
{
|
||||
return SysMallStoreEntranceModel::field([
|
||||
'id',
|
||||
'name',
|
||||
'image',
|
||||
'hover_image',
|
||||
'link'
|
||||
])
|
||||
->language($language)
|
||||
->enabled()
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->select()
|
||||
?->each(function($item) {
|
||||
$item->image = thumb($item->image);
|
||||
return $item;
|
||||
});
|
||||
}
|
||||
|
||||
// 获取系统联系方式配置
|
||||
protected function getSysConfig($language, $group = [])
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user