将预定义的小部件添加到主页
Add pre-defined widgets to home
我正在关注这个 这对我在新创建的页面上有一些预定义的小部件非常有用。
// lib/modules/apostrophe-pages/index.js
construct: function(self, options) {
self.beforeInsert = function(req, page, options, callback) {
page.navigationArea = {
"type" : "area",
"items" : [
{
"by" : "id",
"limitByAll" : 5,
"limitByTag" : 5,
"navShadow" : false,
"linksArray" : [ ],
"_id" : self.apos.utils.generateId(),
"nav" : "default",
"pieceIds" : [ ],
"logoId" : null,
"navBackgroundImageId" : null,
"navColor" : null,
"navTextColor" : null,
"gradientColorTop" : null,
"gradientColorBottom" : null,
"tags" : [ ],
"type" : "navigations"
}
]
}
return setImmediate(callback);
};
}
但这只会在我创建的页面上添加 navigationArea
。在启动时创建的主页似乎被排除在外。 Home 在第一次启动时会有 navigationArea
为空,我需要手动添加它。如何确保功能 self.beforeInsert
也适用于家庭?
我想如果这是在创建数据库之前添加的,那么 beforeInsert
会覆盖它。由于还没有主页,它会在应用程序首次启动时插入。但让我们假设您已经创建了该应用程序。
这可能是一项迁移工作。您可以 write a migration 查找主页 (slug: '/'
) 并查看该区域是否为空。如果是,则使用您的数据更新文档。它应该只 运行 一次,因为迁移是在数据库集合中跟踪的。即使它再次 运行,只要您只查询还没有数据的“主页”,您就安全了。
我正在关注这个
// lib/modules/apostrophe-pages/index.js
construct: function(self, options) {
self.beforeInsert = function(req, page, options, callback) {
page.navigationArea = {
"type" : "area",
"items" : [
{
"by" : "id",
"limitByAll" : 5,
"limitByTag" : 5,
"navShadow" : false,
"linksArray" : [ ],
"_id" : self.apos.utils.generateId(),
"nav" : "default",
"pieceIds" : [ ],
"logoId" : null,
"navBackgroundImageId" : null,
"navColor" : null,
"navTextColor" : null,
"gradientColorTop" : null,
"gradientColorBottom" : null,
"tags" : [ ],
"type" : "navigations"
}
]
}
return setImmediate(callback);
};
}
但这只会在我创建的页面上添加 navigationArea
。在启动时创建的主页似乎被排除在外。 Home 在第一次启动时会有 navigationArea
为空,我需要手动添加它。如何确保功能 self.beforeInsert
也适用于家庭?
我想如果这是在创建数据库之前添加的,那么 beforeInsert
会覆盖它。由于还没有主页,它会在应用程序首次启动时插入。但让我们假设您已经创建了该应用程序。
这可能是一项迁移工作。您可以 write a migration 查找主页 (slug: '/'
) 并查看该区域是否为空。如果是,则使用您的数据更新文档。它应该只 运行 一次,因为迁移是在数据库集合中跟踪的。即使它再次 运行,只要您只查询还没有数据的“主页”,您就安全了。