使用Ghost博客的route.yaml文件,可以使用collections块创建由某些标签和/或其他数据组成的自定义集合。您还可以告诉此收藏使用自定义主题模板,请参见:
例如:
collections:
/example/:
permalink: /example/{slug}/
controller: channel
filter: tag:example-tag
template:
- example
以上所有方法均有效,并且我的收藏正确使用了新的example
主题文件。
问题在于,与标签页(用于example-tag
)不同,我的新自定义集合没有易于记录的使用标题等的方式。
它不会从用于构建集合的标签中提取标题/元描述(这对于从单个标签构建的集合非常有用)。为了解决这个问题,我尝试了一些{{#has}}
语句,但是我无法弄清楚自定义路由将适合什么上下文。
在上面的示例route.yaml中,自定义集合的标题最终显示为“我的网站名称(第1页)”,并且没有元描述。
此问题还扩展到“打开图”数据中,该数据列出了相同的标题,但没有自定义集合的描述。
我的猜测是,可能可以使用附加到route.yaml文件的data属性来实现此目的(请参阅:https://docs.ghost.org/concepts/routing/#data),但到目前为止我还没有找到解决方案。
虽然我最初尝试使用谷歌搜索解决方案的尝试是空的,但这是我对该问题的最佳参考:
答案 0 :(得分:0)
只有在问题https://github.com/TryGhost/Ghost/issues/10082
中描述的解决方法才有可能通常执行以下操作:
data: page.example
将您的集合根链接到指定页面{{#page}} {{content}} {{/page}}
标签可插入页面中的内容。您也可以在example.hbs中包含的default.hbs模板中执行此操作。因此,将default.hbs中的<title>{{meta_title}}</title>
替换为以下内容:{{#unless page}}
<title>{{meta_title}}</title>
{{else}}
{{#page}}
<title>{{meta_title}}</title>
<meta name="description" content="{{meta_description}}"/>
{{/page}}
{{/unless}}
这将以一般方式为您的收藏根页面设置特定的标题/描述。可以以类似方式生成schema.org元数据。不幸的是,Facebook和Twitter元数据并不是那么简单,因为default.hbs中的{{ghost_head}}
标签已经在该页面上插入了网站元数据。最后说明:除了{{meta_title}}
和{{meta_description}}
,我想您可以使用定义为here的所有元数据字段。
答案 1 :(得分:0)
我找到了一种解决方法。
example
的页面。routes:
/example/:
controller: channel
filter: tag:example-tag
template: example
data: page.example
page.example将在Ghost中使用此页面的元数据。