Kentico 9-基于页面模板限制页面类型

Kentico 9-基于页面模板限制页面类型,kentico,Kentico,我试图限制编辑器在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:

我试图限制编辑器在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)
    ...
编辑器可以创建许多节,但始终使用节模板。 我希望在一个部分下,编辑器只能创建一个类型为“PAGE”的节点

这就是我想做的: 我创建一个新的宏规则(在宏规则应用程序上),检查当前页面是否有特定的模板(传递参数)

然后我创建一个新范围(页面类型->范围

我认为这一切都没问题(在“A部分”我只能添加“页面”文档),但在“第1页”(模板与该部分不同)我只能添加“页面”文档。看来我的情况总是“真的”

我尝试用“DocumentPageTemplateID”和“NodeTemplateID”来更改宏中的参数字段,但得到了相同的结果

我相信这将接近解决方案。你能帮我吗

PS:我知道我可以为a、B、C节创建不同的页面类型,然后使用页面类型作用域,但我更喜欢在模板的基础上而不是在类型的基础上这样做


谢谢

不要为“节”使用页面类型,而是创建一个新的节页面类型并为其设置默认模板。然后可能会创建另一个名为“节点”的新页面类型,并为其设置默认模板。无需对作用域发狂,只需将节和节点页面类型的作用域都设置为根,并且只允许将节点放置在节的下面,节只能放置在根文档的下面。

仅供参考,可以设置非常适合您的场景的允许的子页面和parrent页面类型。检查一下

编辑:根据页面模板-在页面模板应用程序中,可以限制在特定路径上使用页面模板创建页面(见下面的附件)。你可以学到更多


我找到了一个解决办法。我将它发布给任何想这样做的人(并帮助我完成它:-))

我使用以下命令更改宏条件:

{_is}(Documents.Where("NodeID=" + QueryString.parentnodeid)[0].DocumentPageTemplate.CodeName == "{template}")
然后我使用这个条件创建范围

单击节点的新功能时,加载的页面仅显示所需的页面类型(在范围中选择)。 这是因为当我单击“新建”按钮时,Kentico会加载此页面:/CMSModules/Content/CMSDesk/NEW/NEW.aspx?classid=true&parentnodeid=35&parentculture=it 其中,parentnodeid是请求添加新节点时选择的节点。我使用此参数获取文档并检查模板

该解决方案的“问题”在于: 如果我右键单击节点并选择新建。。。弹出菜单将显示所有页面类型。这很明显,因为弹出菜单不调用任何页面,所以没有parentnodeid可供查找

目前这个解决方案对我来说还可以,因为我告诉网站的编辑,当他们想要添加新页面时,点击加号按钮


感谢大家的帮助,我希望我们能找到一个100%有效的解决方案。

以下是有关为页面类型创建父子关系的文档,以防您感兴趣:您好,谢谢。我知道用不同的页面类型我可以做到这一点。我是库里奥斯这样做的模板使用。我不明白为什么我的条件总是为真。根据你的宏条件-你能检查宏调试吗?@martin。谢谢,我不知道宏调试。我正在尝试,UI中的CurrentDocument似乎为空。我必须访问单击的文档并检查TemplateID。我一直在尝试…CurrentDocument只在管理UI之外工作。如果您需要管理UI中的当前文档,请使用EditedDocument。谢谢@martin。是的,这可以通过页面类型定义来完成。我的方法是找到一种基于父节点模板限制子类型的方法。如果我理解正确,根据您的回答,我可以限制创建具有确定模板的页面。例如,我可以设置模板部分只能分配给第1级的页面,模板节点只能分配给第2级的页面。。。但这不是我答案的答案(也许我不明白)。我的目标是,当我右键单击节点节A并按下菜单项“新建…”时,文档允许的唯一页面类型是“页面(菜单项)”。但如果我右键单击节点第1页(与A部分的类型和级别相同),然后按NEW。。。我想能够添加其他docsAlberto,这个结构能有多深?它是否仅符合您在上述示例中指出的级别?(如果这不再相关,请忽略我)我通过本文末尾的解决方法解决了这个问题(见我最后的答案),但是如果你有任何建议。。。哇!“这个结构能有多深?”越深越好:-)分享你的想法