我想默认将“已发布”选项设为“false”,而不是“true”。
我尝试在撇号自定义页面中使用它:
但它不起作用! 你能帮忙吗?
由于
编辑:完整的index.js 也许我的默认选项在其他地方被覆盖了?
var _ = require('lodash');
module.exports = {
extend: 'apostrophe-doc-type-manager',
beforeConstruct: function(self, options) {
options.name = options.name || self.__meta.name.replace(/\-pages$/, '-page');
if (options.permissionsFields === undefined) {
// By default, pages have nuanced permissions
options.permissionsFields = true;
}
options.addFields = [
{
type: 'boolean',
name: 'published',
label: 'Published',
def:false
},
{
type: 'slug',
name: 'slug',
label: 'Slug',
required: true,
// with this flag, a leading / is enforced, and slashes
// elsewhere are allowed etc.
page: true
},
{
type: 'select',
name: 'type',
label: 'Type',
required: true,
choices: _.map(options.apos.pages.typeChoices, function(type) {
return {
value: type.name,
label: type.label
};
})
},
{
type: 'boolean',
name: 'orphan',
label: 'Hide in Navigation'
}
].concat(options.addFields || []);
options.arrangeFields = [
{
name: 'basics',
label: 'Basics',
fields: [ 'meta-description', 'title', 'slug', 'type','alaune', 'color', 'published', 'tags', 'orphan' ]
}
].concat(options.arrangeFields || []);
},
construct: function(self, options) {
require('./lib/dispatch.js')(self, options);
require('./lib/api.js')(self, options);
}
};
哈哈我喜欢这个网站,但是如果没有更多的评论,我就无法发布我的代码!好吧,我的问题很容易解释。
所以..我可以感谢撇号cms团队的出色工作^^和汤姆的耐心支持!
答案 0 :(得分:0)
事实证明,新页面的发布状态是从其父页面继承的。这是在newChild
的{{1}}方法中实现的。
老实说,这是一个非常有用的规则,因此您可能只想创建顶级页面,手动设置它们以取消发布,然后利用二级页面规则等。
或者,暂时取消发布您的主页,即使是顶级页面也会在未发布的情况下生成(显然在发布之后您又不想再这样做了。)
但如果这些方案都不能满足您的需求,您可以通过"超级模式扩展apostrophe-pages
方法"做你想做的事:
newChild
我们会考虑一个pull请求来为// in lib/modules/apostrophe-pages/index.js of your own project.
// DO NOT modify it in node_modules, that is NEVER NECESSARY
module.exports = {
construct: function(self, options) {
var superNewChild = self.newChild;
self.newChild = function(parentPage) {
var child = superNewChild(parentPage);
child.published = false;
return child;
};
}
};
模块实现unpublishNewChildPages
之类的标记。然后,上面的代码可能是apostrophe-pages
。
仅供参考,您共享的代码似乎是整个模块的过分完整副本,如果您只是试图覆盖一件事情,您不需要将整个模块复制到项目级别(并且您不应该&#39 ; t,它让你对我们后来做出的任何改变负责。您的项目级核心Apostrophe模块版本会自动将原始版本作为子类,因此您可以覆盖单个内容而无需担心原始代码 - 它仍将运行。