1, // 走进超宇 'about_children' => [ 'company' => 3, // 企业简介 'honor' => 8, // 资质荣誉 'structure' => 9, // 组织架构 'history' => 10, // 发展历程 'video' => 11, // 企业视频 ], 'honors_manage' => 26, // 荣誉资质管理 'history_manage' => 29, // 发展历程管理 'products' => 2, // 产品中心 'service' => 5, // 品质与服务 'service_children' => [ 'before' => 12, // 售前服务 'in_progress' => 13, // 售中服务 'after' => 14, // 售后服务 ], 'marketing' => 15, // 营销网络(主) 'marketing_children' => [ 'network' => 16, // 营销网络 'achievement' => 17, // 主要业绩 ], 'achievement_manage' => 34, // 主要业绩管理 'news' => 18, // 新闻动态 'news_children' => [ 'enterprise' => 20, // 企业新闻 'industry' => 21, // 行业资讯 'dynamics' => 22, // 最新动态 ], 'contact' => 19, // 联系我们 'contact_children' => [ 'information' => 23, // 联系方式 'jobs' => 24, // 行业资讯 'message' => 25, // 在线留言 ], 'jobs_manage' => 33, // 招聘管理 ]; //获取首页栏目ID public static function getIndex() { return self::where('is_index', 1)->findOrEmpty()->toArray(); } //根据上级ID和语言获取下级栏目 public static function getChildrenByParentId($parentId) { if($parentId <= 0){ return []; } $category = self::getById($parentId); if(empty($category)){ return []; } return self::alias('c') ->leftJoin('model m', 'c.model_id=m.id') ->field('c.*, m.manager, m.template, m.name as modelName') ->where('c.parent_id', $parentId) ->order('c.sort','asc') ->select() ->toArray(); } //重写方法 public static function getById($categoryId) { return self::alias('c') ->leftJoin('model m', 'c.model_id = m.id') ->where('c.id', $categoryId) ->field('c.*, m.template') ->findOrEmpty() ->toArray(); } //查看是否有下级栏目 public static function hasChildren($categoryId) { if (is_array($categoryId)) { $count = self::where('parent_id', 'in', $categoryId)->count(); } else { $count = self::where(['parent_id'=>$categoryId])->count(); } return $count ? true : false; } //获取前台菜单 public static function getListForFrontMenu() { $items = self::alias('c') ->leftJoin('model m','c.model_id=m.id') ->field('c.*, m.manager, m.template') ->where('c.state', 1) ->where('c.is_menu', 1) ->order('is_index desc, sort asc') ->select() ->toArray(); return self::getCates($items); } /** * 获取栏目 * @param bool $limit 是否限制查询 * @param array $cates 需要限制查询的栏目IDs */ public static function getList($limit = false, $cates = []) { if ($limit && empty($cates)) { return []; } return self::alias('c') ->leftJoin('model m', 'c.model_id=m.id') ->field('c.*, m.manager, m.name as modelName') ->when($limit, function($query) use($cates) { $query->whereIn('c.id', $cates); }) ->order('sort','asc') ->select() ->toArray(); } //获取栏目分级列表 public static function getListTree($isMenu = false) { if ($isMenu) { $items = self::where('c.state', 1) ->order('sort','asc')->select()->toArray(); } else { $items = self::order('sort','asc')->select()->toArray(); } return self::getCates($items); } //获取递归栏目 public static function getCates($cates,$parentId=0) { $menus = []; foreach($cates as $cate){ if($cate['parent_id'] == $parentId){ $children = self::getCates($cates,$cate['id']); if(!empty($children)){ $cate['children'] = $children; } $menus[] = $cate; } } return $menus; } public static function onAfterInsert($category) { $category->sort = $category->id; $category->save(); } //递归获取栏目名称面包屑 public static function getCatesCrumbs($currentId = 0) { $crumbs = []; $category = self::getById($currentId); if($category) { if($category['parent_id'] == 0){ $crumbs[] = $category; }else{ $categoryIds = explode(',', trim($category['path'], ',')); $categories = self::alias('c') ->leftJoin('model m', 'c.model_id = m.id') ->where('c.id', 'in', $categoryIds) ->column('c.*,m.template', 'c.id'); foreach($categoryIds as $id){ if(isset($categories[$id])){ $crumbs[] = $categories[$id]; } } $crumbs[] = $category; } } return $crumbs; } //获取栏目中涉及到的文件 public static function getFilesInUse() { $items = self::select()->toArray(); $data = []; foreach($items as $item){ $src = trim($item['src']); if(!empty($src)){ $key = getKeyByPath($src); $data[$key] = $src; } } return $data; } //当前分类的最高级分类Id public static function firstGradeById($id) { $res = 0; $item = self::getById($id); if ($item) { $res = $id; if ($item['parent_id'] > 0) { $items = self::select()->toArray(); $first = self::getFirstGrade($items, $item['parent_id']); if (!empty($first)) { $res = $first['id']; } } } return $res; } public static function getFirstGrade($items, $parentId) { $data = []; foreach ($items as $key=> $item) { if($item['id'] == $parentId) { if ($item['parent_id'] > 0) { unset($items[$key]); $parent = self::getFirstGrade($items, $item['parent_id']); if (!empty($parent)) { $data = $parent; } else { $data = $item; } } else { $data = $item; } } } return $data; } //根据栏目ID获取面包屑列表 public static function getListForCrumbs($categoryId) { $categories = []; $category = self::getById($categoryId); if(!empty($category)){ $categories[] = $category; if($category['parent_id'] != 0 ){ $parents = self::getListForCrumbs($category['parent_id']); if(!empty($parents)){ $categories = array_merge($categories, $parents); } } } return $categories; } }