由于之前的版本没有处理web化关键词设置这一块,所以造成之前的版本web化之后没有出现关键词描述等情况,所以专门优化了一下
解决方法:
1、找到util/util.js添加方法:
code腾石建站
//时间戳转换
function formatStampTime(number, format) {
var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
var returnArr = [];
number = number.length == 11 ? number*1000 : number;
var date = new Date(number);
returnArr.push(date.getFullYear());
returnArr.push(formatNumber(date.getMonth() + 1));
returnArr.push(formatNumber(date.getDate()));
returnArr.push(formatNumber(date.getHours()));
returnArr.push(formatNumber(date.getMinutes()));
returnArr.push(formatNumber(date.getSeconds()));
for (var i in returnArr) {
format = format.replace(formateArr[i], returnArr[i]);
}
return format;
}
然后最下边的module.exports添加一行
code腾石建站
formatStampTime:formatStampTime,
2、找到app.js添加方法get_siteinfo,该方法主要是为了获取网站后台设置的关键字,描述等信息
code腾石建站
/**
* promise方式获取系统设置缓存(推荐使用)
* 获取之前会先判断缓存是否存在或者是否需要更新,否则直接读取缓存,减少请求
*/
get_siteinfo(e) {
var that = this;
var siteinfo = swan.getStorageSync('siteinfo')
return new Promise(function (resolve, reject) {
if (siteinfo != '' || siteinfo.length != 0) {
resolve(siteinfo);
} else {
swan.request({
url: that.globalData.api + "site",
data: {
aid: that.globalData.aid
},
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded', // 默认值
'x-safecode': that.globalData.safecode
},
success: function (res) {
console.log(res)
let siteinfo = res.data.data;
try {
swan.setStorageSync('siteinfo', siteinfo)
} catch (e) {
}
resolve(siteinfo);
console.log("promise读取siteinfo")
}
})
}
})
},
3、在所有页面的onLoad方法里边添加一行:
code腾石建站
app.get_siteinfo().then(function (data) { })//获取站点信息
这句话的意思是每个页面都会自动调用站点信息,优先通过缓存调用,缓存不存在则读取接口,保证站点信息可以读取到
4、设置每个页面的SEO方法
(1)首页index.js
code腾石建站
seo(e) {
var that = this;
var siteinfo = swan.getStorageSync('siteinfo'); //系统站点配置
swan.setPageInfo && swan.setPageInfo({
title: app.globalData.appname, //小程序名称
keywords: siteinfo.keywords, //后台设置的关键词
description: siteinfo.description, //后台设置的描述
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
success: function () {
console.log('setPageInfo success');
},
fail: function (err) {
console.log('setPageInfo fail', err);
}
})
},
(2)列表页list.js和pages.js
code腾石建站
seo(scode) {
var that = this;
var scode = scode || that.data.scode;
var CATEGORYS = swan.getStorageSync('categorys') //调用栏目缓存
var siteinfo = swan.getStorageSync('siteinfo'); //系统站点配置
let seotitle = CATEGORYS[scode]['title']; //栏目标题
let seokeywords = CATEGORYS[scode]['keywords']; //栏目关键词
let seodescription = CATEGORYS[scode]['description']; //栏目描述
if (seotitle == "") {
seotitle = CATEGORYS[scode]['name'];//没有设置调用栏目名称
}
if (seokeywords == "") {
seokeywords = siteinfo.keywords;//如果没有设置则调用全站关键词
}
if (seodescription == "") {
seodescription = siteinfo.description;//如果没有设置则调用全站描述
}
swan.setPageInfo && swan.setPageInfo({
title: seotitle + " - " + app.globalData.appname,
keywords: seokeywords,
description: seodescription,
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
success: function () {
console.log('setPageInfo success');
},
fail: function (err) {
console.log('setPageInfo fail', err);
}
})
},
前面的调用方式为:
that.seo(scode);//需要传递栏目id
(3)show.js,show页面的seo方法是存到了getInfo方法里边了
code腾石建站
//设置WEB化SEO标题
var image = content.ico ? content.ico : '/images/share.jpg';
swan.setPageInfo && swan.setPageInfo({
title: content.title + " - " + CATEGORYS[scode]['name'] + " - " + app.globalData.appname, //标题+栏目+小程序名称
keywords: content.keywords, //文章关键词
description: content.description, //文章描述
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
image: [image],
articleTitle: content.title,
success: function () {
console.log('setPageInfo success');
},
fail: function (err) {
console.log('setPageInfo fail', err);
}
})
(4)其他页面,search,tag formguide这些都可以固定死了
search.js:(onshow里边调用方式that.seo(q))
code腾石建站
seo(q) {
var that = this;
var siteinfo = swan.getStorageSync('siteinfo'); //系统站点配置
swan.setPageInfo && swan.setPageInfo({
title: q + "-" + app.globalData.appname, //关键词+小程序名称
keywords: q, //关键词
description: q, //关键词
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
success: function () {
console.log('setPageInfo success');
},
fail: function (err) {
console.log('setPageInfo fail', err);
}
})
},
formguide.js:
code腾石建站
//SEO标题(通过web化查看)
swan.setPageInfo && swan.setPageInfo({
title: '自定义表单 - ' + app.globalData.appname,
keywords: app.globalData.appname,
description: app.globalData.appname,
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
success: function () {
console.log('页面基础信息设置完成');
},
fail: function () {
console.log("失败")
}
tag/index.js(首先在onshow里边添加调用:that.seo();)
code腾石建站
/**
* 百度小程序的SEO设置,通过web化页面的审查元素(F12)查看
*/
seo(e) {
var that = this;
var siteinfo = swan.getStorageSync('siteinfo'); //系统站点配置
swan.setPageInfo && swan.setPageInfo({
title: "tags -" + app.globalData.appname,
keywords: "tags",
description: "tags",
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
success: function () {
console.log('setPageInfo success');
},
fail: function (err) {
console.log('setPageInfo fail', err);
}
})
},
tag/tag.js
code腾石建站
that.getTagArcList(tag,page);//获取tag的文章列表
onshow添加调用:that.seo(tag);
code腾石建站
/**
* 百度小程序的SEO设置,通过web化页面的审查元素(F12)查看
*/
seo(tag) {
var that = this;
var siteinfo = swan.getStorageSync('siteinfo'); //系统站点配置
swan.setPageInfo && swan.setPageInfo({
title: tag + "-" + app.globalData.appname,
keywords: tag,
description: tag,
releaseDate: util.formatStampTime(new Date(), 'Y-M-D h:m:s'),
success: function () {
console.log('setPageInfo success');
},
fail: function (err) {
console.log('setPageInfo fail', err);
}
})
},