Authored by 李奇

Merge remote-tracking branch 'origin/master' into feature/yocli-upload-cdn

... ... @@ -38,7 +38,7 @@
3、百度权重值大于等于5。<br><br>
欢迎交换友情链接,请通过以下方式联系。<br>
QQ :156030336(标注交换链接,带上网址)
QQ :2413949472(标注交换链接,带上网址)
</p>
</div>
</div>
... ...
... ... @@ -200,6 +200,10 @@ module.exports = class extends global.yoho.BaseModel {
// }
let shopInfo, shopId;
if (!ssubValue) {
return;
}
switch (ssubValue.type * 1) {
case 1:
extQs = {
... ...
... ... @@ -39,26 +39,26 @@ const index = (req, res, next) => {
return req.ctx(search).getSearchDataPre(Object.assign(params,
{uid: req.user.uid, prid: req.user.prid, query: queryKey}),
req.yoho.channel).then(result => {
req.yoho.channel).then(result => {
Object.assign(resData, result);
Object.assign(resData, result);
if (!_.get(resData, 'search.goods') || !_.get(resData, 'search.goods').length) {
_.set(resData, 'search.keyWord', queryKey);
return res.render('search/no-result', resData);
}
if (!_.get(resData, 'search.goods') || !_.get(resData, 'search.goods').length) {
_.set(resData, 'search.keyWord', queryKey);
return res.render('search/no-result', resData);
}
if (queryKey) {
Object.assign(resData, {
title: `${queryKey}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${queryKey},${queryKey}价格,${queryKey}图片,${queryKey}怎么样,${queryKey}品牌,YOHO!BUY有货`,
if (queryKey) {
Object.assign(resData, {
title: `${queryKey}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${queryKey},${queryKey}价格,${queryKey}图片,${queryKey}怎么样,${queryKey}品牌,YOHO!BUY有货`,
description: `YOHO!BUY有货网yohobuy.com是国内专业的${queryKey}网上潮流购物商城,为您找到${_.get(resData, 'search.totalCount', 0)}${queryKey}、产品的详细参数,实时报价,价格行情,图片、评价、品牌等信息。买${queryKey},就上YOHO!BUY有货` // eslint-disable-line
});
}
});
}
res.render('search/index', resData);
res.render('search/index', resData);
});
});
}).catch(next);
};
... ... @@ -209,21 +209,21 @@ const keyword = (req, res, next) => {
return req.ctx(search).getSearchKeywordData(Object.assign(params, {query: query}),
req.yoho.channel).then(result => {
Object.assign(resData, result, {
pageNoFollow: true,
title: `${query}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${query},${query}价格,${query}图片,${query}怎么样,${query}品牌,YOHO!BUY有货`,
description: `YOHO!BUY有货网yohobuy.com是国内专业的${query}网上潮流购物商城,为您找到${_.get(result,
Object.assign(resData, result, {
pageNoFollow: true,
title: `${query}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${query},${query}价格,${query}图片,${query}怎么样,${query}品牌,YOHO!BUY有货`,
description: `YOHO!BUY有货网yohobuy.com是国内专业的${query}网上潮流购物商城,为您找到${_.get(result,
'search.totalCount', 0)}${query}、产品的详细参数,实时报价,价格行情,图片、评价、品牌等信息。买${query},就上YOHO!BUY有货`
});
});
if (!_.get(resData, 'search.goods') || !_.get(resData, 'search.goods').length) {
_.set(resData, 'search.keyWord', query);
return res.render('search/no-result', resData);
}
res.render('search/index', resData);
if (!_.get(resData, 'search.goods') || !_.get(resData, 'search.goods').length) {
_.set(resData, 'search.keyWord', query);
return res.render('search/no-result', resData);
}
res.render('search/index', resData);
}).catch(next);
}).catch(next);
};
/**
... ... @@ -239,29 +239,29 @@ const keyId = (req, res, next) => {
return req.ctx(search).getSearchKeywordDataById(id, Object.assign({stocknumber: -1}, params),
req.yoho.channel).then(result => {
if (!result) {
return next();
}
if (!result) {
return next();
}
let query = result.queryKey;
let query = result.queryKey;
Object.assign(result, {
pageNoFollow: true,
title: `${query}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${query},${query}价格,${query}图片,${query}怎么样,${query}品牌,YOHO!BUY有货`,
description: `YOHO!BUY有货网yohobuy.com是国内专业的${query}网上潮流购物商城,为您找到${_.get(result,
Object.assign(result, {
pageNoFollow: true,
title: `${query}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${query},${query}价格,${query}图片,${query}怎么样,${query}品牌,YOHO!BUY有货`,
description: `YOHO!BUY有货网yohobuy.com是国内专业的${query}网上潮流购物商城,为您找到${_.get(result,
'search.totalCount', 0)}${query}、产品的详细参数,实时报价,价格行情,图片、评价、品牌等信息。买${query},就上YOHO!BUY有货`,
pageFooterSeo: {
description: `YOHO!BUY有货网yohobuy.com是国内专业的<b>${query}</b>网上潮流购物商城,为您找到<b>${_.get(result,
pageFooterSeo: {
description: `YOHO!BUY有货网yohobuy.com是国内专业的<b>${query}</b>网上潮流购物商城,为您找到<b>${_.get(result,
'search.totalCount', 0)}</b>条<b>${query}</b>、产品的详细参数,实时报价,价格行情,图片、评价、品牌等信息。买<b>` +
`${query}</b>,就上YOHO!BUY有货!`,
queryKey: query,
wapUrl: helpers.urlFormat(`/chanpin/${id}.html`, null, 'm')
}
});
queryKey: query,
wapUrl: helpers.urlFormat(`/chanpin/${id}.html`, null, 'm')
}
});
res.render('search/index', result);
}).catch(next);
res.render('search/index', result);
}).catch(next);
};
module.exports = {
... ...
... ... @@ -292,7 +292,7 @@ const getHotKeywordsSeo = (keyword, num) => {
return {
title: `${keyword}_${keyword}【图片,新款,价格,折扣,搭配】-YOHO!BUY有货`,
keywords: keyword,
description: `YOHO!BUY有货网是国内专业的【${keyword}】网上潮流购物商城,为您找到${num}条【${keyword}】产品的品牌、图片、款式、价格、折扣等信息。买正品【${keyword},就上YOHO!BUY有货!` // eslint-disable-line
description: `YOHO!BUY 有货网是国内专业的${keyword}网上潮流购物商城,为您找到${num}${keyword}产品的品牌、图片、款式、价格、折扣等信息。买正品${keyword},就上YOHO!BUY有货!` // eslint-disable-line
};
};
... ...
... ... @@ -26,6 +26,13 @@ const _setHotKeywordData = (result, params, channel) => {
// 获取商品数据和顶部筛选条件
if (result[1].code === 200) {
let data = result[1].data;
let goodsList = productProcess.processProductList(data.product_list,
Object.assign({showDiscount: false, from: {type: 'hot', params: params}}, params));
goodsList.map(goods => {
goods.productTitle = `${params.query}|${goods.product_name}`;
return goods;
});
Object.assign(finalResult,
searchHandler.handlePathNavData({total: data.total}, params, 'search', channel),
... ... @@ -34,8 +41,7 @@ const _setHotKeywordData = (result, params, channel) => {
opts: searchHandler.handleOptsData(changeQuery, data.total),
totalCount: data.total,
footPager: searchHandler.handlePagerData(data.total, changeQuery),
goods: productProcess.processProductList(data.product_list,
Object.assign({showDiscount: false, from: {type: 'hot', params: params}}, params)),
goods: goodsList,
hasNextPage: searchHandler.handleNextPage(changeQuery, data.total)
}
}
... ... @@ -58,8 +64,12 @@ const _setHotKeywordData = (result, params, channel) => {
finalResult.latestWalkExtra = [{
extraTabName: '相关推荐',
active: true,
extraGoodsList: productProcess.processProductList(data.product_list,
Object.assign({showDiscount: false, from: {type: 'hot', params: params}}, params))
}, {
extraTabName: '最近预览',
latestWalk: 5
}];
}
... ... @@ -96,7 +106,7 @@ module.exports = class extends global.yoho.BaseModel {
searchParams.need_filter = 'yes';
return Promise.all([
headerModel.requestHeaderData(channel),
headerModel.requestHeaderData(channel, true),
this.searchApi.getSeoProductList(searchParams, 'fuzzySearch'),
this.searchApi.getSeoProductList(Object.assign(searchParams, {
order: 's_n_desc',
... ... @@ -130,15 +140,15 @@ module.exports = class extends global.yoho.BaseModel {
val.href = helpers.urlFormat(`/hot/${val.id}.html`);
return val;
});
let seoTDK = seoHandler.getHotKeywordsSeo(keyword.name, _.get(result, 'product.totalCount', '多'));
hotKeys = _.chunk(hotKeys, 6);
keyword.list = hotKeys[0];
keyword.list = _.take(hotKeys, 6);
keyword.describe = keyword.describe || seoTDK.description;
Object.assign(result, {
hotKeys: hotKeys[1],
keyword: keyword,
latestWalk: 5
}, seoHandler.getHotKeywordsSeo(keyword.name, _.get(result, 'product.totalCount', '多')));
hotKeys: _.drop(hotKeys, 6),
keyword: keyword
}, seoTDK);
return result;
});
... ...
<div class="yoho-page seo-hot-page product-list-page">
<div class="yoho-page product-page seo-hot-page product-list-page">
{{> common/path-nav}}
<div class="clearfix">
... ... @@ -7,22 +7,22 @@
{{# keyword}}
<div class="sort-intro">
<div class="inline">
<p class="name">
<span class="cn">{{name}}</span>
<div class="name">
<h1 class="cn">{{name}}</h1>
{{# nameEn}}<span class="en">{{.}}</span>{{/ nameEn}}
</p>
</div>
{{# describe}}<p class="desc">{{.}}</p>{{/ describe}}
{{#if list}}
<ul class="key">
{{# list}}
<li><a href="{{href}}">{{keyword}}</a></li>
<li><a href="{{href}}" title="{{keyword}}">{{keyword}}</a></li>
{{/ list}}
</ul>
{{/if}}
</div>
</div>
<img class="thumb" src="{{image2 goods_img}}">
<img class="thumb" src="{{image2 goods_img}}" alt="{{name}}">
{{/ keyword}}
</div>
... ... @@ -34,16 +34,16 @@
<div class="right-content">
{{#if hotKeys}}
<div class="hot-block">
<p class="title">热门关键词</p>
<h3 class="title">热门关键词</h3>
<p class="hot-key">
{{# hotKeys}}
<a href="{{href}}">{{keyword}}</a>
<a href="{{href}}" title="{{keyword}}">{{keyword}}</a>
{{/ hotKeys}}
</p>
</div>
{{/if}}
<div class="hot-block">
<p class="title">热门品牌</p>
<h3 class="title">热门品牌</h3>
{{# hotBrands}}
<a href="{{href}}" class="brand-item" target="_blank" title="{{brand_name_cn}}">
... ...
... ... @@ -8,7 +8,7 @@
{{/if}}
{{# latestWalkExtra}}
<span class="tab-item extra-tab-item" data-key="{{@index}}">{{extraTabName}}</span>
<span class="tab-item extra-tab-item{{#if active}} bottom-cur{{/if}}" data-key="{{@index}}">{{extraTabName}}</span>
{{/ latestWalkExtra}}
<div class="bottom-line"></div>
</div>
... ... @@ -44,23 +44,45 @@
{{/if}}
{{# latestWalkExtra}}
<div class="latest-walk-extra-area extra-area-{{@index}}">
<div class="goods clearfix">
{{# extraGoodsList}}
<div class="good">
<a href="{{url}}" target="_blank" title="{{product_name}}">
<img class="lazy" data-original="{{image2 thumb w=280 h=382}}" alt="{{product_name}}" />
</a>
<a class="name" href="{{url}}" target="_blank">{{product_name}}</a>
<p class="price">
{{#if market_price}}
<span class="market-price">¥{{round market_price 2}}</span>
{{/ if}}
<span class="sale-price">¥{{round sales_price 2}}</span>
<div class="latest-walk-extra-area extra-area-{{@index}}{{#if active}} active{{/if}}">
{{#if extraGoodsList}}
<div class="goods clearfix">
{{# extraGoodsList}}
<div class="good">
<a href="{{url}}" target="_blank" title="{{product_name}}">
<img class="lazy" data-original="{{image2 thumb w=280 h=382}}" alt="{{product_name}}" />
</a>
<a class="name" href="{{url}}" target="_blank">{{product_name}}</a>
<p class="price">
{{#if market_price}}
<span class="market-price">¥{{round market_price 2}}</span>
{{/ if}}
<span class="sale-price">¥{{round sales_price 2}}</span>
</p>
</div>
{{/ extraGoodsList}}
</div>
{{/if}}
{{#if latestWalk}}
<div class="latest-walk-area">
<input id="latest-walk-count" type="hidden" value="{{latestWalk}}">
<div class="latest-walk">
<div id="latest-walk-goods" class="goods clearfix"></div>
<p class="null-data">
无最近浏览的商品
</p>
</div>
{{/ extraGoodsList}}
</div>
{{> product/latest-walk-tpl}}
<div class="lazy-load-object">
<textarea class="latest-walk-datalazyload" style="visibility: hidden;">
<script> fetchLatestWalk(); </script>
</textarea>
</div>
</div>
{{/if}}
</div>
{{/ latestWalkExtra}}
</div>
... ...
{
"name": "yohobuy-node",
"version": "6.5.24",
"version": "6.6.0",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ... @@ -74,7 +74,7 @@
"css-loader": "^0.28.11",
"cssnano": "^3.10.0",
"eslint": "^4.19.1",
"eslint-config-yoho": "^1.0.9",
"eslint-config-yoho": "1.0.9",
"eslint-loader": "^1.6.3",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"handlebars": "4.0.5",
... ... @@ -101,7 +101,7 @@
"shelljs": "^0.8.1",
"style-loader": "^0.21.0",
"stylelint": "^9.2.0",
"stylelint-config-yoho": "^1.3.0",
"stylelint-config-yoho": "1.3.0",
"stylelint-formatter-table": "^1.0.3",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.15",
... ...
... ... @@ -127,6 +127,10 @@
display: none;
}
.active {
display: block;
}
.goods {
width: 110%;
height: auto;
... ...