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

Editor Orchard CMS-创建与编辑编辑器模板和形状,editor,orchardcms,Editor,Orchardcms,在Orchard CMS中提供形状时,是否有办法区分编辑器的创建和编辑 也许这甚至可以在Placement.info级别完成 基本上,我有一个ContentType,它使用自动路由部分来设置该实体的永久链接。我不希望人们能够在初始创建后对其进行编辑,因此在实际编辑模式下隐藏该零件将是一件非常棒的事情,但在第一个“创建”页面上,该零件将可见并可用 在Orchard CMS中提供形状时,是否有办法区分编辑器的创建和编辑 除非该模块已专门编写,否则不能这样做。如果查看AutoroutePartDriv

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

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

基本上,我有一个ContentType,它使用自动路由部分来设置该实体的永久链接。我不希望人们能够在初始创建后对其进行编辑,因此在实际编辑模式下隐藏该零件将是一件非常棒的事情,但在第一个“创建”页面上,该零件将可见并可用

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

除非该模块已专门编写,否则不能这样做。如果查看
AutoroutePartDriver
,您会发现它总是返回一个名为
Parts\u Autoroute\u Edit
的形状,因此在这种情况下,无法使用Placement.info

您可能没有看到的一点是,自动路由部分有两个在内容类型编辑页面可见的设置(例如,
~/Admin/ContentTypes/edit/page
):

  • 允许自定义模式
  • 编辑内容时自动重新生成
一旦创建了内容项,取消选中这两个选项将阻止对路由的编辑,但是,在创建内容项时,您也将无法编辑路由,而是必须依赖生成的slug。如果您使用像
{Content.Slug}
这样的模式,或者如果您有自己基于内容类型生成Slug的确定方法,那么您将得到合理的Slug,然后创建一个实现
ITokenProvider
的模块,并创建使用您的算法的您自己的令牌


如果您必须具有问题中所述的行为,那么您可以创建一个模块,该模块抑制当前的
自动路由部分驱动程序
(使用
OrchardSuppressDependency
),但也从中继承。然后,您可以继续覆盖其中一个
编辑器(…)
方法,以便在生成编辑器形状或保存项目时进行拦截。您可以使用
part.ContentItem.Id==0
查看是否正在处理新的内容项。这种方法需要注意的一点是,它依赖于AutoroutePartDriver的实现,因此,如果这种更改会导致驱动程序中断。

对于类似的情况,我不会重复代码。在Autoroute中实现它,然后将其作为贡献提交。感谢您的反馈!非常有帮助,非常感谢