2016-08-03 86 views
3

我试图限制编辑者在Kentico节点上创建错误的文档。我知道有页面类型 - >范围为此,但在我的情况很难配置它。 在我的情况我有一个重复的节点结构是这样的:Kentico 9 - 基于页面模板的限制页面类型

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”类型的节点。

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

然后我创建了一个新的Scope(网页类型 - >斯科普斯see image

我认为这是一切ok(上“一节”我只能添加“页”文件),也可在“1”(有与SECTION不同的模板)我只能添加“页面”文档。看来,我的条件总是返回“真”

我尝试更改我的宏中的参数字段与“DocumentPageTemplateID”对“NodeTemplateID”,但我有同样的结果。

我相信接近解决方案。你可以帮我吗? PS:我知道我可以为A,B,C部分创建不同的页面类型,然后使用页面类型范围,但我更喜欢在模板而不是类型的基础上执行此操作。

谢谢

+0

阿尔贝托,这个结构有多深?它是否仅仅遵守上面例子中指出的级别? (如果这不再相关,请不理我) – mnield

+0

我在本文最后解决了这个问题(请参阅我的最后一个回答),但是如果您有任何建议,哇! “这个结构有多深?”更深入,更好的是:-)分享你的想法 – Alberto

回答

6

而不是使用页面类型为“部分”,创造出新科页面类型和设置默认模板它。然后,可能会创建另一个名为“节点”的新页面类型,并为其设置默认模板。不需要为范围发疯,只需将节和页面类型的范围设置为根,并且只允许节点放置在节的下面,节只能放在根文档的下面。

+0

这里是关于为页面类型创建父子关系的文档,如果你感兴趣的话:https://docs.kentico.com/display/K9/Setting+亲子关系+ +班+ – Rui

+0

大家好,谢谢。我知道用不同的页面类型我可以做到这一点。我是courios用这个模板做的。我不明白为什么我的病情总是如此。 – Alberto

+0

根据你的宏观条件 - 你可以检查宏调试吗? –

1

只是为了您的信息,可以设置允许孩子parrent页面类型这可能是非常适合您的方案。只需检查docs

编辑:根据页面模板 - 在页面模板应用程序有可能限制创建具有一定的路径上页面模板的页面(见附件波纹管)。您可以了解更多here

enter image description here

+0

谢谢@马丁。是的,这可以通过页面类型定义完成。我的方法是找到一种方法来根据父节点的模板限制子类型。 – Alberto

+0

我编辑过以前的答案。 –

+0

如果我理解正确,那么您的答案可以限制为使用确定的模板创建页面。例如,我可以设置SECTION模板只能在第一级分配给一个页面,模板NODE只能在第二级分配......但这不是我答案的解决方案(也许我不明白)。 我的目标是当我右键单击节点A并按下菜单项“NEW ...”时,唯一允许的页面类型文档是“页面(菜单项目)”。但是,如果我右键单击节点PAGE 1(相同类型和级别的A节)并按NEW ...我希望能够添加其他文档 – Alberto

0

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

我改变宏条件与此:

{_is}(Documents.Where("NodeID=" + QueryString.parentnodeid)[0].DocumentPageTemplate.CodeName == "{template}") 

然后我创建一个使用这个条件范围。

当我点击节点的新功能时,加载的页面只显示所需的页面类型(在范围中选择)。 这是有效的,因为当我点击新按钮Kentico加载此页面时:/CMSModules/Content/CMSDesk/New/New.aspx?classid=true & parentnodeid = 35 & parentculture = it-IT 其中parentnodeid是您选择的节点要求添加一个新的节点。我使用这个参数来获取文档并检查模板。

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

目前这个解决方案对我来说是好的,因为我告诉网站的编辑当他们想添加一个新页面时点击PLUS按钮。

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