【问题标题】:How do I set the Title Tag and Meta Description for my Non-Post pages in Keystone JS?如何在 Keystone JS 中为我​​的非帖子页面设置标题标签和元描述?
【发布时间】:2018-10-11 19:00:50
【问题描述】:

我知道如何为我的帖子和类别页面设置标题标签和元描述,因为它们来自数据库,但我无法在 KeystoneJS 中找到为其他页面(主页、博客等)更新这些的位置。

以下是我用于元数据的车把代码。每个不是“帖子”的页面都使用底部的最终 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}}

我可以看到默认情况下所有页面都使用相同的值。

http://demo.keystonejs.com/

谢谢!

【问题讨论】:

    标签: keystonejs


    【解决方案1】:

    如果有人好奇,我可以通过直接从路线加载它们来实现这一点。例如:

    // Render the view
    view.render('blog', { 
        title: 'Blog',
        description: 'This is my blog meta description'
        });
    

    【讨论】:

    • 这似乎对我不起作用。如果还有什么需要我做的,你能告诉我吗?
    【解决方案2】:

    @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}}" />
    

    你可以根据这个输入你的条件语句

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多