Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Rename macro 'n' to 'mgnl-n'.

定制现有的应用比从头开发应用要容易、省时。其次的好处是,现有应用的配置会随着Magnolia CMS的新版本而频繁更新。当您扩展配置时,新的随Magnolia版本安装的配置不会改写您的配置,而它们带来的好处还会自动对您可用。另外,Magnolia代码是开源的。因为您可以定制任何东西,您也可以以使应用难以更新的方式定制。以下为一些正确定制的指南。定制现有的应用比从头开发应用要容易、省时。此外还有一个好处:由于现有应用的配置会随着Magnolia CMS的新版本而频繁更新,当您扩展配置时,新的随Magnolia版本安装的配置不会改写您的配置,而它们带来的好处还会自动对您可用。另外,Magnolia代码是开源的。因此您可以定制任何东西,您也可以通过定制实现使应用难以更新。以下为一些正确定制的指导。

Tip

扩展,而不要拷贝。直接将您的个性化配置添加到原有的应用配置里,或者采用更好的方法——扩展原有的配置。

...

将您自己的定制动作添加到现有应用中。例如,添加一个直接发布的动作,绕开审批的工作流程。动作是在子应用下配置的。这里以Pages应用页面应用activate动作为例。

Advanced Tables - Table Plus
heading0
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse

节点名

Mgnl f
modules

 

Mgnl f
pages

 

Mgnl f
apps

 

Mgnl n
pages

 

Mgnl n
subApps

 

Mgnl n
browser

 

Mgnl n
actions

 

Mgnl n
activate

 

mgnl-p
catalog

website

mgnl-p
class

info.magnolia.ui.framework.action.ActivationActionDefinition

mgnl-p
command

activate

mgnl-p
icon

icon-publish

mgnl-p
label

Publish

改变列

在树型和列表视图中改变显示的列。您可以在内容视图(树,列表,搜索)中找到列配置。以下为Assets应用的一个例子,在应用的树型视图里显示的列和列表视图里的相同,唯一的不同在于,路径列被省去了。扩展到已有配置并改写特定值的好处是,您总是能准确的知道您定制了什么。。以下为数字资产应用的一个例子,使应用的树型视图里显示的列和列表视图里的相同,唯一的不同在于,路径列被省去了。扩展到已有配置并改写特定值的好处是,您总是能准确的知道您定制了什么。

Advanced Tables - Table Plus
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名
Mgnl n
workbench
 

Mgnl n
contentViews

 

Mgnl n
tree

 

Mgnl n
columns

 

Mgnl n
path

 

mgnl-p
enabled

false

mgnl-p
extends

../../list/columns

mgnl-p
class

info.magnolia.ui.workbench.tree.TreePresenterDefinition

Mgnl n
list

 

Mgnl n
columns

 

Mgnl n
asset

 

Mgnl n
path

 

Mgnl n
title

 

Mgnl n
status

 

Mgnl n
moddate

 

...

开启定制对话框

改变动作定义来开启您自己的对话,而不是打开默认的。在dialogName属性里找到对话。这里有一个在Contacts应用里提及对话的例子。对话定义在这里不展示了,您可以在同一个模块里找到。来开启您自己的对话框,而不是打开默认的。在dialogName属性里找到对话框。以下是一个在通信录应用里引用对话框的例子。对话框定义在这里不展示了,您可以在同一个模块里找到。

Advanced Tables - Table Plus
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名
Mgnl n
browser
 

Mgnl n
actions

 

Mgnl n
addFolder

 

Mgnl n
editFolder

 

mgnl-p
class

info.magnolia.ui.framework.action.OpenEditDialogActionDefinition

mgnl-p
dialogName

contacts:folder

mgnl-p
icon

icon-edit

mgnl-p
label

Rename folder

...

修改对话框里的字段

将域添加到对话里,或改变已有域。参考对话您可以在对话框里添加字段,或改变已有字段。参考对话框

创建一个编辑器组件

编辑器是一个编辑内容的组件。它通常会像对话一样显示表格,不同之处在于,编辑器是包含在子应用里的。您可以随意打开很多子应用,也就是说,您可以同时编辑很多条目。这对于对话来说不可能。在对话里,您只能一次编辑一个条目。编辑器是一个编辑内容的组件。它通常会像对话框一样显示表单,不同之处在于,编辑器是包含在子应用里的。您可以随意打开很多子应用,也就是说,您可以同时编辑很多条目。这对于对话框来说不可能。在对话框里,您只能一次编辑一个条目。

Advanced Tables - Table Plus
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名

Mgnl f
modules

 

Mgnl f
dam

 

Mgnl f
apps

 

Mgnl n
assets

 

Mgnl n
subApps

 

Mgnl n
browser

 

Mgnl n
detail

 

Mgnl n
editor

 

Mgnl n
form

 

Mgnl n
actions

 

Mgnl n
nodeType

 

mgnl-p
workspace

dam

编写您自己的视图

如果您想要编写自己的视图呢?假设您希望用一个您写的叫做com.acme.sample.app.main.ContentDisplayViewAcme的类替换info.magnolia.sample.app.main.ContentDisplayView

正确的实现您定制视图的方法是,创建一个新模块来扩展已有的模块。在新模块的描述符(实现定制视图正确的方法是,创建一个新模块来扩展已有的模块,并在新模块的描述符(sample-app-acme.xml)xml,指向现有的那个模块。只改变唯一的,指向现有的那个模块,只改变唯一的 <component> 组件来指向这个新配置。

Code Block
languagehtml/xml
title示例应用里最开始定义的ContentDisplayView
<id>app-sample</id>
   <component>
    <type>info.magnolia.sample.app.main.ContentDisplayView</type>
    <implementation>info.magnolia.sample.app.main.ContentDisplayViewImpl</implementation>
  </component>
</components>

...