Authored by 刘传洋

Merge remote-tracking branch 'remotes/origin/feature/guang' into release/5.1

... ... @@ -29,14 +29,15 @@ exports.index = (req, res, next) => {
Promise.all([
guangModel.getBanner(channel),
guangModel.getCategory(type),
guangModel.getArticleList(gender, type, uid, udid, page, '', '', pageSize),
guangModel.getHotTags(page, pageSize),
guangModel.getCategory(type, channel),
guangModel.getArticleList(gender, type, uid, udid, page, '', '', pageSize, channel, true),
guangModel.getHotTags(page, pageSize, channel),
guangModel.getAds(channel),
guangModel.getRecoArticles(gender, 1, 10),
guangModel.getRecoArticles(gender, 1, 10, channel),
headerModel.requestHeaderData(channel)
]).then(ret => {
res.render('guang/index', {
title: '逛' + (res.locals.title || ''),
guang: {
slider: ret[0],
msgTypes: ret[1],
... ... @@ -55,7 +56,7 @@ exports.index = (req, res, next) => {
},
module: 'guang',
page: 'guang',
headerData: ret[6].headerData
headerData: ret[6] && ret[6].headerData
});
}).catch(next);
... ... @@ -80,10 +81,10 @@ exports.tags = (req, res, next) => {
Promise.all([
guangModel.getBanner(channel),
guangModel.getArticleList(gender, 0, uid, udid, page, query, '', pageSize),
guangModel.getHotTags(1, 20),
guangModel.getArticleList(gender, 0, uid, udid, page, query, '', pageSize, channel, true),
guangModel.getHotTags(1, 20, channel),
guangModel.getAds(channel),
guangModel.getRecoArticles(gender, 1, 10),
guangModel.getRecoArticles(gender, 1, 10, channel),
headerModel.requestHeaderData(channel)
]).then(ret => {
... ... @@ -107,7 +108,7 @@ exports.tags = (req, res, next) => {
},
module: 'guang',
page: 'list',
headerData: ret[5].headerData
headerData: ret[5] && ret[5].headerData
});
}).catch(next);
};
... ... @@ -131,14 +132,14 @@ exports.editor = (req, res, next) => {
Promise.all([
guangModel.getAuthor(authorId),
guangModel.getArticleList(gender, null, uid, udid, page, '', authorId, pageSize),
guangModel.getHotTags(1, 20),
guangModel.getArticleList(gender, null, uid, udid, page, '', authorId, pageSize, channel, true),
guangModel.getHotTags(1, 20, channel),
guangModel.getAds(channel),
guangModel.getRecoArticles(gender, 1, 10),
guangModel.getRecoArticles(gender, 1, 10, channel),
headerModel.requestHeaderData(channel)
]).then(ret => {
res.render('guang/editor', {
title: ret[0].name + (res.locals.title || ''),
title: _.get(ret[0], 'name', '') + (res.locals.title || ''),
guang: {
editor: ret[0],
msgs: ret[1] && ret[1].msgs,
... ... @@ -155,7 +156,7 @@ exports.editor = (req, res, next) => {
},
module: 'guang',
page: 'list',
headerData: ret[5].headerData
headerData: ret[5] && ret[5].headerData
});
}).catch(next);
};
... ... @@ -201,7 +202,7 @@ exports.detail = (req, res, next) => {
guangModel.collectArticle(id, uid);
}
guangModel.getArticleInfo(id).then(info => {
guangModel.getArticleInfo(id, channel).then(info => {
// 判断参数是否有效, 无效会跳转到错误页面
if (!info || !info.title) {
... ... @@ -211,11 +212,11 @@ exports.detail = (req, res, next) => {
let promises = [
headerModel.requestHeaderData(channel),
guangModel.getArticleContent(id),
guangModel.getHotTags(1, 20),
guangModel.getHotTags(1, 20, channel),
guangModel.getArticleComments(id, page, pageSize),
guangModel.getArticleBaseInfo(id, uid, udid),
guangModel.getArticleRelateBrand(id),
guangModel.getRecoArticles(gender, 1, 10),
guangModel.getRecoArticles(gender, 1, 10, channel),
guangModel.getAds(channel)
];
... ... @@ -226,7 +227,7 @@ exports.detail = (req, res, next) => {
}
if (info.tag) {
promises.push(guangModel.getRelateArticleList(id, info.tag, 2));
promises.push(guangModel.getRelateArticleList(id, info.tag, 2, channel));
} else {
promises.push({});
}
... ... @@ -238,13 +239,13 @@ exports.detail = (req, res, next) => {
res.render('guang/detail', Object.assign({
module: 'guang',
page: 'detail',
headerData: ret[0].headerData,
headerData: ret[0] && ret[0].headerData,
guang: {
pathNav: pathNav,
id: id,
header: Object.assign({}, info, info.authorId && ret[8] || {},
{ commentNum: (ret[3] && ret[3].commentNum) || 0 }),
header: Object.assign({}, info, ret[8] || {},
{ commentNum: _.get(ret[3], 'commentNum', 0) }),
content: ret[1],
hotTags: ret[2],
comment: ret[3],
... ... @@ -253,7 +254,7 @@ exports.detail = (req, res, next) => {
brands: ret[5],
tag: info.tags,
relatedPost: ret[9].length ? ret[9] : false,
relatedPost: (ret[9] && ret[9].length) ? ret[9] : false,
exRecos: ret[6],
ads: ret[7],
... ...
... ... @@ -17,8 +17,7 @@ const helpers = global.yoho.helpers;
const getGenderByCookie = (req) => {
let gender = null;
let channel = req.cookies._Channel || 'boys';
let channel = req.yoho.channel;
switch (channel) {
case 'boys':
... ... @@ -65,7 +64,7 @@ const getUdid = (req, res) => {
* @param type id 产品编号
* @return type url
*/
const getArticleUrl = (url, id) => {
const getArticleUrl = (url, id, channel) => {
/* 格式由url:{url:'aaa'} 更改为 url: 'aaa'
try {
... ... @@ -80,7 +79,13 @@ const getArticleUrl = (url, id) => {
return url;
}
return helpers.urlFormat(`/${id}.html`, null, 'guang');
let param = {};
if (channel) {
param.channel = channel;
}
return helpers.urlFormat(`/${id}.html`, param, 'guang');
};
module.exports = {
... ...
... ... @@ -75,13 +75,20 @@ const getPathNav = (channelType, query) => {
return query ? _.concat(path, [{ name: query, pathTitle: query}]) : path;
};
const _formatTag = (tagData) => {
let name = tagData.name;
const _formatTag = (tagData, channel) => {
let name = tagData.name,
param = {
query: name
};
if (channel) {
param.channel = channel;
}
return {
tag: name,
name: name,
url: helpers.urlFormat('/tags/index', {query: name}, 'guang')
url: helpers.urlFormat('/tags/index', param, 'guang')
};
};
... ... @@ -93,7 +100,7 @@ const _formatTag = (tagData) => {
* @param bool $showAuthor 控制是否显示作者信息
* @return array | false
*/
const _formatArticle = (articleData, showTag, showAuthor) => {
const _formatArticle = (articleData, showTag, showAuthor, channel) => {
// 资讯ID不存在,则不显示
if (!articleData || !articleData.id) {
... ... @@ -105,7 +112,7 @@ const _formatArticle = (articleData, showTag, showAuthor) => {
isSquareImage = true;
if (articleData.conver_image_type === 2) {
if (Number(articleData.conver_image_type) === 2) {
width = 360;
height = 240;
isSquareImage = false;
... ... @@ -115,7 +122,7 @@ const _formatArticle = (articleData, showTag, showAuthor) => {
id: articleData.id,
classification: articleData.category_name,
isReco: articleData.is_recommended ? true : false,
url: ghelper.getArticleUrl(articleData.url, articleData.id),
url: ghelper.getArticleUrl(articleData.url, articleData.id, channel),
img: helpers.image(articleData.src, width, height, 1),
isSquareImg: isSquareImage,
title: articleData.title,
... ... @@ -138,7 +145,15 @@ const _formatArticle = (articleData, showTag, showAuthor) => {
let authorId = articleData.author.author_id;
if (authorId) {
result.editorUrl = helpers.urlFormat('/Index/editor', {author_id: authorId}, 'guang');
let aparam = {
author_id: authorId
};
if (channel) {
aparam.channel = channel;
}
result.editorUrl = helpers.urlFormat('/Index/editor', aparam, 'guang');
}
let tags = [];
... ... @@ -147,7 +162,7 @@ const _formatArticle = (articleData, showTag, showAuthor) => {
let aTags = articleData.tags;
for (let i = 0; i < aTags.length; i++) {
tags.push(_formatTag(aTags[i]));
tags.push(_formatTag(aTags[i], channel));
}
}
... ... @@ -191,11 +206,23 @@ const _formatArticle = (articleData, showTag, showAuthor) => {
return result;
};
const _formatAd = (adData) => {
const _formatAd = (adData, channel) => {
if (!adData) {
return null;
}
let param = {
id: adData.id
};
if (channel) {
param.channel = channel;
}
return {
img: helpers.image(adData.src, 640, 640),
url: helpers.urlFormat('/info/index', {id: adData.id}, 'guang'),
url: helpers.urlFormat('/info/index', param, 'guang'),
title: adData.title,
bgColor: adData.bgColor
};
... ... @@ -206,7 +233,7 @@ const _formatAd = (adData) => {
* @param {String} channelType 传入频道页类型,值可以是: boys, girls, kids, lifestyle
* @return {Object}
*/
const getArticleList = (gender, sortId, uid, udid, page, tag, authorId, limit, useCache) => {
const getArticleList = (gender, sortId, uid, udid, page, tag, authorId, limit, channel, useCache) => {
uid = uid || 0;
udid = udid || '';
... ... @@ -229,7 +256,7 @@ const getArticleList = (gender, sortId, uid, udid, page, tag, authorId, limit, u
param.tag = tag;
}
if (_.isNumber(authorId)) {
if (authorId && Number(authorId)) {
param.author_id = authorId;
}
... ... @@ -255,11 +282,11 @@ const getArticleList = (gender, sortId, uid, udid, page, tag, authorId, limit, u
let list = res.data.list;
if (list.artList) {
artList = _.map(list.artList, it => _formatArticle(it, true, false));
artList = _.map(list.artList, it => _formatArticle(it, true, false, channel));
}
if (list.adlist) {
adsList = _.map(list.artList, it => _formatAd(it));
adsList = _.map(list.artList, it => _formatAd(it, channel));
}
}
... ... @@ -269,6 +296,7 @@ const getArticleList = (gender, sortId, uid, udid, page, tag, authorId, limit, u
total: total
};
}
return null;
});
};
... ... @@ -277,7 +305,7 @@ const getArticleList = (gender, sortId, uid, udid, page, tag, authorId, limit, u
* @param {String} type 传入频道页类型,值可以是: boys, girls, kids, lifestyle
* @return {Object}
*/
const getHotTags = (page, limit) => {
const getHotTags = (page, limit, channel) => {
let data = {
client_type: 'web',
... ... @@ -286,12 +314,20 @@ const getHotTags = (page, limit) => {
};
return serviceApi.get('guang/api/v2/article/getTagTop', data, {
cache: false
cache: true
}).then(res => {
return _.map((res && res.data) || [], it => {
let param = {
query: it.tag_name
};
if (channel) {
param.channel = channel;
}
return {
tagName: it.tag_name,
url: helpers.urlFormat('/tags/index', { query: it.tag_name}, 'guang')
url: helpers.urlFormat('/tags/index', param, 'guang')
};
});
});
... ... @@ -352,19 +388,29 @@ const getBanner = channelType => {
});
};
const getCategory = currentSortId => {
const getCategory = (currentSortId, channel) => {
currentSortId = currentSortId || 0;
return serviceApi.get('guang/api/v1/category/get', {}).then(res => {
return serviceApi.get('guang/api/v1/category/get', {}, {
cache: true
}).then(res => {
let list = [];
if (res && res.code === 200 && res.data) {
for (let cat of res.data) {
let param = {
type: cat.id
};
if (channel) {
param.channel = channel;
}
list.push({
typeId: cat.id,
type: cat.name,
isActive: ('' + cat.id) === ('' + currentSortId),
navUrl: helpers.urlFormat('/index/index', {type: cat.id}, 'guang')
isActive: String(cat.id) === String(currentSortId),
navUrl: helpers.urlFormat('/index/index', param, 'guang')
});
}
}
... ... @@ -376,7 +422,7 @@ const getCategory = currentSortId => {
/**
* 推荐文章
*/
const getRecoArticles = (gender, page, limit) => {
const getRecoArticles = (gender, page, limit, channel) => {
return serviceApi.get('guang/api/v2/article/getArticleByViewsNum', {
gender: gender,
... ... @@ -391,7 +437,7 @@ const getRecoArticles = (gender, page, limit) => {
let it = res.data[i];
let reco = {
url: ghelper.getArticleUrl(it.url, it.id),
url: ghelper.getArticleUrl(it.url, it.id, channel),
title: it.title
};
... ... @@ -434,7 +480,7 @@ const getAuthor = authorId => {
/**
* 获取文章基本信息,文章标题(不含内容)
*/
const getArticleInfo = aid => {
const getArticleInfo = (aid, channel) => {
return serviceApi.get('guang/service/v2/article/getArticle', {
article_id: aid
}, {cache: true}).then(res => {
... ... @@ -444,7 +490,7 @@ const getArticleInfo = aid => {
if (d.tags) {
for (let i = 0; i < d.tags.length; i++) {
tags.push(_formatTag(d.tags[i]));
tags.push(_formatTag(d.tags[i], channel));
}
}
... ... @@ -470,8 +516,8 @@ const _formatProduct = (products, arr) => {
let goods = {
thumb: helpers.image(val.default_images, 235, 314),
name: val.product_name,
salesPrice: val.sales_price,
product_name: val.product_name,
sales_price: val.sales_price,
url: helpers.getUrlBySkc(val.product_id, val.goods_list[0].goods_id, val.cn_alphabet)
};
... ... @@ -480,7 +526,7 @@ const _formatProduct = (products, arr) => {
}
_.forEach(arr, (v, k) => {
if (k === val.product_skn) {
if (Number(k) === Number(val.product_skn)) {
goods.thumb = helpers.image(v, 235, 314);
}
});
... ... @@ -500,7 +546,7 @@ const getProductList = (params, arr) => {
method: 'web.search.search',
order: 's_n_desc',
limit: 60
}, params)).then(ret => {
}, params), { cache: true }).then(ret => {
if (ret && ret.code === 200 && ret.data && ret.data.product_list) {
return _formatProduct(ret.data.product_list, arr);
}
... ... @@ -705,7 +751,7 @@ const getArticleRelateBrand = aid => {
* @param bool $onlyUrl
* @return mixed
*/
const getRelateArticleList = (aid, tag, size) => {
const getRelateArticleList = (aid, tag, size, channel) => {
size = size || 3;
return serviceApi.get('guang/service/v2/article/getOtherArticle', {
... ... @@ -716,7 +762,7 @@ const getRelateArticleList = (aid, tag, size) => {
if (res && res.code === 200 && res.data) {
return _.map(res.data, it => {
it.thumb = helpers.image(it.thumb, 264, 173, 1);
it.url = ghelper.getArticleUrl(it.url, it.id);
it.url = ghelper.getArticleUrl(it.url, it.id, channel);
return it;
});
}
... ... @@ -835,7 +881,7 @@ const cancelCollect = (aid, uid) => serviceApi.get('guang/api/v1/favorite/cancel
* @returns {Promise.<T>|*}
*/
const getDynamicDataById = (id, uid, udid) => {
return serviceApi.get('/gateway/guang/api/*/article/getArticlePraiseAndFavor', {
return serviceApi.get('guang/api/*/article/getArticlePraiseAndFavor', {
id: id,
uid: uid,
udid: udid
... ...
... ... @@ -96,7 +96,7 @@
<div class="article-bottom-info clearfix">
{{#if tag}}
<div class="article-tag clearfix">
<i class="tag-icon iconfont">&#xe624;</i>
<i class="tag-icon iconfont">&#xe630;</i>
<ul class="clearfix">
{{# tag}}
<li>
... ...
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1473148446'); /* IE9*/
src: url('iconfont.eot?t=1473148446#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff?t=1473148446') format('woff'), /* chrome, firefox */
url('iconfont.ttf?t=1473148446') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1473148446#iconfont') format('svg'); /* iOS 4.1- */
src: url('iconfont.eot?t=1476686940'); /* IE9*/
src: url('iconfont.eot?t=1476686940#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff?t=1476686940') format('woff'), /* chrome, firefox */
url('iconfont.ttf?t=1476686940') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1476686940#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
... ... @@ -16,6 +16,7 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-pinglun:before { content: "\e624"; }
.icon-jieshao:before { content: "\e62d"; }
.icon-zuosanjiao:before { content: "\e618"; }
.icon-yousanjiao:before { content: "\e619"; }
.icon-chevron-down:before { content: "\e60b"; }
... ... @@ -25,13 +26,17 @@
.icon-cha:before { content: "\e60d"; }
.icon-forbid:before { content: "\e61c"; }
.icon-left:before { content: "\e60e"; }
.icon-h:before { content: "\e62c"; }
.icon-sort:before { content: "\e614"; }
.icon-hot:before { content: "\e62e"; }
.icon-iconsj:before { content: "\e625"; }
.icon-search:before { content: "\e60f"; }
.icon-sanjiao2:before { content: "\e615"; }
.icon-sanjiao1:before { content: "\e610"; }
.icon-xiangyou:before { content: "\e608"; }
.icon-xiangzuo:before { content: "\e609"; }
.icon-closezhuanhuan:before { content: "\e62f"; }
.icon-biaoqian:before { content: "\e630"; }
.icon-wenhao:before { content: "\e620"; }
.icon-xiangxia:before { content: "\e61d"; }
.icon-dianhua:before { content: "\e621"; }
... ... @@ -45,13 +50,24 @@
.icon-zhengque:before { content: "\e622"; }
.icon-circle:before { content: "\e606"; }
.icon-eye:before { content: "\e627"; }
.icon-jian01:before { content: "\e631"; }
.icon-jia01:before { content: "\e632"; }
.icon-zhuyi:before { content: "\e633"; }
.icon-03tanhao:before { content: "\e61f"; }
.icon-xiajiang:before { content: "\e634"; }
.icon-home:before { content: "\e61a"; }
.icon-shoppingcard:before { content: "\e600"; }
.icon-checkboxchecked:before { content: "\e617"; }
.icon-dengluchenggongxiacibuzaitishi01:before { content: "\e635"; }
.icon-wujiaoxing:before { content: "\e623"; }
.icon-7xiaoche:before { content: "\e636"; }
.icon-123123123:before { content: "\e62a"; }
.icon-iconfontdengluchenggongxiacibuzaitishi01:before { content: "\e637"; }
.icon-zhengchang:before { content: "\e612"; }
.icon-weibiaoti7:before { content: "\e613"; }
.icon-say1:before { content: "\e602"; }
.icon-7t11:before { content: "\e603"; }
.icon-z:before { content: "\e604"; }
.icon-chahaoyuan:before { content: "\e629"; }
.icon-wenhao1:before { content: "\e628"; }
.icon-2:before { content: "\e62b"; }
... ...
No preview for this file type
... ... @@ -2,11 +2,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
<<<<<<< HEAD
Created by FontForge 20120731 at Tue Sep 6 15:54:06 2016
=======
Created by FontForge 20120731 at Wed Sep 21 17:18:20 2016
>>>>>>> remotes/origin/master
Created by FontForge 20120731 at Mon Oct 17 14:49:00 2016
By admin
</metadata>
<defs>
... ... @@ -20,14 +16,10 @@ Created by FontForge 20120731 at Wed Sep 21 17:18:20 2016
ascent="896"
descent="-128"
x-height="792"
bbox="0 -212 1158 896"
bbox="-0.75 -212 1160 896.75"
underline-thickness="50"
underline-position="-100"
<<<<<<< HEAD
unicode-range="U+0078-E627"
=======
unicode-range="U+0078-E62A"
>>>>>>> remotes/origin/master
unicode-range="U+0078-E637"
/>
<missing-glyph horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
... ... @@ -149,8 +141,6 @@ q0 -28 20 -48.5t49 -20.5h137v518h-137q-29 0 -49 -20.5t-20 -48.5zM0 379z" />
<glyph glyph-name="uniE627" unicode="&#xe627;" horiz-adv-x="1025"
d="M512 719q-167 0 -304.5 -89.5t-205.5 -236.5q-4 -9 0 -18q68 -147 205.5 -236.5t304.5 -89.5t304.5 89.5t205.5 236.5q4 9 0 18q-68 147 -205.5 236.5t-304.5 89.5zM512 153q-96 0 -163.5 67.5t-67.5 163.5t67.5 163.5t163.5 67.5t163.5 -67.5t67.5 -163.5t-67.5 -163.5
t-163.5 -67.5zM512 384zM364 384q0 61 43.5 104.5t104.5 43.5t104.5 -43.5t43.5 -104.5t-43.5 -104.5t-104.5 -43.5t-104.5 43.5t-43.5 104.5z" />
<<<<<<< HEAD
=======
<glyph glyph-name="uniE628" unicode="&#xe628;"
d="M512 886q-102 0 -195 -39.5t-160.5 -107t-107 -160.5t-39.5 -195t39.5 -195t107 -160.5t160.5 -107t195 -39.5t195 39.5t160.5 107t107 160.5t39.5 195t-39.5 195t-107 160.5t-160.5 107t-195 39.5zM521 -15q-34 0 -58.5 24t-24.5 58.5t24.5 58.5t58.5 24t58 -24t24 -58
q1 -34 -23.5 -58.5t-58.5 -24.5zM738 477q-17 -34 -67 -83q-45 -43 -60 -61q-12 -16 -17 -35q-6 -22 -6 -61l1 -31h-142v30q0 56 9 90q11 38 30 64q17 23 62 71q43 44 52 60q8 13 8 44q0 28 -20 51q-20 21 -61 21q-29 0 -48.5 -9.5t-28.5 -27.5t-12.5 -36t-3.5 -43v-30h-142
... ... @@ -160,6 +150,37 @@ d="M511 833q-91 0 -174 -36t-143 -96t-95.5 -143t-35.5 -174t35.5 -174t95.5 -143t14
t-34 14t-14 34t14 34l192 191l-192 192q-14 14 -14 34t14 34t34 14t34 -14l192 -192l192 192q14 14 33.5 14t34 -14t14.5 -34t-15 -34l-191 -192z" />
<glyph glyph-name="uniE62A" unicode="&#xe62a;"
d="M799 456l127 127v313h-830v-609l421 -413l409 404v181l-414 -401l-288 284v426h575v-312zM671 518l-107 22l-53 100l-52 -100l-108 -22l75 -83l-14 -114l99 49l99 -49l-14 114z" />
>>>>>>> remotes/origin/master
<glyph glyph-name="uniE62B" unicode="&#xe62b;"
d="M562 224h109v-111h-109v111zM889 224h109v-111h-109v111zM562 113h109v-110h-109v110zM438 458h-438v438h438v-438zM111 569h216v216h-216v-216zM1000 458h-438v438h438v-438zM673 569h216v216h-216v-216zM438 -106h-438v438h438v-438zM111 5h216v216h-216v-216zM561 335
h222v-111h-222v111zM889 334h109v-111h-109v111zM780 113h109v-111h-109v111zM562 2h218v-110h-218v110zM889 2h109v-110h-109v110z" />
<glyph glyph-name="uniE62C" unicode="&#xe62c;"
d="M512 769q-104 0 -192.5 -51.5t-140 -140t-51.5 -193t51.5 -193t140 -140t192.5 -51.5t192.5 51.5t140 140t51.5 193t-51.5 193t-140 140t-192.5 51.5zM660 181h-50v175h-196v-175h-50v395h50v-179h196v179h50v-395z" />
<glyph glyph-name="uniE62D" unicode="&#xe62d;" horiz-adv-x="1000"
d="M751 766q21 -20 34 -33t19.5 -22.5t8.5 -16t2 -10.5v-13h-119q-8 0 -14 6t-10 14t-6 16.5t-2 12.5v100h3q6 0 13 -2t15.5 -8t22 -16t33.5 -28zM614 720q0 -16 5 -33.5t15 -32t26 -24t38 -9.5h117v-451q0 -24 -9.5 -42t-24.5 -31t-33.5 -20t-35.5 -7h-394q-15 0 -33 8.5
t-33.5 23t-26 33t-10.5 38.5v543q0 17 7.5 35t21 33.5t30 25.5t35.5 10h305v-100zM664 221q21 0 35.5 14.5t14.5 35.5t-14.5 35.5t-35.5 14.5h-299q-21 0 -35.5 -14.5t-14.5 -35.5t14.5 -35.5t35.5 -14.5h299zM714 470q0 21 -14.5 36t-35.5 15h-299q-21 0 -35.5 -15
t-14.5 -36t14.5 -35t35.5 -14h299q21 0 35.5 14t14.5 35zM714 470z" />
<glyph glyph-name="uniE62E" unicode="&#xe62e;"
d="M154 770v-646h146l-14 -208l240 208h344v646h-716zM752 260h-134v159h-192v-159h-134v382h134v-148h192v148h134v-382z" />
<glyph glyph-name="uniE62F" unicode="&#xe62f;"
d="M866.5 747.5q-97.5 97.5 -228 132t-261.5 0t-228.5 -132t-132 -228.5t0 -261.5t132 -228t228.5 -132t261.5 0t228 132t132 228t0 261.5t-132 228.5zM798 199l-101 -101l-187 186l-186 -186l-101 101l186 186l-186 187l101 101l186 -186l187 186l101 -101l-186 -187z" />
<glyph glyph-name="uniE630" unicode="&#xe630;" horiz-adv-x="1025"
d="M1024 480v338q0 32 -23 55t-55 23h-331h-14q-55 0 -76 -21l-506 -506q-19 -19 -19 -46t19 -45l387 -387q18 -19 45 -19t46 19l506 506q10 10 15 25.5t5.5 26.5t0.5 31zM764 549q-36 0 -61.5 25.5t-25.5 61.5t25.5 61t61.5 25t61 -25t25 -61t-25 -61.5t-61 -25.5z" />
<glyph glyph-name="uniE631" unicode="&#xe631;"
d="M0 812v-1024h1024v1024h-1024zM983 -171h-942v942h942v-942zM288 280h448q9 0 15 6t6 14t-6 14t-15 6h-448q-9 0 -15 -6t-6 -14t6 -14t15 -6z" />
<glyph glyph-name="uniE632" unicode="&#xe632;"
d="M0 812v-1024h1024v1024h-1024zM983 -171h-942v942h942v-942zM288 280h204v-204q0 -9 6 -15t14 -6t14 6t6 15v204h204q9 0 15 6t6 14t-6 14t-15 6h-204v204q0 9 -6 15t-14 6t-14 -6t-6 -15v-204h-204q-9 0 -15 -6t-6 -14t6 -14t15 -6z" />
<glyph glyph-name="uniE633" unicode="&#xe633;"
d="M127 769v-770h770v770h-770zM555 170h-86v86h86v-86zM555 298h-86v257h86v-257z" />
<glyph glyph-name="uniE634" unicode="&#xe634;" horiz-adv-x="1025"
d="M491 6q9 -10 21.5 -10t21.5 10l357 407q9 10 5.5 17.5t-17.5 7.5h-133q-14 0 -23.5 9.5t-9.5 22.5v261q0 13 -10 22.5t-24 9.5h-333q-14 0 -24 -9.5t-10 -22.5v-261q0 -13 -9.5 -22.5t-23.5 -9.5h-133q-14 0 -17.5 -7.5t5.5 -17.5z" />
<glyph glyph-name="uniE635" unicode="&#xe635;"
d="M958 758q0 30 -21 51.5t-51 21.5h-749q-30 0 -51 -21.5t-21 -51.5v-748q0 -30 21 -51t51 -21h749q30 0 51 21t21 51v748zM778 454l-267 -267q-14 -14 -34 -14t-34 14l-168 168q-14 14 -14 34t14 34.5t34 14.5t34 -15l134 -133l233 232q14 14 34 14t34 -14t14 -34t-14 -34
z" />
<glyph glyph-name="uniE636" unicode="&#xe636;" horiz-adv-x="1163"
d="M295 196q67 0 114 -47t47 -113.5t-47 -114t-114 -47.5t-114 47.5t-47 114t47 113.5t114 47zM917.5 196q66.5 0 113.5 -47t47 -113.5t-47 -114t-113.5 -47.5t-114 47.5t-47.5 114t47.5 113.5t114 47zM400 894v-99h-210v0l-187 -294v-372h95q27 56 80 90.5t117 34.5
t117 -34.5t80 -90.5h228q27 56 80 90.5t117.5 34.5t117.5 -34.5t79 -90.5h46v765h-760zM400 452h-283l159 250l124 1v-251v0zM893 701l-131 -276l-63 31l101 206h-105v68h198v-29v0z" />
<glyph glyph-name="uniE637" unicode="&#xe637;"
d="M1020 810q0 34 -24 58t-59 24h-851q-34 0 -58.5 -24t-24.5 -58v-852q0 -34 24.5 -58t58.5 -24h851q35 0 59 24t24 58v852zM815 464l-304 -304q-16 -16 -38.5 -16t-38.5 16l-191 191q-17 16 -17 39t16.5 39t39 16t38.5 -16l153 -152l264 264q16 16 39 16t39 -16t16 -38.5
t-16 -38.5z" />
</font>
</defs></svg>
... ...
No preview for this file type
No preview for this file type
... ... @@ -14,7 +14,7 @@
margin: 15px 0;
}
.excellent-recommendation-title {
.excellent-recommendation-title {
margin-top: 4px;
}
... ... @@ -498,6 +498,10 @@
.good-detail-text > .price {
margin-top: 0;
}
.good-detail-text .brand{
margin-right:0;
margin-bottom:0;
}
}
}
... ...