pzct/app/widget/Menu.php

99 lines
3.2 KiB
PHP
Raw Permalink Normal View History

2023-07-25 09:22:32 +00:00
<?php
namespace app\widget;
use app\model\Category;
use app\model\ConfigSetting;
use think\facade\Config as CConfig;
use think\facade\View;
class Menu
{
public function index_bak($categoryId = 0)
{
$configExtraBase = ConfigSetting::getConfigContentsByName('extraBase');
$menus = Category::getListForFrontMenu();
$allCategories = Category::getList(false);
foreach ($menus as &$menu) {
$menu['children_ids'] = [];
$menusGroup = [];
if (isset($menu['children'])) {
$menu['children_ids'] = array_column($menu['children'], 'id');
foreach ($menu['children'] as $child) {
$menusGroup[$child['group_name']][] = $child;
}
}
$menu['menus_group'] = $menusGroup;
$menu['all_subordinate_ids'] = $this->getAllSubordinateIds($allCategories, $menu['id']);
$menu['isActive'] = 0;
if ($categoryId == $menu['id'] || in_array($categoryId, $menu['all_subordinate_ids'])) {
$menu['isActive'] = 1;
}
}
$data = [
'categoryId' => $categoryId,
'menus' => $menus,
'extraBase' => $configExtraBase
];
return View::assign($data)->fetch('public/menu');
}
public function index($categoryId = 0)
{
// $menus = Category::getListForFrontMenu();
// $allCategories = Category::getList(false);
// foreach ($menus as &$menu) {
// $menu['children_ids'] = [];
// $menusGroup = [];
// if (isset($menu['children'])) {
// $menu['children_ids'] = array_column($menu['children'], 'id');
// foreach ($menu['children'] as $child) {
// $menusGroup[$child['group_name']][] = $child;
// }
// }
//
// $menu['menus_group'] = $menusGroup;
// $menu['all_subordinate_ids'] = $this->getAllSubordinateIds($allCategories, $menu['id']);
// $menu['isActive'] = 0;
// if ($categoryId == $menu['id'] || in_array($categoryId, $menu['all_subordinate_ids'])) {
// $menu['isActive'] = 1;
// }
// }
//
// $data = [
// 'categoryId' => $categoryId,
// 'menus' => $menus,
// ];
$data = [];
return View::assign($data)->fetch('public/menu');
}
// 所有下级栏目ID
private function getAllSubordinateIds($items, $curId = 0)
{
$list = [];
foreach ($items as $k => $item) {
if ($item['parent_id'] == $curId) {
$list[] = $item['id'];
unset($items[$k]);
$childrenIds = $this->getAllSubordinateIds($items, $item['id']);
if ($childrenIds) {
$list = array_merge($list, $childrenIds);
}
}
}
return $list;
}
public function simple()
{
$data = [
'extraBase' => ConfigSetting::getConfigContentsByName('extraBase')
];
return View::assign($data)->fetch('public/menu_simple');
}
}