如何在 Apostrophe CMS 中定义具有默认值的小部件

How to define widgets with default values in Apostrophe CMS

我想添加一个无法从页面中删除的小部件,并在未明确定义时包含一些默认文本。 我认为它应该像这样工作:

{{ 
   apos.singleton(data.page, 'headerTitle', 'apostrophe-rich-text', {
       def: 'Default Title'
   }) 
}}

有没有什么方法可以使用撇号小部件来实现这一点,或者我应该创建一个自定义小部件?

在 Apostrophe 中创建您自己的小部件是非常标准的做法,但它没有说明如果单例中还没有小部件该怎么做。

您可以像这样禁用删除单例:

{{
  apos.singleton(data.page, 'headerTitle', 'apostrophe-rich-text', {
    controls: {
      removable: false,
      movable: false
    }
  })
}}

然而,编辑者仍然需要单击以最初将小部件添加到每个页面的页面。

所以使用这种技术来提供默认标记:

{% if apos.areas.isEmpty(data.page, 'headerTitle') %}
  <h4>Default Title</h4>
{% endif %}
{{
  apos.singleton(data.page, 'headerTitle', 'apostrophe-rich-text', {
    controls: {
      removable: false,
      movable: false
    }
  })
}}