javascript - 创建一个meteor.js站点地图

标签 javascript meteor

站点地图很酷。如果我想要一个用于我的 meteor 项目,我想我可以执行以下操作之一:

  1. 对 sitemap.xml 文件进行硬编码并将其放入/public/文件夹中。不是动态的,但很容易被谷歌找到。对于子页面很少的应用来说可能就足够了。
  2. (根本没有尝试过)使用/sitemap.xml (?) 处的 Meteor Router 创建动态站点地图,并将其输出为 XML。动态的,但 google 不太容易找到它,因为它是动态加载的(也许是通过 Spiderable 包?)

但两者都不太令我满意。我希望它是动态的,但又存储在一个(最好是)静态文件中,这样很容易被谷歌找到。或者类似的东西。

最好的方法是什么?

最佳答案

如果有一种方法可以使用客户端路由器动态生成站点地图,Meteor Router 可能可以实现

您需要meteor router和 meteor 的http。 Meteor 路由器的先决条件为 meteorite ,看起来您已经拥有了。

所以第一步是使用服务器端路由为该 sitemap.xml 创建路由:

Meteor.Router.add('sitemap.xml', function() {
    //get sitemap data (below)
    return generated_sitemap;
});

以及生成站点地图的函数:

我们需要 router.js,不幸的是它只在客户端上运行。所以我们需要用meteor.http来获取它。 router.js 文件基本上包含路由器代码的 Meteor.Router.add 位。将 url 调整为您的 router.js 文件可能存储的位置

routerdata = Meteor.http.get("http://localhost:3000/client/router.js").content 

然后我们需要解析路由器数据(确保使用 var,这样范围界定不会破坏实际的路由器)

服务器端js

Meteor.Router.add('/sitemap.xml', function() {
    routerdata = Meteor.http.get("http://localhost:3000/client/router.js").content 
    var Meteor = {};
    Meteor.Router = {add:function(input) {return input}};

    //drag the data out of the routerdata, eval is quick and dirty but you could shackle it down further
    routers = eval(routerdata);

    //now generate the sitemap.xml data

    xmldata = '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
    for(var url in routers) {
        xmldata+="<url>\n";
        xmldata+="<loc>"+url+"</loc>\n";
        xmldata+="<lastmod>2013-03-03</lastmod>\n";
        xmldata+="<changefreq>daily</changefreq>\n";
        xmldata+="<priority>0.8</priority>\n";
        xmldata+="</url>\n";
    }

    xmldata+="</urlset>";

    return xmldata;
});

您可能需要进一步对其进行自定义,以使其完全符合您的需求。我不能说我已经尝试过上述方法,我不太熟悉如何最佳地使用站点地图,但它可能会让您开始

关于javascript - 创建一个meteor.js站点地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15765370/

相关文章:

javascript - Meteor:确保函数不会对远程数据抛出异常

javascript - 我的 meteor 项目规模正在失控

javascript - 添加监听器到div标签来观看innerHtml内容

javascript - 检测浏览器是否支持位置: fixed

javascript - Modernizr 没有将类应用于 html 标签

javascript - 如何以编程方式创建递增到定义数字、重置为零并再次递增的 3D 数组?

mongodb - 嵌套数组插入mongodb?

jquery - 有没有更好的方法来使用 Meteor.js 根据输入字段响应式更新 html?

javascript - 使用 jquery 更改文本颜色和大小

mongodb - 即时创建新的 Meteor 集合