如何正确限制单例的件数
How to properly limit the quantity of pieces for a singleton
在上下文中编辑时,我一直无法正确限制编辑器可以 select 的片段数量。据我了解,这需要是一个单例,因为一个区域提供了很多小部件。
本例只有一种类型,也可以删除,以防编辑不想填那个占位符。
但是,当编辑器想要添加一块时,在代码中设置该限制的正确方法是什么?我传递的所有选项都被完全忽略,并且the documentation不显示代码示例,只显示可以使用的属性。
{{
apos.singleton(
container,
'propName',
'module-name',
{
limitByAll: 1,
limitByTag: 1,
limitById: 1,
limit: 1
}
)
}}
None 个选项限制了编辑器的任何内容:
所以我想知道,对单例执行限制的正确方法是什么?
块小部件模块不包括单独选择它们时允许的最大块数。
此模式使用joinByArray
field。 joinByArray
字段 确实 有一个选项,limit
您可以在其中指定最大连接件数。但是 pieces 小部件不包含该选项。
如果您知道这将始终用于单独选择片段(而不是使用标签或“所有”模式),那么您可能想要创建一个新的小部件来满足您的需要。使用“单独”模式时,碎片小部件不是很花哨。它只是一个带有 joinByArray
字段的小部件。
我经常遇到向单例添加选项的问题,所以我不经常使用单例,因为我发现几乎所有情况都可以使用一个区域。
“据我了解,这需要是单例,因为一个区域提供了很多小部件。”
您可以使用一个只有一种类型的区域,并将小部件数量限制为至少一个。
例如,这是我在 gobal 中创建的区域:
// lib/modules/apostrophe-global/index.js
{
name: 'footerArea',
label: 'Footer',
help: 'Add a footer here which will be displayed on all pages'
type: 'area',
options: {
limit: 1,
widgets: {
'footer': {
controls: {
movable: false,
cloneable: false,
removable: true,
position: 'top-right'
}
}
}
}
}
不幸的是,这里的限制只影响该区域中的小部件数量,而不影响单个小部件的数量。
我也想出了 joinByArray
解决方案,例如 alexbea 说:
{
name: '_images',
type: 'joinByArray',
withType: 'apostrophe-image',
label: 'Images',
help: 'Add images to gallery',
required: true,
limit: 48,
noHeight: true,
filters: {
projection: {
attachment: 1,
description: 1,
title: 1,
titleShow: 1,
titleColor: 1,
titleAlign: 1,
credit: 1,
creditUrl: 1,
clickAction: 1,
gradientColorTop: 1,
gradientColorBottom: 1,
}
}
}
在我的小部件中,我现在可以通过一个简单的循环轻松显示 _images
的所有内容:
{% for _image in piece._images %}
...
{% endfor %}
在很多情况下,这给了我更多的灵活性,因为我不想按原样展示作品。使用这种方法,我可以在具有不同布局的许多不同小部件中显示一件作品。使用投影过滤器,我什至可以决定为这个特定的小部件提取哪些字段。我可以从撇号的可重用性中获益更多,并且拥有像这样更清晰的代码。
在上下文中编辑时,我一直无法正确限制编辑器可以 select 的片段数量。据我了解,这需要是一个单例,因为一个区域提供了很多小部件。
本例只有一种类型,也可以删除,以防编辑不想填那个占位符。
但是,当编辑器想要添加一块时,在代码中设置该限制的正确方法是什么?我传递的所有选项都被完全忽略,并且the documentation不显示代码示例,只显示可以使用的属性。
{{
apos.singleton(
container,
'propName',
'module-name',
{
limitByAll: 1,
limitByTag: 1,
limitById: 1,
limit: 1
}
)
}}
None 个选项限制了编辑器的任何内容:
所以我想知道,对单例执行限制的正确方法是什么?
块小部件模块不包括单独选择它们时允许的最大块数。
此模式使用joinByArray
field。 joinByArray
字段 确实 有一个选项,limit
您可以在其中指定最大连接件数。但是 pieces 小部件不包含该选项。
如果您知道这将始终用于单独选择片段(而不是使用标签或“所有”模式),那么您可能想要创建一个新的小部件来满足您的需要。使用“单独”模式时,碎片小部件不是很花哨。它只是一个带有 joinByArray
字段的小部件。
我经常遇到向单例添加选项的问题,所以我不经常使用单例,因为我发现几乎所有情况都可以使用一个区域。
“据我了解,这需要是单例,因为一个区域提供了很多小部件。”
您可以使用一个只有一种类型的区域,并将小部件数量限制为至少一个。
例如,这是我在 gobal 中创建的区域:
// lib/modules/apostrophe-global/index.js
{
name: 'footerArea',
label: 'Footer',
help: 'Add a footer here which will be displayed on all pages'
type: 'area',
options: {
limit: 1,
widgets: {
'footer': {
controls: {
movable: false,
cloneable: false,
removable: true,
position: 'top-right'
}
}
}
}
}
不幸的是,这里的限制只影响该区域中的小部件数量,而不影响单个小部件的数量。
我也想出了 joinByArray
解决方案,例如 alexbea 说:
{
name: '_images',
type: 'joinByArray',
withType: 'apostrophe-image',
label: 'Images',
help: 'Add images to gallery',
required: true,
limit: 48,
noHeight: true,
filters: {
projection: {
attachment: 1,
description: 1,
title: 1,
titleShow: 1,
titleColor: 1,
titleAlign: 1,
credit: 1,
creditUrl: 1,
clickAction: 1,
gradientColorTop: 1,
gradientColorBottom: 1,
}
}
}
在我的小部件中,我现在可以通过一个简单的循环轻松显示 _images
的所有内容:
{% for _image in piece._images %}
...
{% endfor %}
在很多情况下,这给了我更多的灵活性,因为我不想按原样展示作品。使用这种方法,我可以在具有不同布局的许多不同小部件中显示一件作品。使用投影过滤器,我什至可以决定为这个特定的小部件提取哪些字段。我可以从撇号的可重用性中获益更多,并且拥有像这样更清晰的代码。