【问题标题】:How to define widgets with default values in Apostrophe CMS如何在 Apostrophe CMS 中使用默认值定义小部件
【发布时间】:2017-10-11 08:57:41
【问题描述】:

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

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

有没有什么办法可以用撇号小部件来做到这一点,或者我应该创建一个自定义的?

【问题讨论】:

    标签: apostrophe-cms


    【解决方案1】:

    在 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
        }
      })
    }}
    

    【讨论】:

    • antonys 提出了一个很好的观点,我发现自己也在尝试做同样的事情。也许小部件不是正确的构造。但是,我想构建一个全局导航,它会根据已创建的页面自动填充。我所知道的将数据放入视图的唯一方法是创建一个小部件并实现construct()。但是正如您所提到的,当站点部署时,仍然需要有人“单击”来添加导航......这看起来很奇怪。有没有办法将页面数据拉入默认布局?扩展撇号模板之类的?
    • welp,回答了我自己的评论。在撇号模板模块中添加了一个index.js,并在apostrophe-pages:beforeSend 上查询页面数据,并能够引用/views/layout.htmlbeforeMain 块中的数据。涂料。
    • 在 A3 中,您通常会更喜欢新的异步组件来完成此类任务。它已经很远了,您可能想开始评估。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多