[ 'solid' => $lang_border['solid'], 'dashed' => $lang_border['dashed'], 'dotted' => $lang_border['dotted'], 'double' => $lang_border['double'], ], // 商品样式类型 'goods_view_list_show_style' => [ 'routine' => $lang_goods_view['routine'], 'leftright' => $lang_goods_view['leftright'], 'rolling' => $lang_goods_view['rolling'], ], // 多图样式类型 'many_images_view_list_show_style' => [ 'routine' => $lang_many_images_view['routine'], 'rolling' => $lang_many_images_view['rolling'], 'list' => $lang_many_images_view['list'], ], // 图文样式类型 'images_text_view_list_show_style' => [ 'updown' => $lang_images_text_view['updown'], 'leftright' => $lang_images_text_view['leftright'], 'rolling' => $lang_images_text_view['rolling'], ], // 图片魔方样式类型 'images_magic_cube_view_list_show_style' => [ 'g1' => $lang_images_magic_cube_view['g1'], 'v2' => $lang_images_magic_cube_view['v2'], 'v3' => $lang_images_magic_cube_view['v3'], 'v4' => $lang_images_magic_cube_view['v4'], 'h2' => $lang_images_magic_cube_view['h2'], 'h3' => $lang_images_magic_cube_view['h4'], 'h4' => $lang_images_magic_cube_view['lr12'], 'lr12' => $lang_images_magic_cube_view['lr13'], 'lr13' => $lang_images_magic_cube_view['lr13'], 'lr21' => $lang_images_magic_cube_view['lr21'], 'lr31' => $lang_images_magic_cube_view['lr31'], 'tb12' => $lang_images_magic_cube_view['tb12'], 'tb13' => $lang_images_magic_cube_view['tb13'], 'tb21' => $lang_images_magic_cube_view['tb21'], 'tb31' => $lang_images_magic_cube_view['tb31'], 'lrv2h2'=> $lang_images_magic_cube_view['lrv2h2'], 'lrh2v2'=> $lang_images_magic_cube_view['lrh2v2'], 'g4' => $lang_images_magic_cube_view['g4'], ], ]; return isset($data[$key]) ? $data[$key] : []; } /** * 配置处理-保存 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-06-17 * @desc description * @param [array] $config [配置信息] * @param [array] $params [输入参数] */ public static function ConfigSaveHandle($config, $params = []) { $config = empty($config) ? [] : (is_array($config) ? $config : json_decode(htmlspecialchars_decode($config), true)); if(!empty($config) && is_array($config)) { foreach($config as &$v) { // 配置信息处理 if(!empty($v['config'])) { $v['config'] = self::ConfigSaveFieldHandle($v['config']); } // 布局 if(!empty($v['children']) && is_array($v['children'])) { foreach($v['children'] as &$vs) { // 配置信息处理 if(!empty($vs['config'])) { $vs['config'] = self::ConfigSaveFieldHandle($vs['config']); } // 容器 if(!empty($vs['children']) && is_array($vs['children'])) { // 模块 foreach($vs['children'] as &$vss) { if(!empty($vss['value']) && !empty($vss['config'])) { // 配置信息处理 $vss['config'] = self::ConfigSaveFieldHandle($vss['config']); // 根据模块类型处理 switch($vss['value']) { // 视频 video case 'video' : $vss['config']['content_video'] = ResourcesService::AttachmentPathHandle($vss['config']['content_video']); break; // 单图 images case 'images' : $vss['config']['content_images'] = ResourcesService::AttachmentPathHandle($vss['config']['content_images']); break; // 多图 many-images case 'many-images' : foreach($vss['config']['data_list'] as &$mil) { $mil['images'] = ResourcesService::AttachmentPathHandle($mil['images']); } $key = 'content_images_'; foreach($vss['config'] as $mik=>$miv) { if(substr($mik, 0, strlen($key)) == $key) { $vss['config'][$mik] = ResourcesService::AttachmentPathHandle($miv); } } break; // 图文 images-text case 'images-text' : foreach($vss['config']['data_list'] as &$itl) { $itl['images'] = ResourcesService::AttachmentPathHandle($itl['images']); } $key = 'content_images_'; foreach($vss['config'] as $mik=>$miv) { if(substr($mik, 0, strlen($key)) == $key) { $vss['config'][$mik] = ResourcesService::AttachmentPathHandle($miv); } } break; // 图片魔方 images-magic-cube case 'images-magic-cube' : foreach($vss['config']['data_list'] as &$imc) { $imc['images'] = ResourcesService::AttachmentPathHandle($imc['images']); } $key = 'content_images_'; foreach($vss['config'] as $mik=>$miv) { if(substr($mik, 0, strlen($key)) == $key) { $vss['config'][$mik] = ResourcesService::AttachmentPathHandle($miv); } } break; // 商品 goods case 'goods' : unset($vss['config']['data_list']); break; } } } } } } } } return empty($config) ? '' : json_encode($config, JSON_UNESCAPED_UNICODE); } /** * 配置处理-管理 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-06-17 * @desc description * @param [array] $config [配置信息] * @param [array] $params [输入参数] */ public static function ConfigAdminHandle($config, $params = []) { if(!empty($config)) { // 是否数组 if(!is_array($config)) { $config = json_decode($config, true); } if(!empty($config)) { foreach($config as &$v) { // 配置信息处理 if(!empty($v['config'])) { $v['config'] = self::ConfigViewFieldHandle($v['config']); } // 布局类型 $v['value_arr'] = empty($v['value']) ? [] : explode(':', $v['value']); // 布局 if(!empty($v['children']) && is_array($v['children'])) { foreach($v['children'] as &$vs) { // 配置信息处理 if(!empty($vs['config'])) { $vs['config'] = self::ConfigViewFieldHandle($vs['config']); } // 容器 if(!empty($vs['children']) && is_array($vs['children'])) { // 模块 foreach($vs['children'] as &$vss) { if(!empty($vss['value']) && !empty($vss['config'])) { // 配置信息处理 $vss['config'] = self::ConfigViewFieldHandle($vss['config']); // 根据模块类型处理 switch($vss['value']) { // 视频 video case 'video' : $vss['config']['content_video'] = ResourcesService::AttachmentPathViewHandle($vss['config']['content_video']); break; // 单图 images case 'images' : $vss['config']['content_images'] = ResourcesService::AttachmentPathViewHandle($vss['config']['content_images']); break; // 多图 many-images case 'many-images' : foreach($vss['config']['data_list'] as &$mil) { $mil['images'] = ResourcesService::AttachmentPathViewHandle($mil['images']); } $key = 'content_images_'; foreach($vss['config'] as $mik=>$miv) { if(substr($mik, 0, strlen($key)) == $key) { $vss['config'][$mik] = ResourcesService::AttachmentPathViewHandle($miv); } } break; // 图文 images-text case 'images-text' : foreach($vss['config']['data_list'] as &$itl) { $itl['images'] = ResourcesService::AttachmentPathViewHandle($itl['images']); } $key = 'content_images_'; foreach($vss['config'] as $mik=>$miv) { if(substr($mik, 0, strlen($key)) == $key) { $vss['config'][$mik] = ResourcesService::AttachmentPathViewHandle($miv); } } break; // 图片魔方 images-magic-cube case 'images-magic-cube' : foreach($vss['config']['data_list'] as &$imc) { $imc['images'] = ResourcesService::AttachmentPathViewHandle($imc['images']); } $key = 'content_images_'; foreach($vss['config'] as $mik=>$miv) { if(substr($mik, 0, strlen($key)) == $key) { $vss['config'][$mik] = ResourcesService::AttachmentPathViewHandle($miv); } } break; // 商品 case 'goods' : $p = [ 'data_type' => $vss['config']['goods_data_type'], ]; switch($vss['config']['goods_data_type']) { // 指定商品 case 'goods' : $p['goods_ids'] = $vss['config']['goods_ids']; break; // 商品分类 case 'category' : $category = json_decode(urldecode($vss['config']['goods_category_value']), true); $p['category_id'] = $category[count($category)-1]['id']; $p['order_limit_number'] = empty($vss['config']['goods_order_limit_number']) ? 0 : $vss['config']['goods_order_limit_number']; $p['order_by_type'] = isset($vss['config']['goods_order_by_type']) ? $vss['config']['goods_order_by_type'] : 0; $p['order_by_rule'] = isset($vss['config']['goods_order_by_rule']) ? $vss['config']['goods_order_by_rule'] : 0; break; } $res = self::GoodsDataList($p); $vss['config']['data_list'] = $res['data']; break; } } } } } } } } } return $config; } /** * 配置处理-展示使用 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-06-17 * @desc description * @param [array] $config [配置信息] * @param [array] $params [输入参数] */ public static function ConfigHandle($config, $params = []) { if(!empty($config)) { // 是否数组 if(!is_array($config)) { $config = json_decode($config, true); } if(!empty($config)) { foreach($config as &$v) { // 配置信息处理 if(!empty($v['config'])) { $v['config'] = self::ConfigViewFieldHandle($v['config'], true); } // 布局类型 $v['value_arr'] = empty($v['value']) ? [] : explode(':', $v['value']); // 布局 if(!empty($v['children']) && is_array($v['children'])) { foreach($v['children'] as &$vs) { // 配置信息处理 if(!empty($vs['config'])) { $vs['config'] = self::ConfigViewFieldHandle($vs['config'], true); } // 容器 if(!empty($vs['children']) && is_array($vs['children'])) { // 模块 foreach($vs['children'] as &$vss) { if(!empty($vss['value']) && !empty($vss['config'])) { // 配置信息处理 $vss['config'] = self::ConfigViewFieldHandle($vss['config'], true); // 根据模块类型处理 switch($vss['value']) { // 视频 video case 'video' : $vss['config']['video'] = ResourcesService::AttachmentPathViewHandle($vss['config']['content_video']); unset($vss['config']['content_video']); break; // 单图 images case 'images' : // 配置重新组合 $vss['config'] = [ 'frontend_config' => $vss['config']['frontend_config'], 'images' => ResourcesService::AttachmentPathViewHandle($vss['config']['content_images']), 'url' => self::LayoutUrlValueHandle($vss['config']['content_to_type'], $vss['config']['content_to_value']), ]; break; // 多图 many-images case 'many-images' : foreach($vss['config']['data_list'] as &$mil) { $mil = [ 'images' => ResourcesService::AttachmentPathViewHandle($mil['images']), 'url' => self::LayoutUrlValueHandle($mil['type'], $mil['value']), ]; } break; // 图文 images-text case 'images-text' : foreach($vss['config']['data_list'] as &$itl) { $itl['images'] = ResourcesService::AttachmentPathViewHandle($itl['images']); $itl['url'] = self::LayoutUrlValueHandle($itl['type'], $itl['value']); } break; // 图片魔方 images-magic-cube case 'images-magic-cube' : foreach($vss['config']['data_list'] as &$imc) { $imc['images'] = ResourcesService::AttachmentPathViewHandle($imc['images']); $imc['url'] = self::LayoutUrlValueHandle($imc['type'], $imc['value']); } break; // 商品 case 'goods' : $p = [ 'data_type' => $vss['config']['goods_data_type'], ]; switch($vss['config']['goods_data_type']) { // 指定商品 case 'goods' : $p['goods_ids'] = $vss['config']['goods_ids']; break; // 商品分类 case 'category' : $category = json_decode(urldecode($vss['config']['goods_category_value']), true); $p['category_id'] = $category[count($category)-1]['id']; $p['order_limit_number'] = empty($vss['config']['goods_order_limit_number']) ? 0 : $vss['config']['goods_order_limit_number']; $p['order_by_type'] = isset($vss['config']['goods_order_by_type']) ? $vss['config']['goods_order_by_type'] : 0; $p['order_by_rule'] = isset($vss['config']['goods_order_by_rule']) ? $vss['config']['goods_order_by_rule'] : 0; break; } $res = self::GoodsDataList($p); if(!empty($res['data']) && is_array($res['data'])) { foreach($res['data'] as &$g) { $g['goods_url'] = self::LayoutUrlValueHandle('goods', $g); } } $vss['config']['data_list'] = $res['data']; break; // 标题 case 'title' : // 关键字 $keywords_list = []; if(!empty($vss['config']['keywords_list'])) { foreach($vss['config']['keywords_list'] as $wd) { $keywords_list[] = [ 'keywords' => $wd['content_keywords'], 'color' => empty($wd['style_keywords_color']) ? '' : $wd['style_keywords_color'], 'url' => self::LayoutUrlValueHandle($wd['content_to_type'], $wd['content_to_value']), ]; } } // 配置重新组合 $vss['config'] = [ 'frontend_config' => $vss['config']['frontend_config'], 'title' => $vss['config']['content_title'], 'title_vice' => $vss['config']['content_title_vice'], 'title_more' => $vss['config']['content_title_more'], 'title_more_url' => self::LayoutUrlValueHandle($vss['config']['content_to_type'], $vss['config']['content_to_value']), 'keywords_list' => $keywords_list, ]; break; // 自定义html case 'custom' : $vss['config']['custom'] = empty($vss['config']['custom']) ? '' : htmlspecialchars_decode($vss['config']['custom']); break; } } } } } } } } } return $config; } /** * 配置信息字段保存处理 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-06-22 * @desc description * @param [array] $config [配置信息] */ public static function ConfigSaveFieldHandle($config) { if(!empty($config) && is_array($config)) { // 背景图片地址 $fields = ['style_background_images']; foreach($fields as $v) { if(!empty($config[$v])) { $config[$v] = ResourcesService::AttachmentPathHandle($config[$v]); } } } return $config; } /** * 配置信息字段展示处理 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-06-22 * @desc description * @param [array] $config [配置信息] * @param [boolean] $is_del_surplus_field [移除多余字段] */ public static function ConfigViewFieldHandle($config, $is_del_surplus_field = false) { if(!empty($config) && is_array($config)) { // 滚动配置 if(array_key_exists('view_list_show_style_value', $config)) { $config['view_list_show_style_value_arr'] = empty($config['view_list_show_style_value']) ? '' : json_decode(urldecode($config['view_list_show_style_value']), true); } // 附件 $attachment_fields = ['style_background_images']; foreach($attachment_fields as $av) { if(!empty($config[$av])) { $config[$av] = ResourcesService::AttachmentPathViewHandle($config[$av]); } } // 配置信息多余字段移除 if($is_del_surplus_field) { $fields = [ 'style_', 'content_item_keywords_', 'content_images_', 'content_to_type_', 'content_to_name_', 'content_to_value_', 'view_list_number_', ]; foreach($config as $k=>$v) { if(!in_array($k, $attachment_fields)) { foreach($fields as $f) { $length = strlen($f); if(substr($k, 0, $length) == $f) { unset($config[$k]); } } } } } } return $config; } /** * 链接地址处理 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-06-22 * @desc description * @param [string] $type [类型] * @param [string] $value [特殊地址配置值] */ public static function LayoutUrlValueHandle($type, $value) { // 扩展参数处理 if(!empty($value) && !is_array($value)) { $value = json_decode(urldecode($value), true); } // 当前客户端类型 $client_type = APPLICATION_CLIENT_TYPE; // url地址、默认空字符串 $url = ''; // 静态地址定义-web端 $static_url_web_arr = [ 'home' => __MY_URL__, 'goods_category' => MyUrl('index/category/index'), 'cart' => MyUrl('index/cart/index'), 'user_center' => MyUrl('index/user/index'), 'user_order_list' => MyUrl('index/order/index'), 'user_order_aftersale_list' => MyUrl('index/orderaftersale/index'), 'user_goods_favor_list' => MyUrl('index/usergoodsfavor/index'), 'user_address_list' => MyUrl('index/useraddress/index'), 'user_goods_browse_list' => MyUrl('index/usergoodsbrowse/index'), 'user_integral_list' => MyUrl('index/userintegral/index'), 'user_message_list' => MyUrl('index/message/index'), ]; // 静态地址定义-手机端 $static_url_app_arr = [ 'home' => '/pages/index/index', 'goods_category' => '/pages/goods-category/goods-category', 'cart' => '/pages/cart/cart', 'user_center' => '/pages/user/user', 'user_order_list' => '/pages/user-order/user-order', 'user_order_aftersale_list' => '/pages/user-orderaftersale/user-orderaftersale', 'user_goods_favor_list' => '/pages/user-favor/user-favor', 'user_address_list' => '/pages/user-address/user-address', 'user_goods_browse_list' => '/pages/user-goods-browse/user-goods-browse', 'user_integral_list' => '/pages/user-integral/user-integral', 'user_message_list' => '/pages/message/message', ]; // url值处理前钩子 $hook_name = 'plugins_layout_service_url_value_begin'; MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => true, 'type' => $type, 'value' => $value, 'client_type' => $client_type, 'static_url_web_arr' => &$static_url_web_arr, 'static_url_app_arr' => &$static_url_app_arr, ]); // 静态地址 $url = ''; $static_url_arr = ($client_type == 'pc') ? $static_url_web_arr : $static_url_app_arr; if(array_key_exists($type, $static_url_arr)) { $url = $static_url_arr[$type]; } else { switch($type) { // 商品 case 'goods' : if(!empty($value) && !empty($value['id'])) { // 商品处理 $res = GoodsService::GoodsDataHandle([['goods_id'=>$value['id']]], ['data_key_field'=>'goods_id']); if(!empty($res['data']) && !empty($res['data'][0]) && !empty($res['data'][0]['goods_url'])) { $url = $res['data'][0]['goods_url']; } } break; // 商品分类 case 'goods_search' : $gsp = []; if(!empty($value) && !empty($value['type']) && !empty($value['value'])) { switch($value['type']) { // 关键字 case 'keywords' : $gsp = ($client_type == 'pc') ? ['wd'=>StrToAscii($value['value'])] : '?keywords='.$value['value']; break; // 分类 case 'category' : $cid = $value['value'][count($value['value'])-1]['id']; $gsp = ($client_type == 'pc') ? ['cid'=>$cid] : '?category_id='.$cid; break; // 品牌 case 'brand' : $gsp = ($client_type == 'pc') ? ['brand'=>$value['value']['id']] : '?brand='.$value['value']['id']; break; } } // 默认搜索页面、无条件 $url = ($client_type == 'pc') ? MyUrl('index/search/index', $gsp) : '/pages/goods-search/goods-search'.(empty($gsp) ? '' : $gsp); break; // 自定义链接 case 'pages-custom-url' : $key = 'pages_custom_url_'.$client_type; if(!empty($value) && is_array($value) && array_key_exists($key, $value) && !empty($value[$key])) { $url = htmlspecialchars_decode($value[$key]); } break; } } // url值处理钩子 $hook_name = 'plugins_layout_service_url_value_handle'; MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => true, 'type' => $type, 'value' => $value, 'client_type' => $client_type, 'url' => &$url, ]); // 返回url return $url; } /** * 商品搜索 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2020-07-13 * @desc description * @param [array] $params [输入参数] */ public static function GoodsSearchList($params = []) { // 返回数据 $result = [ 'page_total' => 0, 'page_size' => 20, 'page' => max(1, isset($params['page']) ? intval($params['page']) : 1), 'total' => 0, 'data' => [], ]; // 条件 $where = [ ['g.is_delete_time', '=', 0], ['g.is_shelves', '=', 1], ]; // 关键字 if(!empty($params['keywords'])) { $where[] = ['g.title', 'like', '%'.$params['keywords'].'%']; } // 数据分类id if(!empty($params['category_id'])) { // 默认系统商品分类,并读取分类子级 $category_field = empty($params['category_field']) ? 'gci.category_id' : $params['category_field']; if($category_field == 'gci.category_id') { $category_id = GoodsCategoryService::GoodsCategoryItemsIds([intval($params['category_id'])]); } else { $category_id = [intval($params['category_id'])]; } $where[] = [$category_field, 'in', $category_id]; } // 商品搜索列表读取钩子 $hook_name = 'plugins_layout_service_search_goods_begin'; MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => true, 'params' => $params, 'where' => &$where, ]); // 获取商品总数 $result['total'] = GoodsService::CategoryGoodsTotal($where); // 获取商品列表 if($result['total'] > 0) { // 基础参数 $field = 'g.id,g.title,g.images'; $order_by = 'g.id desc'; // 分页计算 $m = intval(($result['page']-1)*$result['page_size']); $ret = GoodsService::CategoryGoodsList(['where'=>$where, 'm'=>$m, 'n'=>$result['page_size'], 'field'=>$field, 'order_by'=>$order_by]); $result['data'] = $ret['data']; $result['page_total'] = ceil($result['total']/$result['page_size']); // 数据处理 if(!empty($result['data']) && is_array($result['data']) && !empty($params['goods_ids'])) { $goods_ids = is_array($params['goods_ids']) ? $params['goods_ids'] : explode(',', $params['goods_ids']); foreach($result['data'] as &$v) { // 是否已添加 $v['is_exist'] = in_array($v['id'], $goods_ids) ? 1 : 0; } } } return DataReturn(MyLang('handle_success'), 0, $result); } /** * 商品数据 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2020-07-13 * @desc description * @param [array] $params [输入参数] */ public static function GoodsDataList($params = []) { // 数据类型、默认商品 $data_type = empty($params['data_type']) ? 'goods' : $params['data_type']; switch($data_type) { // 商品 case 'goods' : // 参数处理 if(empty($params['goods_ids'])) { return DataReturn(MyLang('layout.base_goods_id_empty_tips'), -1); } if(!is_array($params['goods_ids'])) { $params['goods_ids'] = explode(',', $params['goods_ids']); } // 读取数量 $m = 0; $n = 50; // 获取商品 $order_by = 'id desc'; $field = 'id,title,images,price,original_price,min_price,max_price,min_original_price,max_original_price,inventory,inventory_unit'; $where = [ ['is_delete_time', '=', 0], ['is_shelves', '=', 1], ['id', 'in', $params['goods_ids']], ]; break; // 商品分类 case 'category' : // 参数处理 if(empty($params['category_id'])) { return DataReturn(MyLang('layout.base_goods_category_empty_tips'), -1); } // 排序处理 $order_by_type_list = MyConst('common_goods_order_by_type_list'); $order_by_rule_list = MyConst('common_data_order_by_rule_list'); // 排序类型 $order_by_type = empty($params['order_by_type']) ? $order_by_type_list[0]['value'] : (array_key_exists($params['order_by_type'], $order_by_type_list) ? $order_by_type_list[$params['order_by_type']]['value'] : $order_by_type_list[0]['value']); // 排序规则 $order_by_rule = empty($params['order_by_rule']) ? $order_by_rule_list[0]['value'] : (array_key_exists($params['order_by_rule'], $order_by_rule_list) ? $order_by_rule_list[$params['order_by_rule']]['value'] : $order_by_rule_list[0]['value']); // 读取数量 $m = 0; $n = min(empty($params['order_limit_number']) ? 50 : intval($params['order_limit_number']), 50); // 获取商品 $order_by = $order_by_type.' '.$order_by_rule; $field = 'g.id,g.title,g.images,g.price,g.original_price,g.min_price,g.max_price,g.min_original_price,g.max_original_price,g.inventory,g.inventory_unit'; $where = [ ['gci.category_id', 'in', GoodsCategoryService::GoodsCategoryItemsIds([intval($params['category_id'])])], ['g.is_delete_time', '=', 0], ['g.is_shelves', '=', 1], ]; break; default : return DataReturn(MyLang('layout.base_data_type_not_handle_tips').'['.$params['data_type'].']', -1); } // 商品数据列表读取钩子 $hook_name = 'plugins_layout_service_goods_data_begin'; MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => true, 'params' => $params, 'data_type' => $data_type, 'where' => &$where, 'field' => &$field, 'm' => &$m, 'n' => &$n, 'order_by' => &$order_by, ]); // 根据请求类型处理数据读取 switch($data_type) { // 商品 case 'goods' : $request_params = [ 'where' => $where, 'm' => $m, 'n' => $n, 'field' => $field, 'order_by' => $order_by, ]; $ret = GoodsService::GoodsList($request_params); if(!empty($ret['data'])) { // 商品自定义按照顺序重新调整 $goods = []; $temp = array_column($ret['data'], null, 'id'); foreach($params['goods_ids'] as $v) { if(array_key_exists($v, $temp)) { $goods[] = $temp[$v]; } } $ret['data'] = $goods; } break; // 商品分类 case 'category' : $request_params = [ 'where' => $where, 'm' => $m, 'n' => $n, 'field' => $field, 'order_by' => $order_by, ]; $ret = GoodsService::CategoryGoodsList($request_params); break; } if(!empty($ret) && isset($ret['code']) && $ret['code'] == 0 && !empty($ret['data'])) { return $ret; } return DataReturn(MyLang('layout.base_goods_empty_tips'), -1); } /** * 页面数据 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-05-14 * @desc description * @param [array] $params [输入参数] */ public static function PagesList($params = []) { // 返回页面数据定义 $data = [ // 公共 'common' => [ 'name' => MyLang('layout.page_system_title'), 'data' => [ [ 'value' => 'home', 'name' => MyLang('shop_home_title')], [ 'value' => 'goods_category', 'name' => MyLang('layout.page_goods_category')], [ 'value' => 'goods_search', 'name' => MyLang('layout.page_goods_search'), 'tips' => MyLang('layout.page_goods_search_tips')], [ 'value' => 'goods', 'name' => MyLang('layout.page_goods')], [ 'value' => 'cart', 'name' => MyLang('layout.page_cart')], [ 'value' => 'user_center', 'name' => MyLang('layout.page_user_center')], [ 'value' => 'user_order_list', 'name' => MyLang('layout.page_user_order_list')], [ 'value' => 'user_order_aftersale_list', 'name' => MyLang('layout.page_user_order_aftersale_list')], [ 'value' => 'user_goods_favor_list', 'name' => MyLang('layout.page_user_goods_favor_list')], [ 'value' => 'user_address_list', 'name' => MyLang('layout.page_user_address_list')], [ 'value' => 'user_goods_browse_list', 'name' => MyLang('layout.page_user_goods_browse_list')], [ 'value' => 'user_integral_list', 'name' => MyLang('layout.page_user_integral_list')], [ 'value' => 'user_message_list', 'name' => MyLang('layout.page_user_message_list')], ], ], // 插件 'plugins' => [ 'name' => MyLang('layout.page_plugins_title'), 'data' => [], ], ]; // 页面列表钩子 $hook_name = 'plugins_layout_service_pages_list'; MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => true, 'params' => $params, 'data' => &$data, ]); // 返回页面数据 return $data; } } ?>