Как установить тег заголовка и мета-описание для моих страниц без публикации в Keystone JS?

Я знаю, как установить тег заголовка и мета-описание для моих страниц сообщений и категорий, потому что они берутся из базы данных, но я не могу найти в KeystoneJS, где обновить их для других страниц — Главная, Блог и т. д.

Ниже приведен код руля, который я использую для своих метаданных. Каждая страница, которая не является «Постом», использует последние параметры «Другое» внизу.

{{#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/

Благодарю вас!


person tkwitten    schedule 19.11.2016    source источник


Ответы (2)


Если кому интересно, я смог добиться этого, загрузив их прямо из роутов. Например:

// Render the view
view.render('blog', { 
    title: 'Blog',
    description: 'This is my blog meta description'
    });
person tkwitten    schedule 20.11.2016
comment
Кажется, это не работает для меня. не могли бы вы сообщить мне, есть ли что-нибудь еще, что я должен сделать? - person billgajen; 09.10.2018

@tkwitten правильно. Вышеупомянутый метод работает.

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

Изначально это не работало, но потом я понял, что к вашему шаблону default.(hbs) нужно применить следующее.

<title>{{title}}</title>
<meta name="description" content="{{description}}" />

Вы можете ввести свой условный оператор на основе этого

person billgajen    schedule 11.10.2018