流星动态元标记

时间:2014-01-21 21:17:52

标签: dynamic meteor meta-tags

好吧,我需要一些方法来为我的应用程序创建一个动态元标记,即时创建一个cms-blog,所以需要在每个帖子更改meta desc / keywords / title等,我使用的是铁路由器。 我有一个想法,如何使用不完全确定:

<template name="post">
{{metaTitle}}
</template>

Template.post.metaTitle = function (this) {
  document.title = this;
}

(铁路由器版)

this.route('post', {
        path: '/',
....
data: function () {
return Posts.findOne({_id: this.params._id});
}
//Posts holds post documents with a fields like: "metaTitle" "metaKeywords" etc
});

所以如果客户端路由到“/”并且帖子集合包含一个id为“/”的帖子 并且该文件包含metaTitle:“Post 1” 这将进入template.post.metaTitle助手 标题将是“Post 1”?

有更好的方法吗?

并对关键字等做类似的事情。

1 个答案:

答案 0 :(得分:0)

好吧,我已经做了这个,这就是我所做的:

HTML:

<template name="posts">

    {{metaTitle}}
    {{metaDesc}}
    {{metaKeywords}}

    {{>home}}

    {{#each posts}}
    </div>
    <a href="{{pathFor 'post'}}">
        <div class="small-12 medium-12 large-12 columns">
            <div class="post">
                <div class="small-12 medium-12 large-12 columns">
                    <h4 class="left">{{author}}</h4>
                    <h4 class="right">{{date}}</h4>
                </div>
                <h2>{{title}}</h2>
                <p>{{desc}}</p>
            </div>
        </div>
    </a>
    <hr/>
    {{/each}}
</template>
路由器(铁路由器):

this.route('posts', {
        path: '/',

        waitOn:function(){
            NProgress.start();
            Meteor.subscribe("Teams");
        },

        before: function () {
            Session.set("adding_group", false);
            NProgress.done();
            /*
             causes problems when phonegap mode
             */
        },

        fastRender:true,

        unload: function () {
            Session.set("adding_group", true);
            Session.set("group_name", false);
            Session.set("group_date", false);
            Session.set("group_friends", false);
            Session.set("group_location", false);
            Session.set("group_rules", false);
            Session.set("group_desc", false);
            Session.set("group_save", false);
        },
        yieldTemplates: {
            'nav': {to: 'header'}
        },

        data:{
            posts:Posts.find({}),
            metaTitle:function(){
                var one = Posts.findOne({}); //just for the example
                return document.title = one.title; //just for the example
            }
        }
    });

这将插入帖子的document.title,如果生病了这个动态路径段 (通过ID查找)它将返回当前的帖子标题, 我认为生病使这个简单的东西成为一个包,我没有在大气中看到类似的包装。 希望它可以帮助你们。