3

我想将元键和元描述字段添加到页面设置对话框,然后将它们呈现到页面。我发现可以在页面模板(html)文件中做这样的事情:

{% extends data.outerLayout %}
{% block extraHead %}
    <meta name="description" content="this is the page description" />
{% endblock %}

但是我如何允许最终用户插入这些值?

4

2 回答 2

3

好的,所以在查看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 支持。欢呼!:)

于 2017-02-27T15:57:41.843 回答
0

这是一种改进的方法:

{% block extraHead %}
 <meta name="description" content="{{ data.page.metaDescription | truncate(146, true, "..") | safe }}" />
{% endblock %}

我们在这里做了什么:

  • 我们将元描述截断为特定长度(在本例中为 146 个字符,但您可以更改);
  • 我们在最后添加了一个很好的 .. ,这是人们在谷歌搜索时所习惯的;
  • 我们将所有内容输出为“安全” - 这负责将某些符号或字符显示为 unicode / html 字符串。虽然理论上它可以被滥用。

请参阅屏幕截图以说明最后一点:只是截图

于 2017-03-02T11:13:44.147 回答