解决方法:
1、找到util/util.js添加方法:
然后最下边的module.exports添加一行
- //时间戳转换
- 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;
- }
- formatStampTime:formatStampTime,
2、找到app.js添加方法get_siteinfo,该方法主要是为了获取网站后台设置的关键字,描述等信息
3、在所有页面的onLoad方法里边添加一行:
- /**
- * 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")
- }
- })
- }
- })
- },
这句话的意思是每个页面都会自动调用站点信息,优先通过缓存调用,缓存不存在则读取接口,保证站点信息可以读取到
- app.get_siteinfo().then(function (data) { })//获取站点信息
4、设置每个页面的SEO方法
(1)首页index.js
- 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
前面的调用方式为:
- 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方法里边了
- //设置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))
- 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:
- //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();)
- /**
- * 百度小程序的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
onshow添加调用:that.seo(tag);
- that.getTagArcList(tag,page);//获取tag的文章列表
- /**
- * 百度小程序的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);
- }
- })
- },