<?php namespace Index; use Configs\CacheConfig; use Configs\ChannelConfig; use Plugin\Helpers; use Plugin\Cache; use LibModels\Web\Home\IndexData; use LibModels\Web\Product\SearchData; use Plugin\DataProcess\WebChannel\Channel as ChannelProcess; /** * web首页模板数据模型 * * @name HomeModel * @package models * @copyright yoho.inc * @version 1.0 (2015-12-20 11:08:21) * @author whb <huanbao.wang@yoho.cn> */ class HomeModel { /* COOKIE标识访问的是男生频道 */ const COOKIE_NAME_BOYS = 'boys'; /* COOKIE标识访问的是女生频道 */ const COOKIE_NAME_GIRLS = 'girls'; /* COOKIE标识访问的是潮童频道 */ const COOKIE_NAME_KIDS = 'kids'; /* COOKIE标识访问的是创意生活频道 */ const COOKIE_NAME_LIFESTYLE = 'lifestyle'; // 男首首页 const CODE_BOYS_CHANNEL = 'c15bf0cbfbd4893fd70c869c991f6d3d'; // 女首首页 const CODE_GIRLS_CHANNEL = '4d897f3b8eec0c465db0125e5b1f9edf'; // 'a519ba44ef3a85cf3c05e405c6ba8e53'; // 潮童首页 const CODE_KIDS_CHANNEL = '331994d6fa8dc87f92a26dd45c0aa071'; // 'a7741b94e8bb9d56d0d36e00c05956f7'; // 创意生活新 const CODE_LIFESTYLE_CHANNEL = '1b053fd044834f5c86d5eb15fb237af9'; // 创意生活 const CODE_LIFESTYLE_CHANNEL_1 = '380c38155fd8beee10913a3f5b462da6'; const CODE_LIFESTYLE_CHANNEL_2 = '665f7c2fb9d037ee820766953ee34bf7'; /** * 获取导航 * * @param string $channel * @return array */ public static function getNavBars($channel = 'boys') { $data = IndexData::getNavData(); if (empty($data)) { return array(); } $menu = array(); $item = array(); foreach ($data['data'] as $val) { $item = array( 'name_cn' => $val['sort_name'], // 父级 'name_en' => $val['sort_name_en'], 'link' => $val['sort_url'], 'icon' => $val['sort_ico'], 'classname' => str_replace(' ', '', strtolower($val['sort_name_en'])) == $channel ? $channel : '', 'index_main' => 0, 'is_hot' => $val['is_hot'] == 'Y' ? true : false, 'is_new' => $val['is_new'] == 'Y' ? true : false, 'subnav' => array() ); foreach ($val['sub'] as $sub) { // 二级 $index_sub = 0; $subnav = array( 'name' => $sub['sort_name'], 'name_en' => $sub['sort_name_en'], 'link' => $sub['sort_url'], 'is_hot' => $sub['is_hot'] == 'Y' ? true : false, 'is_new' => $sub['is_new'] == 'Y' ? true : false, 'thirdnav' => array(), 'index_sub' => $index_sub ++ ); if (isset($sub['sub'])) { foreach ($sub['sub'] as $thirdsub) { // 三级 $thirdnav = array( 'title' => $thirdsub['sort_name'], 'name_en' => $thirdsub['sort_name_en'], 'link' => $thirdsub['sort_url'], 'branditems' => array() ); if (isset($thirdsub['sub'])) { foreach ($thirdsub['sub'] as $fourthnav) { // 四级 $thirdnav['branditems'][] = array( 'brandname' => $fourthnav['sort_name'], 'link' => $fourthnav['sort_url'], 'hot' => $fourthnav['is_hot'] == 'Y' ? 'hot' : '' ); } } $subnav['thirdnav'][] = $thirdnav; } } $item['subnav'][] = $subnav; } $menu[] = $item; } return $menu; } /** * 选择频道 * * @return void */ public static function goSwitchChannel() { // 通过COOKIE检查是否已设置过首页频道时,跳转到对应的频道页 if (!empty($_COOKIE['_Channel'])) { headers_sent() || header('Location: /' . $_COOKIE['_Channel']); exit(); } } /** * 设置选择的频道保存到浏览器COOKIE * * @param string $cookie * @return void */ public static function setSwitchToCookie($cookie) { setcookie('_Channel', $cookie, time() + 86400 * 300, '/', COOKIE_DOMAIN); } /** * 获取选择频道 * * @return string */ public static function getSwitchChannel() { $channel = self::COOKIE_NAME_BOYS; if (empty($_COOKIE['_Channel'])) { self::setSwitchToCookie(self::COOKIE_NAME_BOYS); } else { $channel = $_COOKIE['_Channel']; } return $channel; } /** * 获取频道资源 * * @param string $channel * @param string $content_code * @return array */ public static function getChannelResource($channel, $content_code) { $resource = IndexData::getResourceData($content_code); // 格式化数据 $data = ChannelProcess::getFormat($channel, $resource['data']); return $data; } /** * 获取lifesytle频道资源 * * @return array */ public static function getLifestyleChannel() { $resouce1 = IndexData::getResourceData(self::CODE_LIFESTYLE_CHANNEL_1); $focus = $resouce1['data']; $resouce2 = IndexData::getResourceData(self::CODE_LIFESTYLE_CHANNEL_2); $floor = $resouce2['data']; $resource = array( 0 => $focus[0], 1 => array( 'template_name' => 'text', 'data' => array( 'text' => '优选品牌 BRAND' ) ), 2 => $focus[1], 3 => $focus[2], 4 => $focus[3] ); foreach ($floor as $val) { $resource[] = $val; } foreach (array_slice($focus, 4, 20) as $val) { $resource[] = $val; } $data = ChannelProcess::getFormat('lifestyle', $resource); return $data; } /** * 获取最新上架商品 * * @param string $channel * @return array */ public static function getNewArrival($channel) { $result = array(); $params = array( 'order' => 's_t_desc', 'shelve_time' => strtotime("-60 days") . ',' . time() ); // 最新上架分类 if (isset(ChannelConfig::$newArrivalSortList[$channel])) { $sortList = ChannelConfig::$newArrivalSortList[$channel]; // 获取分类列表获取商品信息 $goodsList = SearchData::getSearchDataBySort($params, $sortList); foreach ($goodsList as $goods) { // 格式化数据 $val = Helpers::formatProduct($goods, true, true, true, 280, 373); if ($val['price'] == false) { $val['price'] = $val['salePrice']; } if (! empty($val)) { $result[] = $val; } } } return $result; } }