使用Ghost博客routes.yaml文件,可以使用集合块创建一个自定义集合,该集合由一些标记和/或其他数据组成。还可以告诉此集合使用自定义主题模板(请参阅:
例如:
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),但到目前为止,我还没有找到解决方案。
虽然我在谷歌搜索解决方案的最初尝试是空的,但这是我看到的对这个问题最好的参考:
发布于 2019-05-21 23:58:10
我找到了一个解决问题的方法。
example的页面。routes:
/example/:
controller: channel
filter: tag:example-tag
template: example
data: page.examplepage.example将在幽灵中使用此页面的元数据。
发布于 2019-02-20 14:44:42
这只有在问题中描述的解决方案:https://github.com/TryGhost/Ghost/issues/10082中才有可能。
一般做以下几点:
data: page.example将集合根链接到指定的页面{{#page}} {{content}} {{/page}}标记从页面插入内容。您也可以在default.hbs模板中这样做,该模板包含在您的example.hbs中。因此,将:<title>{{meta_title}}</title>在default.hbs中替换为:{{#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}}之外,我认为您可以使用定义了这里的所有元数据字段。
发布于 2022-01-06 14:33:51
在default.hbs中,我添加了以下块:
{{{ block "metaTitle"}}}还有。在post.hbs中,我按如下方式填充了该块:
{{!< default}}
<div class="content-area">
<main class="site-main">
{{#post}}
{{#contentFor "metaTitle"}}
<title>{{title}}</title>
{{/contentFor}}
...对于其他页面,如page.hbs、blog.hbs、author.hbs,我也是这样做的。我认为这个解决方案更灵活,因为我们对标题值有更多的控制。
https://stackoverflow.com/questions/54498762
复制相似问题