2017-09-12 43 views
2

我想在编辑页面上的内容(在所有属性视图中)时使编辑器体验更好,更具视觉效果。可能是一个简单的分隔线或标题..如何为EPiServer ContentType直观地分离属性?

我已经使用标签,只要它是有道理的。另外,我一直在尝试使用块作为属性。这在清晰的标题中增加了一个很好的分隔,但是当属性真正属于页面类型时,它需要更多的代码来维护,并且要老实说一点。

回答

3

开箱即用,不可能用标题来装饰属性,除非您使用块属性,正如您提到的那样。

但是,我认为你的问题很有趣,我发现扩展Episerver以适应这种行为是非常容易的。我写了一个示例解决方案,您可以随意使用它:https://arlc.dk/grouping-properties-with-headlines-without-property-blocks

如果您不喜欢该解决方案,另一种方法是引入您自己的Property-type(标题),并创建1)自定义dojo-widget以简单显示标题,以及2)EditorDescriptor以设置ClientEditingClass。 Linus在这里写了一篇优秀的博文:https://world.episerver.com/blogs/Linus-Ekstrom/Dates/2012/7/Creating-a-custom-editor-for-a-property/

编辑: 我明白了,我已经跳过了压倒一切的部分。

您不必通过替换它们来覆盖任何文件,也不必提取Shell.zip(除非您好奇Episerver如何实现其小部件)。重写特定组件的部分是define(“epi/shell/form/Field”)。只要你的shell的定义在shell之后被加载,dojo就会使用你的实现,只要有东西需要“epi/shell/form /字段“。确保您的实现在加载后,位于module.config中,位于'This inject our field-implementation [...]'下面。

〜/ ClientResources/Scripts/Shell/Field/Field.js只是我选择放置Field.js的重写版本的位置,只要你相应地更新module.config,并且使用新路径,就可以将它放在任何位置。 它的工作原理是这样的:First ,Episerver定义了窗口小部件A.然后你定义一个具有相同名称的窗口小部件A.当任何东西试图获取A时,它将返回你的实现,而不是Episerver的。

+0

你的博客文章说覆盖〜/ ClientResources/Scripts/Shell/Field/Field.js但是我的ClientResources文件夹中没有这样的文件。我正在使用合金技术演示进行测试。 我是否需要解压缩modules/_protected/Shell中的Shell.zip文件夹,创建所需的文件夹和文件并重新压缩文件夹以使其工作。 我不是很熟悉修改dojo和内置的功能。希望你会提供更详细的步骤。另外,也许答案应该可以在这个帖子上供其他人看到.. – Frostrar

+0

Hello Frostrar,我添加了一个答复作为编辑我的答案,因为它太长的评论。 –

+0

这工作完美!绝对是我将在未来的项目中使用的东西。感谢您对压倒一切的澄清! – Frostrar