好吧,我需要一些方法来为我的应用程序创建一个动态元标记,即时创建一个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”?
有更好的方法吗?
并对关键字等做类似的事情。
答案 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查找)它将返回当前的帖子标题, 我认为生病使这个简单的东西成为一个包,我没有在大气中看到类似的包装。 希望它可以帮助你们。