javascript - 如何使用 sitemap.js?

标签 javascript node.js sails.js

我安装了 Node 模块sitemap.js为我的网站生成 sitemap.xml。然而,我对 node/express/sails 相当陌生,所以我不太理解 git 页面上的说明。在“用法”部分下,该代码应该放在哪里?如何执行该模块以便生成 xml?

最佳答案

显然这是针对我的表格的,但这就是我创建静态的方式(我使用 cron 每周更新一次)sitemap.xml 使用 站点地图

'use strict';

var sm = require('sitemap')
var fs = require('fs');

var photoModel = require('../../models/photo');
var db  = require('../../models/db');

var config = require('../../config');

var hostname = config.siteUrl

var queryParams = {
    active: 1,
    sortOrder: 'desc',
    sortBy: 'relevance',
}

var photoQuery = db.rawSQL([
    'SELECT img_id, tags',
    'FROM images',
    'WHERE active = 1'
]);

function createSiteMap(myURLs) {
    var sitemap = sm.createSitemap({
        hostname: hostname,
        cacheTime: 600000,  //600 sec (10 min) cache purge period 
        urls: myURLs
        });
    fs.writeFileSync("public/sitemap.xml", sitemap.toString());    
    process.exit();
}

function uniq(a) {
    var seen = {};
    return a.filter(function(item) {
        return seen.hasOwnProperty(item) ? false : (seen[item] = true);
    });
}

function getPhotos() {
    return new Promise(function(resolve, reject) {
        var siteMapArray = new Array()
        var tags = new Array()
        siteMapArray.push ({ url: '/' , changefreq: 'weekly', priority: 0.8, lastmodrealtime: true, lastmodfile: 'views/home.hbs' },)
        db.sequelize.query(photoQuery, {
            replacements: queryParams
        }).spread(function(makeSiteMap) {
            makeSiteMap.forEach(function(obj) {
                var siteLink = { url: 'photo/' + obj.img_id, changefreq: 'weekly', priority: 0.6, lastmodrealtime: true }
                siteMapArray.push(siteLink);
                obj.tags = obj.tags.split(',').map(function(e) {
                    return e.trim().split(' ').join('+');
                });
                for (var tag in obj.tags) {
                    tags.push(obj.tags[tag])
                }
            });

            resolve (siteMapArray);

            var uniqueTags = uniq(tags);
            for (var tag in uniqueTags) {
                var siteLink = { url: '/search/' + uniqueTags[tag], changefreq: 'weekly', priority: 0.8, lastmodrealtime: true }
                siteMapArray.push (siteLink);
            }

            createSiteMap(siteMapArray);

        });
    });
};

getPhotos();

关于javascript - 如何使用 sitemap.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26493391/

相关文章:

javascript - Django - 根据下拉菜单更改发送表单的路由

node.js - SpyOn Controller 中的快速路由处理函数

javascript - 将任意种子转换为 0 到 1 之间的 float

javascript - 监视服务器上的文件夹以查找要压缩的新图像

javascript - 如何从节点和链接列表创建 d3 径向树?

javascript - 获取每个地点的 10 条最新评论

node.js - 使用 Array 进行 MongoDB 正则表达式搜索

javascript - Sails.js 不起作用,无法识别 'sails'

socket.io - Sails 0.11 从服务器端捕获套接字事件

javascript - jQuery 多类函数