您可以将Magnolia 5里的任何位置标记为书签。这样做的好处是,您可以收藏常用的应用、特性和页面。直接点击书签比导航去目标位置更为方便。您可以在浏览器中直接标记位置,也可以使用收藏夹应用。

通过历史碎片标记位置

标记位置的能力是通过在URL结尾处附上一个历史碎片来实现的。在Magnolia 5里,碎片跟踪应用的内部状态,识别应用的名称、打开的标签卡,有时也识别到被编辑页面的路径。这就使得用户能够标记非常精细的细节信息,例如在一个网站体系里选择一个特定页面。

历史碎片的概念并不是Magnolia 5特有的,而是我们是从Google Web Toolkit里引进的。GWT文档是这么解释它的:

对于每一个能够在历史里找到的页面,应用应该生成一个独一无二的历史记号。记号可以是一个简单的字符串,让应用能够通过分析它而返回到一个特定的状态。这个记号将会作为一个URL碎片(在位置栏里的“#”号之后)保存在浏览器历史中,当用户在历史里前后查找或是打开一个链接时,这个碎片则被传递回到应用程序。

碎片格式

历史碎片对自带的Shell应用使用以下语法:

#shell:<shellAppName>:<parameter>

对普通的应用使用以下语法:

#app:<appName>:<subAppId>:<parameter>

井号#是一个标准的分隔符,标志URL的碎片部分开始。井号后的部分用冒号相互隔开。

  • 第一部分是类型标识符。它可以是应用或者Shell,取决于该应用是普通的应用,还是三个特殊的Shell应用之一(applaucherpulsefavorite)。对于您自己的应用,这个字符串总是app
  • appName标识应用。三个Shell应用的内部名称为applauncherpulsefavorite。普通应用的命名方式也可以预见:页面应用为pages,数字资产应用则是assets等等。您可以在应用配置里定义您自己的应用名称。Magnolia 5使用应用名称来在系统里识别应用。
  • subAppId标识子应用。子应用以标签卡的方式显示。每个应用至少有一个子应用。为保持一致性,Magnolia推荐您将您的主要子程序命名为main。如果应用没有提供其它子应用的话,main子应用可以是唯一的标签卡。创建内容应用时,可以将您的子应用命名为browserdetail。
  • parameter是碎片当中最后的部分,参数之间使用分号隔开。您可以添加preview这样的参数来指导应用在预览模式显示页面。

碎片样例

  1. Shell的Pulse应用。

    #shell:pulse
  2. 页面应用里,打开browser子应用。树型视图中当前选中/demo-project/about页面。

    #app:pages:browser;/demo-project/about:treeview
  3. 页面应用里,打开detail子应用。当前正在编辑/demo-project/about页面。

    #app:pages:detail;/demo-project/about:edit
  4. 页面应用下,打开detail子应用。当前正在预览/demo-project/about页面。view参数指导应用在预览模式显示页面。

    #app:pages:detail;/demo-project/about:view

关于subAppId的更多信息

历史碎片的subAppId部分可以保存更多信息,不仅仅是子应用名称。例如,页面应用的每个detail子应用(标签卡)编辑一个特定的页面,这时的subAppId同样包含到该页面的路径,例如#app:pages:detail;/demo-project/about。子应用名和路径之间用分号隔开。这里不能用冒号,因为它会破坏这个历史记号。

每个subAppId都是独一无二的。这就使系统能够辨认已经打开的标签卡并将其作为焦点,而不是打开一个副本。上例中,当页面应用打开一个detail子应用时,它会给该子应用分配一个独一无二的ID,其中包含了子应用名称(detail)和到页面的路径(/demo-project/about)。如果用户已经打开这个页面,收到请求时应用则会将这个标签卡作为焦点。

参数

您可以利用参数来传递附加信息,例如,告诉detail子应用在预览模式显示页面。

#app:pages:detail;/demo-project/about:view

这些参数均为碎片的一部分,并且只对这个应用有效。它们不同于请求参数,请求参数在URL中出现的较早,甚至在碎片开始之前就有了。

example.com/.magnolia?mgnlLocale=en#app:pages:detail;/path/to/page:view

例子:

  • treeview: 在树型视图中显示选中项。
  • listview: 在列表视图中显示选中项。
  • thumbnailview: 在缩略视图中显示选中项。
  • edit: 打开detail子应用的编辑器。
  • view: 打开detail子应用的预览模式。

在浏览历史中来回移动

位置碎片是Magnolia 5的关键导航特性,它使得使用浏览器本身的来回按钮变的可能。这才是现代的Web应用程序应有的工作方式——与其防止用户来回点击,不如让他们凭直观感觉操作。如果点击返回看起来应该回到前一个状态,那么应用应该支持这种感觉。

应用之间的位置变化

TODO: 触发应用之间的位置变化。

收藏夹应用

在系统里保留收藏夹(Favorites)的一个好处就是,它们自动就是便携的。如果您工作在多个电脑和不同的浏览器上,收藏的书签仍然可用。收藏夹功能对系统管理员来说也同样是个解脱,因为他们需要为很大的用户群提供服务。管理员可以创建一套预定义好的书签,让所有的用户都可以立即使用。

最佳实践

当您在用户界面作出改动时,最好总是通过位置变化来完成。否则,用户创建的书签将不再准确,用户就无法回到他们原来工作的位置。您应该在设计应用时,将位置早些考虑进去。
  • No labels