如何在 Keystone JS 中为我的 Non-Post 页面设置标题标签和元描述?
How do I set the Title Tag and Meta Description for my Non-Post pages in Keystone JS?
我知道如何为我的 post 和类别页面设置标题标签和元描述,因为它们来自数据库,但我无法在 KeystoneJS 中找到为其他页面更新这些内容的位置 - 主页,博客等
下面是我用于元数据的车把代码。每个不是 "Post" 的页面都在底部使用最后的 Else 选项。
{{#if data.post}}
{{#if data.post.meta.title}}
<title>{{data.post.meta.title}}</title>
<meta property="og:title" content="{{data.post.meta.title}}">
<meta name="twitter:title" content="{{data.post.meta.title}}">
{{else}}
<title>{{data.post.title}}</title>
<meta property="og:title" content="{{data.post.title}}">
<meta name="twitter:title" content="{{data.post.title}}">
{{/if}}
{{#if data.post.meta.description}}
<meta name="description" content="{{data.post.meta.description}}">
<meta property="og:description" content="{{data.post.meta.description}}">
<meta name="twitter:description" content="{{data.post.meta.description}}">
{{else}}
<meta name="description" content="{{data.post.content.brief}}">
<meta property="og:description" content="{{data.post.content.brief}}">
<meta name="twitter:description" content="{{data.post.content.brief}}">
{{/if}}
<meta property="og:type" content="article">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:image" content="{{data.post.image.url}}">
<meta name="twitter:image:src" content="{{data.post.image.url}}">
<meta property="og:url" content="{{data.post.fullPostUrl}}">
<meta name="twitter:url" content="{{data.post.fullPostUrl}}">
<meta property="article:published_time" content="{{data.post.publishedDate}}">
{{# each data.post.categories}}
<meta property="article:tag" content="{{name}}">
{{/each}}
{{else}}
<title>GENERAL TITLE</title>
<meta propery="description" content="GENERAL DESCRIPTION">
<meta property="og:image" content="{{baseUrl}}/images/logo.png">
<meta name="twitter:image:src" content="{{baseUrl}}/images/logo.png">
{{/if}}
我可以看到默认情况下梯形校正对所有页面使用相同的值。
谢谢!
如果有人好奇,我可以通过直接从路线加载它们来完成此操作。例如:
// Render the view
view.render('blog', {
title: 'Blog',
description: 'This is my blog meta description'
});
@tkwitten 正确。上述方法有效。
// Render the view
view.render('blog', {
title: 'Blog',
description: 'This is my blog meta description'
});
它最初并没有真正起作用,然后我意识到必须将以下内容应用到您的默认模板。(hbs) 模板。
<title>{{title}}</title>
<meta name="description" content="{{description}}" />
你可以根据这个输入你的条件语句
我知道如何为我的 post 和类别页面设置标题标签和元描述,因为它们来自数据库,但我无法在 KeystoneJS 中找到为其他页面更新这些内容的位置 - 主页,博客等
下面是我用于元数据的车把代码。每个不是 "Post" 的页面都在底部使用最后的 Else 选项。
{{#if data.post}}
{{#if data.post.meta.title}}
<title>{{data.post.meta.title}}</title>
<meta property="og:title" content="{{data.post.meta.title}}">
<meta name="twitter:title" content="{{data.post.meta.title}}">
{{else}}
<title>{{data.post.title}}</title>
<meta property="og:title" content="{{data.post.title}}">
<meta name="twitter:title" content="{{data.post.title}}">
{{/if}}
{{#if data.post.meta.description}}
<meta name="description" content="{{data.post.meta.description}}">
<meta property="og:description" content="{{data.post.meta.description}}">
<meta name="twitter:description" content="{{data.post.meta.description}}">
{{else}}
<meta name="description" content="{{data.post.content.brief}}">
<meta property="og:description" content="{{data.post.content.brief}}">
<meta name="twitter:description" content="{{data.post.content.brief}}">
{{/if}}
<meta property="og:type" content="article">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:image" content="{{data.post.image.url}}">
<meta name="twitter:image:src" content="{{data.post.image.url}}">
<meta property="og:url" content="{{data.post.fullPostUrl}}">
<meta name="twitter:url" content="{{data.post.fullPostUrl}}">
<meta property="article:published_time" content="{{data.post.publishedDate}}">
{{# each data.post.categories}}
<meta property="article:tag" content="{{name}}">
{{/each}}
{{else}}
<title>GENERAL TITLE</title>
<meta propery="description" content="GENERAL DESCRIPTION">
<meta property="og:image" content="{{baseUrl}}/images/logo.png">
<meta name="twitter:image:src" content="{{baseUrl}}/images/logo.png">
{{/if}}
我可以看到默认情况下梯形校正对所有页面使用相同的值。
谢谢!
如果有人好奇,我可以通过直接从路线加载它们来完成此操作。例如:
// Render the view
view.render('blog', {
title: 'Blog',
description: 'This is my blog meta description'
});
@tkwitten 正确。上述方法有效。
// Render the view
view.render('blog', {
title: 'Blog',
description: 'This is my blog meta description'
});
它最初并没有真正起作用,然后我意识到必须将以下内容应用到您的默认模板。(hbs) 模板。
<title>{{title}}</title>
<meta name="description" content="{{description}}" />
你可以根据这个输入你的条件语句