Orchard CMS - 创建与编辑编辑器模板和形状

时间:2014-03-25 10:42:30

标签: editor orchardcms

在Orchard CMS中提供形状时,有没有办法区分编辑器的创建和编辑?

也许这甚至可以在Placement.info级别完成?

基本上我有一个ContentType,它使用Autoroute Part来设置该实体的永久链接。我不希望人们在初始创建后能够编辑它,因此在实际编辑模式下隐藏部件会很棒 - 但是在第一个“创建”页面上可以看到它并且可用

1 个答案:

答案 0 :(得分:2)

  

在Orchard CMS中提供形状时,有没有办法区分编辑器的创建和编辑?

除非模块已经专门编写,否则不会这样做。如果你看AutoroutePartDriver,你会发现它总是返回一个名为Parts_Autoroute_Edit的形状,因此在这种情况下,使用Placement.info是不可能的。

您可能没有看到的一件事是Autoroute部分有两个设置可见内容类型编辑页面(例如~/Admin/ContentTypes/Edit/Page):

  • 允许自定义模式
  • 编辑内容时自动重新生成

取消选中这两个将阻止在创建内容项后编辑路线,但是在创建内容项时也无法编辑它,相反,您将不得不依赖生成的slug。如果你使用像{Content.Slug}这样的模式,或者如果你有自己的确定方法来生成基于内容类型的slug,那么你将得到合理的slu g然后创建一个实现ITokenProvider的模块并创建你的使用您的算法的自己的令牌。

如果绝对必须具有问题中描述的行为,那么您可以创建一个模块来抑制当前AutoroutePartDriver(使用OrchardSuppressDependency),但是也继承了它。然后,您可以继续覆盖其中一个Editor(...)方法,以在生成编辑器形状时或在保存项目时进行拦截。您可以使用part.ContentItem.Id == 0查看是否正在处理新的内容项。这种方法的一个重要警告是它依赖于AutoroutePartDriver的实现,所以如果改变了你的驱动程序可能会破坏。