首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在我的自定义模板中设置Ghost博客自定义Routes.yaml集合标题/元描述?

如何在我的自定义模板中设置Ghost博客自定义Routes.yaml集合标题/元描述?
EN

Stack Overflow用户
提问于 2019-02-03 00:08:02
回答 3查看 3.3K关注 0票数 3

使用Ghost博客routes.yaml文件,可以使用集合块创建一个自定义集合,该集合由一些标记和/或其他数据组成。还可以告诉此集合使用自定义主题模板(请参阅:

  1. https://docs.ghost.org/tutorials/creating-content-collections/
  2. https://docs.ghost.org/concepts/routing/#content-structure

例如:

代码语言:javascript
复制
collections:
  /example/:
    permalink: /example/{slug}/
    controller: channel
    filter: tag:example-tag
    template:
      - example

以上所有的工作和我的集合正确地使用我的新example主题文件。

问题是,与标记页(对于example-tag)不同,我的新定制集合没有现成的文档化方法来处理标题等等。

它不会从用于构建集合的标记中提取title / meta描述(对于由单个标记构建的集合来说,这将是很好的)。为了解决这个问题,我尝试了一些{{#has}}语句,但是我不知道自定义路由适合于什么上下文。

使用上面的示例routes.yaml,自定义集合的标题以‘Meta (Page1)’结束,- and没有元描述。

这个问题也扩展到Open中,它列出了一个相同的标题,并且没有对自定义集合的描述。

我的猜测是,可以使用附加到routes.yaml文件的数据属性来实现这一点(请参阅:https://docs.ghost.org/concepts/routing/#data),但到目前为止,我还没有找到解决方案。

虽然我在谷歌搜索解决方案的最初尝试是空的,但这是我看到的对这个问题最好的参考:

  1. https://forum.ghost.org/t/dynamic-routing-page-post-data-context-in-default-hbs-nested-navigation-on-custom-collections/4204
  2. https://github.com/TryGhost/Ghost/issues/10082
EN

回答 3

Stack Overflow用户

发布于 2019-05-21 23:58:10

我找到了一个解决问题的方法。

  1. 您可以在Ghost管理工具中创建一个名为example的页面。
  2. 按以下方式自定义routes.yaml中的路由(而不是集合):
代码语言:javascript
复制
routes:
  /example/:
    controller: channel
    filter: tag:example-tag
    template: example
    data: page.example

page.example将在幽灵中使用此页面的元数据。

票数 3
EN

Stack Overflow用户

发布于 2019-02-20 14:44:42

这只有在问题中描述的解决方案:https://github.com/TryGhost/Ghost/issues/10082中才有可能。

一般做以下几点:

  1. 创建页面示例(用段塞示例)并填充所需的元数据标题和描述
  2. 在routes.yaml中,修改集合定义/示例/添加以下内容:data: page.example将集合根链接到指定的页面
  3. 现在,在模板定义example.hbs中,您可以使用例如{{#page}} {{content}} {{/page}}标记从页面插入内容。您也可以在default.hbs模板中这样做,该模板包含在您的example.hbs中。因此,将:<title>{{meta_title}}</title>在default.hbs中替换为:
代码语言:javascript
复制
{{#unless page}}
  <title>{{meta_title}}</title>
{{else}}
  {{#page}}
    <title>{{meta_title}}</title>
    <meta name="description" content="{{meta_description}}"/>
  {{/page}}
{{/unless}}

这将为您的集合根页面设置特定的标题/描述。可以以类似的方式生成schema.org元数据。不幸的是,Facebook和Twitter元数据并不是那么简单,因为{{ghost_head}}标记在default.hbs中已经将站点元数据插入到这个页面。最后注意:除了{{meta_title}}{{meta_description}}之外,我认为您可以使用定义了这里的所有元数据字段。

票数 1
EN

Stack Overflow用户

发布于 2022-01-06 14:33:51

default.hbs中,我添加了以下块:

代码语言:javascript
复制
{{{ block "metaTitle"}}}

还有。在post.hbs中,我按如下方式填充了该块:

代码语言:javascript
复制
{{!< default}}

<div class="content-area">
<main class="site-main">
    {{#post}}
        {{#contentFor "metaTitle"}}
            <title>{{title}}</title>
        {{/contentFor}}
        ...

对于其他页面,如page.hbs、blog.hbs、author.hbs,我也是这样做的。我认为这个解决方案更灵活,因为我们对标题值有更多的控制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54498762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档