【问题标题】:apostrophe cms - customize page settings撇号 cms - 自定义页面设置
【发布时间】:2017-03-02 19:13:44
【问题描述】:
我想将元键和元描述字段添加到页面设置对话框,然后将它们呈现到页面。
我发现可以在页面模板(html)文件中做这样的事情:
{% extends data.outerLayout %}
{% block extraHead %}
<meta name="description" content="this is the page description" />
{% endblock %}
但我如何允许最终用户插入这些值?
【问题讨论】:
标签:
javascript
apostrophe-cms
【解决方案1】:
好的,所以在查看apostrophe-sandbox 演示站点后,我能够找到答案。
我在项目的lib/modules 文件夹下添加了一个名为apostrophe-custom-pages 的新文件夹,并在其中添加了一个如下所示的index.js 文件:
module.exports = {
beforeConstruct: function(self, options) {
options.addFields = [
{
name: 'metaDescription',
label: 'Meta Description',
type: 'string'
},
{
name: 'metaTags',
label: 'Meta Tags',
type: 'string'
}
]
}
};
然后,在我的页面 html 模板中添加:
{% block extraHead %}
<meta name="description" content="{{ data.page.metaDescription}}" />
<meta name="tags" content="{{ data.page.metaTags}}" />
{% endblock %}
就是这样。有用。现在我可以提供 SEO 支持。欢呼! :)
【解决方案2】:
这是一种改进的方法:
{% block extraHead %}
<meta name="description" content="{{ data.page.metaDescription | truncate(146, true, "..") | safe }}" />
{% endblock %}
我们在这里做了什么:
- 我们将元描述截断为特定长度(在本例中为 146 个字符,但您可以更改);
- 我们在结尾处添加了一个很好的 ..,这是人们在谷歌搜索时所习惯的;
- 我们将所有内容输出为“安全” - 这负责将某些符号或字符显示为 unicode / html 字符串。虽然理论上它可以被滥用。
看截图说明最后一点: