我正在尝试限制编辑器在Kentico节点上创建错误的文档。我知道页面类型 - >范围为此,但在我的情况下,很难配置它。 在我的场景中,我有一个重复的节点结构,如下所示:
Root (template: ROOT)
- Page 1 (type: Page; template: PAGE)
- Page 2 (type: Page; template: PAGE)
- Page 3 (type: Page; template: PAGE)
...
- Section A (type: Page; template: SECTION)
- Node 1 (type: Page; template: NODE)
- Node 2 (type: Page; template: NODE)
- Node 3 (type: Page; template: NODE)
...
- Section B (type: Page; template: SECTION)
- Node 1 (type: Page; template: NODE)
- Node 2 (type: Page; template: NODE)
- Node 3 (type: Page; template: NODE)
...
- Section C (type: Page; template: SECTION)
- Node 1 (type: Page; template: NODE)
- Node 2 (type: Page; template: NODE)
- Node 3 (type: Page; template: NODE)
...
编辑器可以创建很多部分,但总是使用SECTION模板。 我希望在一个部分下,编辑器只能创建一个“PAGE”类型的节点。
这就是我要做的事情: 我创建了一个新的宏规则(在宏规则应用程序上),检查当前页面是否具有特定模板(传递参数) see image
然后我创建一个新的范围(页面类型 - >范围)see image
我认为一切正常(在“A部分”我只能添加“页面”文档),但也在“第1页”(模板与SECTION不同)我只能添加“页面”文档。似乎我的条件总是“真实”
我尝试使用“DocumentPageTemplateID”对“NodeTemplateID”更改宏中的参数字段,但结果相同。
我相信接近解决方案。你能救我吗?
PS:我知道我可以为A,B,C部分创建不同的页面类型,然后使用页面类型范围,但我更喜欢在模板而不是类型的基础上执行此操作。
谢谢
答案 0 :(得分:6)
不使用“页面”类型的“页面”页面类型,而是创建新的“页面”页面类型并为其设置默认模板。然后可能会创建另一个名为“Node”的新页面类型,并为其设置默认模板。不需要对范围感到疯狂,只需将Section和Node页面类型的范围设置为根目录,并且只允许将节点放在Sections下面,而Sections只能放在Root文档下面。
答案 1 :(得分:1)
仅为了您的信息,可以设置允许的孩子和 parrent页面类型,这可能非常适合您的场景。只需查看docs。
修改:根据页面模板 - 在页面模板应用程序中,可以限制在特定路径上创建包含页面模板的页面(请参阅下面的附件)。您可以了解更多here。
答案 2 :(得分:0)
我找到了解决方法。我发布给任何想要这样做的人(并帮我完成它:-))。
我用这个改变了宏条件:
{_is}(Documents.Where("NodeID=" + QueryString.parentnodeid)[0].DocumentPageTemplate.CodeName == "{template}")
然后我使用这个条件创建Scope。
当我点击节点的NEW功能时,加载的页面只显示所需的页面类型(在Scope中选择)。 这是有效的,因为当我点击NEW按钮时Kentico加载此页面:/CMSModules/Content/CMSDesk/New/New.aspx?classid=true&parentnodeid=35&parentculture=it-IT 其中parentnodeid是您要求添加新节点时选择的节点。我使用此参数来获取文档并检查模板。
"问题"这个解决方案是这样的: 如果我右键单击节点并选择New ...弹出菜单将显示所有页面类型。很明显,因为弹出菜单不会调用任何页面,所以没有要查找的parentnodeid。
目前这个解决方案对我来说还不错,因为当他们想要添加新页面时,我告诉网站的编辑点击加号按钮。
谢谢大家的帮助,我希望我们能找到100%有效的解决方案。