Apostrophe cms - 自定义小部件中的富文本内联编辑?

时间:2017-08-25 14:55:31

标签: node.js apostrophe-cms

在某些情况下,我无法对富文本进行内联编辑保存回数据库。

请耐心等待,这里会粘贴一些代码,因为这是我描述我所做的唯一方式。

我的项目中有两种自定义小部件 - 那些只有一个小部件实例的小部件,通常在lib\modules目录中定义如下:

article-widgets
    - views
    -    - widget.html
    - index.js

然后是那种重复的小部件,可以在网站周围的几个地方使用,通常定义如下:

employees
    - index.js
employees-widgets
    - views
    -    - widget.html

这个我可以开展工作:

在第一种情况下,我在article-widgets\index.js

中定义了一个富文本
{
    name: 'ingress',
    label: 'Ingress',
    type: 'area',
    required: true,
    options: {
        widgets: {
            'apostrophe-rich-text': {
                toolbar: ['Bold', 'Italic', 'Link', 'Unlink' ]
            }
        }
    }
}

然后在article-widgets\views\widget.html

{{ apos.singleton(data.widget, 'ingress', 'apostrophe-rich-text',{
    toolbar: [ 'Bold', 'Italic', 'Link', 'Unlink' ]
}) }}

这个不适合我:

在第二种类型中 - 我可以编辑内联,但不保存更改。

employees\index.js

{
    name: 'body',
    label: 'Beskrivelse',
    type: 'area',
    options: {
        widgets: {
            'apostrophe-rich-text': {
                toolbar: ['Bold', 'Italic', 'Link', 'Unlink']
            }
        }
    }
}

然后在employees-widgets\views\widget.html

{% for piece in data.widget._pieces %}
    <div>
        {{
            apos.singleton(piece, 'body', 'apostrophe-rich-text', {
                toolbar: [ 'Bold', 'Italic', 'Link', 'Unlink' ]
            })
        }}
    </div>
{% endfor %}

我无法理解为什么后者不起作用。我做错了什么 - 或者是不可能重复项目的内联编辑?

1 个答案:

答案 0 :(得分:0)

Apostrophe的一个微妙之处在于任何以下划线(_)开头的属性(除了_id 实际上并不是父对象的一部分而且更改不会发生回到数据库

这些属性是为了方便Apostrophe在检索过程中的某个地方附加的。

我认为修改窗口小部件中的部分是默认情况下的内容(通常是部分窗口小部件是内容的单个服务视图)但是可以设置自定义后端功能。

不是问题的总计1:1,但是如果您查看此(粗略)示例中的commentscomments-widgets模块,您可以看到我们正在通过窗口小部件修改该部分的内容

https://github.com/stuartromanek/apostrophe-comment-system/tree/master/lib/modules