Authored by 毕凯

Merge branch 'develop' of http://git.dev.yoho.cn/web/yohobuy into develop

@@ -660,6 +660,13 @@ @@ -660,6 +660,13 @@
660 name: '', 660 name: '',
661 enName: '', 661 enName: '',
662 desc: '', 662 desc: '',
  663 + keyEntry: [
  664 + {
  665 + name: '',
  666 + url: ''
  667 + },
  668 + ...
  669 + ],
663 img: '' 670 img: ''
664 }, 671 },
665 672
@@ -10,7 +10,7 @@ var $searchBox = $('.search-box'), @@ -10,7 +10,7 @@ var $searchBox = $('.search-box'),
10 $box = $('.box'), 10 $box = $('.box'),
11 $indexSearch = $('.index-search'), 11 $indexSearch = $('.index-search'),
12 $indexLogo = $('.index-logo'), 12 $indexLogo = $('.index-logo'),
13 - $channelLink = $('.index-channel a'); 13 + $channelLink = $('.index-channel a:not(#yohood)');
14 14
15 var $search = $searchBox.children('input[type="text"]'), 15 var $search = $searchBox.children('input[type="text"]'),
16 $cancelSearch = $box.children('.no-search'), 16 $cancelSearch = $box.children('.no-search'),
@@ -36,6 +36,22 @@ @@ -36,6 +36,22 @@
36 <div class="list-right pull-right"> 36 <div class="list-right pull-right">
37 {{> product/shop-entry}} 37 {{> product/shop-entry}}
38 38
  39 + {{# sortIntro}}
  40 + <div class="sort-intro clearfix">
  41 + <div class="texts pull-left">
  42 + <p class="name">{{name}}</p>
  43 + <p class="en-name">{{enName}}</p>
  44 + <p class="desc">{{description}}</p>
  45 + <div class="key-entry">
  46 + {{#each keyEntry}}
  47 + <a href="{{url}}">{{name}}</a>
  48 + {{/each}}
  49 + </div>
  50 + </div>
  51 + <img class="pull-right img" src="{{img}}">
  52 + </div>
  53 + {{/ sortIntro}}
  54 +
39 {{> product/standard-content}} 55 {{> product/standard-content}}
40 56
41 {{> product/latest-walk}} 57 {{> product/latest-walk}}
1 -{{> layout/header}}  
2 -<div class="product-search-page product-page yoho-page center-content">  
3 - {{# search}}  
4 - {{> layout/path-nav}}  
5 -  
6 - {{> product/standard-content}}  
7 -  
8 - {{> product/latest-walk}}  
9 - {{/ search}}  
10 -</div>  
11 -{{> layout/footer}}  
  1 +{{> layout/header}}
  2 +<div class="new-sale-page product-page yoho-page">
  3 + {{# saleList}}
  4 + {{# saleBanner}}
  5 + <div class="banner-img" style="height: {{bannerHeight}}px;background:url({{img}}) no-repeat top center;"></div>
  6 + {{/ saleBanner}}
  7 +
  8 + <div class="center-content clearfix">
  9 + {{# saleTitle}}
  10 + <div class="header-title">
  11 + {{name}}
  12 + <p class="line-through"></p>
  13 + <p class="count-wrap">
  14 + <span class="count">共{{count}}个结果</span>
  15 + </p>
  16 + </div>
  17 + {{/ saleTitle}}
  18 +
  19 + <div class="list-left pull-left">
  20 + {{> product/left-content}}
  21 + </div>
  22 +
  23 + <div class="list-right pull-right">
  24 + {{> product/standard-content}}
  25 + </div>
  26 + </div>
  27 + {{/ saleList}}
  28 +</div>
  29 +{{> layout/footer}}
@@ -139,3 +139,20 @@ @@ -139,3 +139,20 @@
139 seajs.use('js/order/save'); 139 seajs.use('js/order/save');
140 </script> 140 </script>
141 {{/if}} 141 {{/if}}
  142 +
  143 +
  144 +{{!-- sale列表 --}}
  145 +{{#if saleListPage}}
  146 +<script>
  147 + seajs.use(['js/product/list', 'js/product/product'], function (list, product) {
  148 +
  149 + product.init(4);
  150 + window.onresize = function () {
  151 + setTimeout(function () {
  152 + product.init(4);
  153 + }, 300);
  154 + };
  155 +
  156 + });
  157 +</script>
  158 +{{/if}}
@@ -34,6 +34,22 @@ @@ -34,6 +34,22 @@
34 {{> product/left-content}} 34 {{> product/left-content}}
35 </div> 35 </div>
36 <div class="list-right pull-right"> 36 <div class="list-right pull-right">
  37 + {{# sortIntro}}
  38 + <div class="sort-intro clearfix">
  39 + <div class="texts pull-left">
  40 + <p class="name">{{name}}</p>
  41 + <p class="en-name">{{enName}}</p>
  42 + <p class="desc">{{description}}</p>
  43 + <div class="key-entry">
  44 + {{#each keyEntry}}
  45 + <a href="{{url}}">{{name}}</a>
  46 + {{/each}}
  47 + </div>
  48 + </div>
  49 + <img class="pull-right img" src="{{img}}">
  50 + </div>
  51 + {{/ sortIntro}}
  52 +
37 {{> product/standard-content}} 53 {{> product/standard-content}}
38 54
39 {{> product/latest-walk}} 55 {{> product/latest-walk}}
@@ -3838,6 +3838,7 @@ require("js/passport/reg"); @@ -3838,6 +3838,7 @@ require("js/passport/reg");
3838 require("js/passport/back"); 3838 require("js/passport/back");
3839 require("js/passport/login"); 3839 require("js/passport/login");
3840 require("js/passport/reset"); 3840 require("js/passport/reset");
  3841 +require("js/passport/vertification");
3841 }); 3842 });
3842 define("js/passport/reg", ["jquery"], function(require, exports, module){ 3843 define("js/passport/reg", ["jquery"], function(require, exports, module){
3843 /* 3844 /*
@@ -5345,3 +5346,106 @@ $('#pwd, #repwd').keydown(function(e) { @@ -5345,3 +5346,106 @@ $('#pwd, #repwd').keydown(function(e) {
5345 }); 5346 });
5346 5347
5347 }); 5348 });
  5349 +define("js/passport/vertification", ["jquery"], function(require, exports, module){
  5350 +/**
  5351 + * 验证手机
  5352 + * @author: xuqi<qi.xu@yoho.cn>
  5353 + * @date: 2015/12/14
  5354 + */
  5355 +
  5356 +var $ = require("jquery");
  5357 +
  5358 +var $sc = $('#send-captcha'),
  5359 + $msgTip = $('#captcha-tip'),
  5360 + $errTip = $('#err-tip'),
  5361 + $next = $('#next-step'),
  5362 + seconds,
  5363 + itime;
  5364 +
  5365 +$sc.click(function() {
  5366 + $.post('/passport/register/authcode', {
  5367 + mobile: $('#mobile').val(),
  5368 + area: $('#area').val(),
  5369 + captcha: $('#captchaPic').val(),
  5370 + project: 'repassword'
  5371 + }, function(jsonData) {
  5372 + if (jsonData.code === 200) {
  5373 + $errTip.hide();
  5374 + if ($(this).hasClass('disable')) {
  5375 + return;
  5376 + }
  5377 + seconds = 60;
  5378 +
  5379 + //$sc.addClass('disable').prop('disabled', true);
  5380 + $sc.addClass('disable').attr('disabled', true);
  5381 + $msgTip.removeClass('hide');
  5382 +
  5383 + $sc.val(seconds-- + '秒后可重新操作');
  5384 + itime = setInterval(function() {
  5385 + if (seconds === 0) {
  5386 + clearInterval(itime);
  5387 +
  5388 + //$sc.val('发送验证码').removeClass('disable').prop('disabled', false);
  5389 + $sc.val('发送验证码').removeClass('disable').removeAttr('disabled');
  5390 + } else {
  5391 + $sc.val(seconds-- + '秒后可重新操作');
  5392 + }
  5393 + }, 1000);
  5394 + } else {
  5395 + $(this).addClass('error');
  5396 + $errTip.removeClass('hide').text('发送失败');
  5397 + }
  5398 + });
  5399 +});
  5400 +
  5401 +if ($(this).hasClass('disable')) {
  5402 + return;
  5403 +}
  5404 +seconds = 60;
  5405 +
  5406 +//$sc.addClass('disable').prop('disabled', true);
  5407 +$sc.addClass('disable').attr('disabled', true);
  5408 +$msgTip.removeClass('hide');
  5409 +
  5410 +$sc.val(seconds-- + '秒后可重新操作');
  5411 +itime = setInterval(function() {
  5412 + if (seconds === 0) {
  5413 + clearInterval(itime);
  5414 +
  5415 + //$sc.val('发送验证码').removeClass('disable').prop('disabled', false);
  5416 + $sc.val('发送验证码').removeClass('disable').removeAttr('disabled');
  5417 + } else {
  5418 + $sc.val(seconds-- + '秒后可重新操作');
  5419 + }
  5420 +}, 1000);
  5421 +
  5422 +
  5423 +$('#captcha').keyup(function() {
  5424 + var v = $.trim($(this).val());
  5425 +
  5426 + if (v !== '') {
  5427 +
  5428 + //添加验证码正确验证
  5429 + //$next.removeClass('disable').prop('disabled', false);
  5430 + $next.removeClass('disable').removeAttr('disabled');
  5431 + } else {
  5432 +
  5433 + //$next.addClass('disable').prop('disabled', true);
  5434 + $next.addClass('disable').attr('disabled', true);
  5435 + }
  5436 +}).blur(function() {
  5437 + var v = $.trim($(this).val());
  5438 +
  5439 + if (v === '') {
  5440 +
  5441 + //添加验证码正确验证
  5442 + $(this).addClass('error');
  5443 + $errTip.removeClass('hide');
  5444 + } else {
  5445 + $(this).removeClass('error');
  5446 + $errTip.addClass('hide');
  5447 + }
  5448 +}).focus(function() {
  5449 + $(this).removeClass('error');
  5450 +});
  5451 +});
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
@@ -95,20 +95,20 @@ function getShoppingKey() { @@ -95,20 +95,20 @@ function getShoppingKey() {
95 } 95 }
96 96
97 //YAS统计代码 97 //YAS统计代码
98 -(function(w, d, s, j, f) {  
99 - var a = d.createElement(s);  
100 - var m = d.getElementsByTagName(s)[0];  
101 -  
102 - w.YohoAcquisitionObject = f;  
103 -  
104 - w[f] = function() {  
105 - w[f].p = arguments;  
106 - };  
107 -  
108 - a.async = 1;  
109 - a.src = j;  
110 - m.parentNode.insertBefore(a, m);  
111 -})(window, document, 'script', 'http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js', '_yas'); 98 +//(function(w, d, s, j, f) {
  99 +// var a = d.createElement(s);
  100 +// var m = d.getElementsByTagName(s)[0];
  101 +//
  102 +// w.YohoAcquisitionObject = f;
  103 +//
  104 +// w[f] = function() {
  105 +// w[f].p = arguments;
  106 +// };
  107 +//
  108 +// a.async = 1;
  109 +// a.src = j;
  110 +// m.parentNode.insertBefore(a, m);
  111 +//})(window, document, 'script', 'http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js', '_yas');
112 112
113 (function() { 113 (function() {
114 var uid = getUid(); 114 var uid = getUid();
@@ -6,3 +6,4 @@ require('./reg'); @@ -6,3 +6,4 @@ require('./reg');
6 require('./back'); 6 require('./back');
7 require('./login'); 7 require('./login');
8 require('./reset'); 8 require('./reset');
  9 +require('./vertification');
@@ -155,4 +155,77 @@ @@ -155,4 +155,77 @@
155 color: #f00; 155 color: #f00;
156 } 156 }
157 } 157 }
  158 +
  159 + .sort-intro {
  160 + margin-bottom: 20px;
  161 +
  162 + .texts {
  163 + width: 386px;
  164 + height: 298px;
  165 + padding: 0 50px;
  166 + border: 1px solid #eaeceb;
  167 + text-align: center;
  168 + overflow: hidden;
  169 + }
  170 +
  171 + .name {
  172 + font-size: 30px;
  173 + font-weight: bold;
  174 + margin-top: 60px;
  175 + }
  176 +
  177 + .en-name {
  178 + font-size: 14px;
  179 + font-weight: bold;
  180 + }
  181 +
  182 + .desc {
  183 + margin-top: 15px;
  184 + color: #666;
  185 + margin-top: 15px;
  186 + font-size: 12px;
  187 + line-height: 150%;
  188 + }
  189 +
  190 + .img {
  191 + width: 480px;
  192 + height: 300px;
  193 + }
  194 +
  195 + .key-entry {
  196 + width: 330px;
  197 + margin: 30px auto 0;
  198 +
  199 + a {
  200 + float: left;
  201 + display: block;
  202 + width: 110px;
  203 + height: 14px;
  204 + line-height: 14px;
  205 + font-size: 12px;
  206 + margin-bottom: 5px;
  207 + color: #069;
  208 + text-decoration: underline;
  209 + }
  210 + }
  211 + }
  212 +}
  213 +
  214 +@media (max-width: 1180px) {
  215 + .product-list-page .sort-intro {
  216 + .texts {
  217 + width: 346px;
  218 + height: 248px;
  219 + padding: 0 30px;
  220 + }
  221 +
  222 + .name {
  223 + margin-top: 30px;
  224 + }
  225 +
  226 + .img {
  227 + width: 400px;
  228 + height: 250px;
  229 + }
  230 + }
158 } 231 }
@@ -329,7 +329,6 @@ class HomeModel @@ -329,7 +329,6 @@ class HomeModel
329 public static function getChannel() 329 public static function getChannel()
330 { 330 {
331 $result = array(); 331 $result = array();
332 -  
333 if (USE_CACHE) { 332 if (USE_CACHE) {
334 $key = CacheConfig::KEY_ACTION_INDEX_CONFIG; 333 $key = CacheConfig::KEY_ACTION_INDEX_CONFIG;
335 // 先尝试获取一级缓存(master), 有数据则直接返回. 334 // 先尝试获取一级缓存(master), 有数据则直接返回.
@@ -340,6 +339,7 @@ class HomeModel @@ -340,6 +339,7 @@ class HomeModel
340 } 339 }
341 340
342 $data = IndexData::channelData(); 341 $data = IndexData::channelData();
  342 +
343 if (!empty($data['data']['list'])) { 343 if (!empty($data['data']['list'])) {
344 $build = array(); 344 $build = array();
345 foreach ($data['data']['list'] as $value) { 345 foreach ($data['data']['list'] as $value) {
@@ -372,9 +372,11 @@ class HomeModel @@ -372,9 +372,11 @@ class HomeModel
372 default: 372 default:
373 continue; 373 continue;
374 } 374 }
  375 + if (!empty($build)) {
375 $result['channelList'][] = $build; 376 $result['channelList'][] = $build;
376 } 377 }
377 } 378 }
  379 + }
378 380
379 if (USE_CACHE) { 381 if (USE_CACHE) {
380 // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据. 382 // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
@@ -71,7 +71,7 @@ class Bootstrap extends Bootstrap_Abstract @@ -71,7 +71,7 @@ class Bootstrap extends Bootstrap_Abstract
71 $controller = 'Index'; 71 $controller = 'Index';
72 $action = 'Index'; 72 $action = 'Index';
73 // 二级域名 73 // 二级域名
74 - if (3 === $level) { 74 + if (2 === $level) {
75 $subDomain = strval($hostParts[0]); 75 $subDomain = strval($hostParts[0]);
76 switch (strtolower($subDomain)) { 76 switch (strtolower($subDomain)) {
77 case 'www': // 主站 77 case 'www': // 主站
@@ -88,6 +88,12 @@ class Bootstrap extends Bootstrap_Abstract @@ -88,6 +88,12 @@ class Bootstrap extends Bootstrap_Abstract
88 break; 88 break;
89 case 'list': // 商品列表 89 case 'list': // 商品列表
90 $module = 'Product'; 90 $module = 'Product';
  91 + $url = strtolower($dispatcher->getRequest()->getRequestUri());
  92 + //list列表的index
  93 + if(empty($url) || $url == '/index' || $url == '/') {
  94 + $listRequest = new Yaf\Request\Http('/product/list/index');
  95 + $dispatcher->setRequest($listRequest);
  96 + }
91 break; 97 break;
92 case 'sale'://促销 98 case 'sale'://促销
93 $module = 'Product'; 99 $module = 'Product';
@@ -79,8 +79,8 @@ class HomeModel @@ -79,8 +79,8 @@ class HomeModel
79 'is_new' => $val['is_new'] == 'Y' ? true : false, 79 'is_new' => $val['is_new'] == 'Y' ? true : false,
80 // 'subnav' => array() 80 // 'subnav' => array()
81 ); 81 );
82 - foreach ($val['sub'] as $sub) { // 二级  
83 $index_sub = 0; 82 $index_sub = 0;
  83 + foreach ($val['sub'] as $sub) { // 二级
84 $subnav = array( 84 $subnav = array(
85 'name' => $sub['sort_name'], 85 'name' => $sub['sort_name'],
86 'name_en' => $sub['sort_name_en'], 86 'name_en' => $sub['sort_name_en'],
@@ -31,18 +31,42 @@ class IndexModel @@ -31,18 +31,42 @@ class IndexModel
31 //批量调接口获取数据 31 //批量调接口获取数据
32 $result = Yohobuy::getMulti($urlList, array(), true); 32 $result = Yohobuy::getMulti($urlList, array(), true);
33 33
  34 + // 组织模板数据
  35 + $data = HelperSearch::getList($result, $searchCondition['options']);
  36 +
34 //调用接口获取list-index banner数据 37 //调用接口获取list-index banner数据
35 $msort = isset($searchCondition['condition']['msort']) ? $searchCondition['condition']['msort'] : false; 38 $msort = isset($searchCondition['condition']['msort']) ? $searchCondition['condition']['msort'] : false;
36 $misort = isset($searchCondition['condition']['misort']) ? $searchCondition['condition']['misort'] : false; 39 $misort = isset($searchCondition['condition']['misort']) ? $searchCondition['condition']['misort'] : false;
  40 + $positionId = isset($searchCondition['options']['positionId']) ? $searchCondition['options']['positionId'] : '';
37 $gender = $searchCondition['condition']['gender'] == '2,3' ? 2 : 1; 41 $gender = $searchCondition['condition']['gender'] == '2,3' ? 2 : 1;
38 if ($msort && $misort) { 42 if ($msort && $misort) {
39 - $bannerData = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_INDEX_TBANNER, 'get', array(10,$msort,$misort,$gender,0,0,0,0,0)); 43 + $bannerData = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_INDEX_TBANNER, 'get', array($positionId,$msort,$misort,$gender,0,0,0,0,0));
  44 + if (isset($bannerData['code']) && $bannerData['code'] == '200') {
  45 + $banner = self::formatBanner($bannerData['data']);
  46 + }
  47 + }
  48 + //插入banner数据
  49 + if (!empty($banner)) {
  50 + $data['sortIntro'] = $banner;
40 } 51 }
41 -  
42 - // 组织模板数据  
43 - $data = HelperSearch::getList($result, $searchCondition['options']);  
44 52
45 return $data; 53 return $data;
46 } 54 }
47 55
  56 + //组织list-index banner数据
  57 + public static function formatBanner($bannerData)
  58 + {
  59 + $banner = array();
  60 + $banner['name'] = $bannerData['title'];
  61 + $banner['enName'] = $bannerData['subtitle'];
  62 + $banner['desc'] = $bannerData['intro'];
  63 + $banner['img'] = $bannerData['logo'];
  64 + foreach($bannerData['keyword'] as $key => $vo){
  65 + $banner['keyEntry'][$key]['name'] = $vo['word'];
  66 + $banner['keyEntry'][$key]['url'] = $vo['url'];
  67 + }
  68 +
  69 + return $banner;
  70 + }
  71 +
48 } 72 }
@@ -205,6 +205,7 @@ class BackController extends WebAction { @@ -205,6 +205,7 @@ class BackController extends WebAction {
205 $code = AuthCode::encode ( $str, PassportModel::BACK_FIND_SECRET_KEY ); 205 $code = AuthCode::encode ( $str, PassportModel::BACK_FIND_SECRET_KEY );
206 $url = '/passport/back/backcode?code=' . base64_encode ( $code ); 206 $url = '/passport/back/backcode?code=' . base64_encode ( $code );
207 $this->redirect ( SITE_MAIN . $url ); 207 $this->redirect ( SITE_MAIN . $url );
  208 + return true;
208 } 209 }
209 } 210 }
210 //出错直接跳到找回密码页 211 //出错直接跳到找回密码页
@@ -429,6 +429,26 @@ class Index1Controller extends AbstractAction @@ -429,6 +429,26 @@ class Index1Controller extends AbstractAction
429 'name' => '包类/装备' 429 'name' => '包类/装备'
430 ) 430 )
431 ), 431 ),
  432 + 'sortIntro' => array(
  433 + 'name' => '羽绒服',
  434 + 'enName' => 'DOWN COAT',
  435 + 'desc' => '羽绒服是冬季必不可少的服饰之一,冬天的街头充斥着各种各样的羽绒服,特别是在北方。时下羽绒服融入了毛领、收腰等时尚元素,更显潮人们的完美身材。',
  436 + 'keyEntry' => array(
  437 + array(
  438 + 'name' => 'Livis'
  439 + ),
  440 + array(
  441 + 'name' => 'LEE'
  442 + ),
  443 + array(
  444 + 'name' => 'LE2E'
  445 + ),
  446 + array(
  447 + 'name' => 'LE2E'
  448 + )
  449 + ),
  450 + 'img' => 'http://img13.static.yhbimg.com/adpic/2015/12/22/06/0276abe61367884cea21b779e47141891b.jpg'
  451 + ),
432 'shopEntry' => array( 452 'shopEntry' => array(
433 'home' => 'adidas.yohobuy.com', 453 'home' => 'adidas.yohobuy.com',
434 'logo' => 'http://img11.static.yhbimg.com/brandLogo/2013/01/16/09/01f515687de080f94243cb1aa0fedb2fe1.jpg?imageMogr2/thumbnail/80x50/extent/80x50/background/d2hpdGU=/position/center/quality/90', 454 'logo' => 'http://img11.static.yhbimg.com/brandLogo/2013/01/16/09/01f515687de080f94243cb1aa0fedb2fe1.jpg?imageMogr2/thumbnail/80x50/extent/80x50/background/d2hpdGU=/position/center/quality/90',
@@ -5,8 +5,12 @@ class ListController extends WebAction @@ -5,8 +5,12 @@ class ListController extends WebAction
5 { 5 {
6 public function indexAction() 6 public function indexAction()
7 { 7 {
  8 + //获取banner id
  9 + $positionId = 10; //搜素banner 位置id
8 $condition = array(); 10 $condition = array();
9 - $options = array(); 11 + $options = array(
  12 + 'positionId' => $positionId
  13 + );
10 $indexData = Product\IndexModel::getIndexData($condition, $options); 14 $indexData = Product\IndexModel::getIndexData($condition, $options);
11 15
12 $data = array( 16 $data = array(
@@ -55,4 +55,513 @@ class Sale1Controller extends WebAction @@ -55,4 +55,513 @@ class Sale1Controller extends WebAction
55 $this->setWebNavHeader(); 55 $this->setWebNavHeader();
56 $this->_view->display('index', $data); 56 $this->_view->display('index', $data);
57 } 57 }
  58 +
  59 + //列表页
  60 + public function saleListAction()
  61 + {
  62 + $data = array(
  63 + 'saleListPage' => true,
  64 + 'saleList' => array(
  65 + 'saleBanner' => array(
  66 + 'bannerHeight' => 350,
  67 + 'img' => 'http://img12.static.yhbimg.com/couponImg/2015/12/10/08/02d4c26f19ca2e44359d69d5cff86167fb.jpg'
  68 + ),
  69 + 'saleTitle' => array(
  70 + 'name' => '全部商品',
  71 + 'count' => 540
  72 + ),
  73 + 'leftContent' => array(
  74 + array(
  75 + 'allSort' => array(
  76 + 'updateNum' => 145,
  77 + 'list' => array(
  78 + array(
  79 + 'name' => '裙装',
  80 + 'num' => '10',
  81 + 'childList' => array(
  82 + array(
  83 + 'name' => '全身裙装',
  84 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  85 + 'num' => '5'
  86 + ),
  87 + array(
  88 + 'name' => '全身裙装',
  89 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  90 + 'num' => '5'
  91 + ),
  92 + array(
  93 + 'name' => '全身裙装',
  94 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  95 + 'num' => '5'
  96 + ),
  97 + array(
  98 + 'name' => '全身裙装',
  99 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  100 + 'num' => '5'
  101 + )
  102 + )
  103 + ),
  104 + array(
  105 + 'name' => '裙装BBB',
  106 + 'num' => '10',
  107 + 'childList' => array(
  108 + array(
  109 + 'name' => '全身裙装',
  110 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  111 + 'num' => '5'
  112 + ),
  113 + array(
  114 + 'name' => '全身裙装',
  115 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  116 + 'num' => '5'
  117 + ),
  118 + array(
  119 + 'name' => '全身裙装',
  120 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  121 + 'num' => '5'
  122 + ),
  123 + array(
  124 + 'name' => '全身裙装',
  125 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  126 + 'num' => '5'
  127 + )
  128 + )
  129 + )
  130 + )
  131 + )
  132 + ),
  133 + array(
  134 + 'picLink' => array(
  135 + 'title' => 'AAAA',
  136 + 'list' => array(
  137 + array(
  138 + 'href' => 'http://adidas.yohobuy.com/?folder=1366',
  139 + 'src' => 'http://img12.static.yhbimg.com/brandBanner/2015/02/04/06/0216e9a4c1c1edb0c8fe6b4347cc5a8035.jpg'
  140 + ),
  141 + array(
  142 + 'href' => 'http://adidas.yohobuy.com/?folder=1366',
  143 + 'src' => 'http://img12.static.yhbimg.com/brandBanner/2015/02/04/06/0216e9a4c1c1edb0c8fe6b4347cc5a8035.jpg'
  144 + )
  145 + )
  146 + )
  147 + ),
  148 + array(
  149 + 'advPic' => array(
  150 + 'advPicTitle' => false,
  151 + 'list' => array(
  152 + array(
  153 + 'href' => 'http://adidas.yohobuy.com/?folder=1366',
  154 + 'src' => 'http://img02.static.yohobuy.com/cms/2015/11/10/15/02ee7970deb68390b77cbf0685f26fc5bf.jpg'
  155 + ),
  156 + array(
  157 + 'href' => 'http://adidas.yohobuy.com/?folder=1366',
  158 + 'src' => 'http://img02.static.yohobuy.com/cms/2015/11/10/15/02ee7970deb68390b77cbf0685f26fc5bf.jpg'
  159 + )
  160 + )
  161 + )
  162 + ),
  163 + array(
  164 + 'newSales' => array(
  165 + 'updateNum' => 130,
  166 + 'list' => array(
  167 + array(
  168 + 'name' => '12月03日',
  169 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  170 + 'num' => '5'
  171 + ),
  172 + array(
  173 + 'name' => '12月03日',
  174 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  175 + 'num' => '5'
  176 + ),
  177 + array(
  178 + 'name' => '12月03日',
  179 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  180 + 'num' => '5'
  181 + ),
  182 + array(
  183 + 'name' => '12月03日',
  184 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  185 + 'num' => '5'
  186 + )
  187 + )
  188 + )
  189 + ),
  190 + array(
  191 + 'allDiscount' => array(
  192 + 'updateNum' => 130,
  193 + 'list' => array(
  194 + array(
  195 + 'name' => '1~3折',
  196 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  197 + 'num' => '5'
  198 + ),
  199 + array(
  200 + 'name' => '4~6折',
  201 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  202 + 'num' => '5'
  203 + ),
  204 + array(
  205 + 'name' => '7折',
  206 + 'href' => 'http://adidas.yohobuy.com/?gender=1,3',
  207 + 'num' => '5'
  208 + )
  209 + )
  210 + )
  211 + )
  212 + ),
  213 + 'filters' => array(
  214 + 'checkedConditions' => array(
  215 + 'conditions' => array(
  216 + array(
  217 + 'href' => '',
  218 + 'name' => '暗黑'
  219 + ),
  220 + array(
  221 + 'href' => '',
  222 + 'color' => '#f00'
  223 + ),
  224 + array(
  225 + 'href' => '',
  226 + 'name' => 'CLOT'
  227 + )
  228 + ),
  229 + 'clearUrl' => ''
  230 + ),
  231 + 'channel' => array(
  232 + array(
  233 + 'href' => '/?gender=1,3',
  234 + 'name' => 'BOYS'
  235 + ),
  236 + array(
  237 + 'href' => '/?gender=2,3',
  238 + 'name' => 'GIRLS'
  239 + ),
  240 + array(
  241 + 'href' => '',
  242 + 'name' => 'KIDS'
  243 + ),
  244 + array(
  245 + 'href' => '',
  246 + 'name' => 'LIFESTYLE'
  247 + )
  248 + ),
  249 + 'sort' => array(
  250 + array(
  251 + 'id' => '1',
  252 + 'name' => '上衣',
  253 + 'sub' => array(
  254 + array(
  255 + 'href' => '',
  256 + 'name' => 'T恤'
  257 + ),
  258 + array(
  259 + 'href' => '',
  260 + 'name' => '棉袄'
  261 + ),
  262 + array(
  263 + 'href' => '',
  264 + 'name' => '外套'
  265 + )
  266 + )
  267 + ),
  268 + array(
  269 + 'id' => '2',
  270 + 'name' => '裤子'
  271 + ),
  272 + array(
  273 + 'id' => '3',
  274 + 'name' => '连衣裙'
  275 + ),
  276 + array(
  277 + 'id' => '4',
  278 + 'name' => '鞋'
  279 + )
  280 + ),
  281 + 'brand' => array(
  282 + 'default' => array(
  283 + array(
  284 + 'href' => '',
  285 + 'name' => 'CLOT'
  286 + ),
  287 + array(
  288 + 'href' => '',
  289 + 'name' => 'ABLE JEANS'
  290 + ),
  291 + array(
  292 + 'href' => '',
  293 + 'name' => 'Eight Guys'
  294 + ),
  295 + array(
  296 + 'href' => '',
  297 + 'name' => 'FAIRWHALE JEANS'
  298 + ),
  299 + array(
  300 + 'href' => '',
  301 + 'name' => '鬼洗'
  302 + ),
  303 + array(
  304 + 'href' => '',
  305 + 'name' => '金银帝国Imperial Taels'
  306 + ),
  307 + array(
  308 + 'href' => '',
  309 + 'name' => 'F.L.Y.D'
  310 + ),
  311 + array(
  312 + 'href' => '',
  313 + 'name' => 'Tapenade特芙娜'
  314 + ),
  315 + array(
  316 + 'href' => '',
  317 + 'name' => 'Adidas Originals'
  318 + )
  319 + ),
  320 + 'brandIndex' => array(
  321 + array(
  322 + 'index' => 'all',
  323 + 'name' => '全部'
  324 + ),
  325 + array(
  326 + 'index' => '0-9',
  327 + 'name' => '0 ~ 9'
  328 + ),
  329 + array(
  330 + 'index' => 'a',
  331 + 'name' => 'A'
  332 + )
  333 + ),
  334 + 'brandsShow' => array(
  335 + array(
  336 + 'id' => '1',
  337 + 'href' => '',
  338 + 'index' => '0-9',
  339 + 'name' => '5cm',
  340 + 'key' => '5cm'
  341 + ),
  342 + array(
  343 + 'id' => '2',
  344 + 'href' => '',
  345 + 'index' => 'k',
  346 + 'name' => 'KTZ',
  347 + 'key' => 'ktz'
  348 + ),
  349 + array(
  350 + 'id' => '3',
  351 + 'href' => '',
  352 + 'index' => 't',
  353 + 'name' => 'Tapenade特芙娜',
  354 + 'key' => 'tapenade特芙娜'
  355 + ),
  356 + array(
  357 + 'id' => '4',
  358 + 'href' => '',
  359 + 'index' => 'j',
  360 + 'name' => '金银帝国Imperial Taels',
  361 + 'key' => '金银帝国imperial taels'
  362 + ),
  363 + array(
  364 + 'id' => '5',
  365 + 'href' => '',
  366 + 'index' => 'a',
  367 + 'name' => 'ABLE JEANS',
  368 + 'key' => 'able jeans'
  369 + )
  370 + )
  371 + ),
  372 + 'price' => array(
  373 + array(
  374 + 'href' => '',
  375 + 'name' => '0-239'
  376 + ),
  377 + array(
  378 + 'href' => '',
  379 + 'name' => '240-329'
  380 + )
  381 + ),
  382 + 'color' => array(
  383 + array(
  384 + 'href' => '',
  385 + 'name' => '黑色',
  386 + 'rgb' => '#000'
  387 + ),
  388 + array(
  389 + 'href' => '',
  390 + 'name' => '红色',
  391 + 'rgb' => '#f00'
  392 + )
  393 + ),
  394 + 'size' => array(
  395 + array(
  396 + 'href' => '',
  397 + 'name' => 'S'
  398 + ),
  399 + array(
  400 + 'href' => '',
  401 + 'name' => 'L'
  402 + )
  403 + ),
  404 + 'seniorChose' => array(
  405 + array(
  406 + 'attr' => 'style',
  407 + 'name' => '风格',
  408 + 'showMulti' => true,
  409 + 'sub' => array(
  410 + array(
  411 + 'id' => '1',
  412 + 'href' => '',
  413 + 'name' => '街头'
  414 + ),
  415 + array(
  416 + 'id' => '2',
  417 + 'href' => '',
  418 + 'name' => '简约'
  419 + )
  420 + )
  421 + ),
  422 + array(
  423 + 'attr' => 'weather',
  424 + 'name' => '适用季节',
  425 + 'sub' => array(
  426 + array(
  427 + 'id' => '1',
  428 + 'href' => '',
  429 + 'name' => '春天'
  430 + ),
  431 + array(
  432 + 'id' => '2',
  433 + 'href' => '',
  434 + 'name' => '夏天'
  435 + )
  436 + )
  437 + )
  438 + )
  439 + ),
  440 + 'opts' => array(
  441 + 'sortType' => array(
  442 + array(
  443 + 'href' => '',
  444 + 'name' => '默认'
  445 + ),
  446 + array(
  447 + 'active' => true,
  448 + 'href' => '',
  449 + 'name' => '最新',
  450 + 'hasSortOrient' => true,
  451 + 'desc' => true
  452 + ),
  453 + array(
  454 + 'href' => '',
  455 + 'name' => '价格',
  456 + 'hasSortOrient' => true
  457 + ),
  458 + array(
  459 + 'href' => '',
  460 + 'name' => '折扣',
  461 + 'hasSortOrient' => true
  462 + )
  463 + ),
  464 + 'checks' => array(
  465 + array(
  466 + 'name' => '新品',
  467 + 'checked' => true,
  468 + 'href' => ''
  469 + ),
  470 + array(
  471 + 'name' => '打折',
  472 + 'href' => ''
  473 + ),
  474 + array(
  475 + 'name' => '限量',
  476 + 'checked' => true,
  477 + 'href' => ''
  478 + )
  479 + ),
  480 + 'fivePerLine' => true,
  481 + 'sixPerLineHref' => '',
  482 + 'countPerPage' => '120',
  483 + 'pageCounts' => array(
  484 + array(
  485 + 'href' => '',
  486 + 'count' => 60
  487 + ),
  488 + array(
  489 + 'href' => '',
  490 + 'count' => 100
  491 + ),
  492 + array(
  493 + 'href' => '',
  494 + 'count' => 120
  495 + )
  496 + ),
  497 + 'curPage' => 1,
  498 + 'pageCount' => 30,
  499 + 'nextHref' => 'hello'
  500 + ),
  501 + 'goods' => array(
  502 + array(
  503 + 'tags' => array(
  504 + 'isNew' => true,
  505 + 'isYearEndPromotion' => true
  506 + ),
  507 + 'url' => 'http://adidas.yohobuy.com/?gender=1,3',
  508 + 'thumb' => 'http://img12.static.yhbimg.com/goodsimg/2015/11/22/03/02c17af44dc23aa5a62d61cb59a05380bc.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90',
  509 + 'name' => 'adidas Originals FORUM 中帮拼色休闲板鞋',
  510 + 'salePrice' => '899',
  511 + 'isFew' => true
  512 + ),
  513 + array(
  514 + 'tags' => array(
  515 + 'isNew' => true,
  516 + 'isReNew' => true
  517 + ),
  518 + 'url' => 'http://adidas.yohobuy.com/?gender=1,3',
  519 + 'thumb' => 'http://img12.static.yhbimg.com/goodsimg/2015/11/22/03/02c17af44dc23aa5a62d61cb59a05380bc.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90',
  520 + 'name' => 'adidas Originals FORUM 中帮拼色休闲板鞋',
  521 + 'salePrice' => '899',
  522 + 'showColBtn' => true
  523 + ),
  524 + array(
  525 + 'tags' => array(
  526 + 'isNew' => true,
  527 + 'isReNew' => true
  528 + ),
  529 + 'url' => 'http://adidas.yohobuy.com/?gender=1,3',
  530 + 'thumb' => 'http://img12.static.yhbimg.com/goodsimg/2015/11/22/03/02c17af44dc23aa5a62d61cb59a05380bc.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90',
  531 + 'name' => 'adidas Originals FORUM 中帮拼色休闲板鞋',
  532 + 'salePrice' => '899'
  533 + ),
  534 + array(
  535 + 'url' => 'http://adidas.yohobuy.com/?gender=1,3',
  536 + 'thumb' => 'http://img12.static.yhbimg.com/goodsimg/2015/11/22/03/02c17af44dc23aa5a62d61cb59a05380bc.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90',
  537 + 'name' => 'adidas Originals FORUM 中帮拼色休闲板鞋',
  538 + 'salePrice' => '899'
  539 + ),
  540 + array(
  541 + 'tags' => array(
  542 + 'isNew' => true,
  543 + 'isReNew' => true
  544 + ),
  545 + 'url' => 'http://adidas.yohobuy.com/?gender=1,3',
  546 + 'thumb' => 'http://img12.static.yhbimg.com/goodsimg/2015/11/22/03/02c17af44dc23aa5a62d61cb59a05380bc.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90',
  547 + 'name' => 'adidas Originals FORUM 中帮拼色休闲板鞋',
  548 + 'salePrice' => '899'
  549 + ),
  550 + array(
  551 + 'tags' => array(
  552 + 'isNew' => true,
  553 + 'isReNew' => true
  554 + ),
  555 + 'url' => 'http://adidas.yohobuy.com/?gender=1,3',
  556 + 'thumb' => 'http://img12.static.yhbimg.com/goodsimg/2015/11/22/03/02c17af44dc23aa5a62d61cb59a05380bc.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90',
  557 + 'name' => 'adidas Originals FORUM 中帮拼色休闲板鞋',
  558 + 'salePrice' => '899'
  559 + )
  560 + ),
  561 + 'totalCount' => '2259',
  562 + 'pager' => '<a href="" class="cur"><span>1</span></a><a href=""><span>2</span></a><a href="" title="下一页">下一页<span class="iconfont">&gt;</span></a>'
  563 + )
  564 + );
  565 + $this->_view->display('sale-list', $data);
  566 + }
58 } 567 }
1 -; list列表(index)  
2 -routes.productindex.type = "rewrite"  
3 -routes.productindex.match = "/sale"  
4 -routes.productindex.route.module = Product  
5 -routes.productindex.route.controller = List  
6 -routes.productindex.route.action = index  
7 -  
8 ; 折扣专区(SALE) 1 ; 折扣专区(SALE)
9 routes.productsale.type = "rewrite" 2 routes.productsale.type = "rewrite"
10 routes.productsale.match = "/sale" 3 routes.productsale.match = "/sale"