Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

网站定义里,模板原型配置缺省的备用模板定义。它:

  • 定义全局缺省值,并且是以下内容的起点:
    • STK > Template Definitions模板定义 /pages里配置的所有具体模板定义。
    • STK > Site Definitions网站定义 /variations/<variation name>/templates节点下配置的所有模板变异形式。
  • 定义单个模板的基本结构,包括:
    • 水平和垂直导航的内容和行为。
    • 可用的区域以及它们的缺省行为。
    • 每个区域缺省可用的组件(如果有的话)。

每个在STK > Template Definitions模板定义里配置的具体的页面模板有其独特之处。模板原型定义了在大多数模板里很有可能被用到的设置。这使得配置更高效,因为在页面模板定义里只需要定义例外情况就行了。例如,平台区域原型里默认是禁用的。此区域不被任何具体的模板使用,但对于页面来说是一个不错的附加。它可以通过添加一个简单的节点来启用。

Table of Contents

模板合并

在页面被请求时,模板原型与具体模板合并。下面的例子展示了合并在stkHome页面模板里是如何发生的。注意mainextras区域。

  1. 模板原型是最基本的配置。它为mainextras区域定义必需的属性来使它们在所有页面上工作。原型也定义它们的子区域(没有体现在图表中)。
  2. stkHome是具体的模板定义,从模板原型继承了基础区域配置。一个具体的定义可以添加或覆写继承的所有配置。例如,floating配置被添加到main区域。这原本不在原型中。templateScript属性就是覆写的一个例子。具体定义包括该属性,但提供了一个不同的值,它使用一个不同的为章节页剪裁的mainArea.ftl脚本。extras区域的enabled属性被设置为false,使该区域被禁用
  3. 结果是原型和具体定义的合并。它以def模板支持对象形式呈现给模板脚本。这就意味着脚本可以用${def.propertyName}获得属性的值。

页面配置

缺省的模型原型结构和行为在STK > Site Definitions网站定义 /default/templates/prototype里配置。

  • templateScript属性引用主页面模板脚本,main.ftl这使脚本对所有在STK > Template Definitions 模板定义 /pages里定义的具体模板定义都可用。
  • navigation节点包含缺省的导航配置
  • areas节点包含区域配置
  • jsFilescssFiles节点可以用来提供额外JavaScript功能和CSS样式。由于缺省主题包含所有必要的内容,这些节点没有在演示网站里应用,但如果需要的话也是可用的。

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

    default

     

    templates

     

    prototype

     

    navigation

     

    areas

     

    jsFiles

     

    cssFiles

     

    Paragraph

    templateScript

    /templating-kit/pages/main.ftl

    availability

     

...

  • allOpen:当被设置为true时,所有可用的导航级别都被展开。当设置为false时,新的级别会随着用户点击导航链接而被展开。
  • enabled:启用和禁用导航菜单。
  • level:设置导航的深度。可用的选项为水平方向12, 垂直方向3。
  • startLevel开启导航时的级别起点。通常垂直遵循水平,没有级别重叠。例如,该属性可以让您在两种导航中显示级别。 
  • template:到模板脚本的路径。verticalhorizontal节点引用它们自己的脚本。

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

    default

     

    templates

     

    prototype

     

    navigation

     

    horizontal

     

    Paragraph

    allOpen

    false

    Paragraph

    enabled

    true

    Paragraph

    level

    1

    Paragraph

    template

    /templating-kit/pages/global/horizontalNavigation.ftl

    vertical

     

    Paragraph

    allOpen

    false

    Paragraph

    enabled

    true

    Paragraph

    level

    2

    Paragraph

    startLevel

     2

    Paragraph

    template

     /templating-kit/pages/global/verticalNavigation.ftl
Tip

您可以设置导航值大于3,但这会导致CSS问题。STK > Resources资源 /templating-kit/themes/pop/css可编辑主CSS表styles.css

网站导航模型将配置属性显示给绘制垂直和水平导航的脚本。脚本在STK > Templates 资源 /templating-kit/pages/global/horizontalNavigation.ftl/verticalNavigation.ftl里。以下为水平脚本的片段。

...

区域配置

区域定义在模板原型页面定义里配置。STK > Site Definitions 网站定义 /default/templates/prototype/areas内容节点包含可用的页面区域的定义。区域被作内容地图用。区域定义使区域对模板可用,定义区域的行为,以及哪些组件(如果有的话)在区域里可用。

...

  • description设置区域描述的消息包关键字。
  • enabled是一个布尔属性,有truefalse两个值可选,来启用或禁用该区域。该属性缺省值为true,故当此属性被忽略时,区域默认被启用。模板原型里启用的区域可通过修改原型的值在具体模板里禁用。
  • templateScript设置到绘制区域的脚本的路径。专用脚本仅在做简单绘制区域以外的事时才需要。所有的具体模板使用原型里定义的脚本,除非模板定义里引用了另一个脚本。例如,main区域通过STK > Templates模板 /templating-kit/pages/global/mainArea.ftl为所有具体模板绘制,除了stkSectionstkHome使用/templating-kit/pages/section/mainArea.ftl
  • title为区域名设置消息包关键字。该值在区域工具栏里绘制。
  • type定义多少组件(如果有的话)可在区域里绘制。可用的选项在以下的区域类型中讨论。

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

    prototype

     

    areas

     

    base

     

    availableComponents

     

    Paragraph

    description

    areas.templates.base.description

    Paragraph

    enabled

    true

    Paragraph

    templateScript

    /templating-kit/pages/global/baseArea.ftl

    Paragraph

    title

    areas.templates.base.title

    Paragraph

    type

    list

...

  • 前两个用来绘制组件在/<area name>/availableComponents节点下可用(参考以下的可用组件):
    • single区域在页面上生成一个组件。编辑者可以从很多组件类型中选择,但只可以添加一个。单个区域的例子有stage这样有两种大的要点类型可选的,以及openercomments这样只有一个组件类型可用的。
    • list区域在页面上绘制任意数量的有序组件。编辑者可用的组件类型的选择可以从一个到多个。列表区域的例子有metaNavigationcontentextras1/2basefooter这些有多个组件类型可用的,以及promos这种编辑者只可以添加一个组件类型的。
  • noComponent区域不绘制在<area name>/availableComponents节点下可用的组件,但可绘制配置不同的组件。noComponent区域的例子有:

 

Tip

footer区域是一个list区域,绘制availableComponents节点和由脚本绘制的Footer页脚组件下的组件。

 

您可以在具体定义里改变type区域。参看模板定义 > 改变区域行为了解这在特性模板上是如何实现的。

区域脚本

模板原型所使用的区域脚本在STK > Templates模板 /templating-kit/pages下可获得。多数区域脚本只简单的分配一个DIV元件以要求绘制区域,而不定义在区域里有什么,因为那是区域定义的责任。

...

/areas/<area name>/availableComponents节点使组件在区域内可用。此节点只能被listsingle区域类型使用。它配置一个组件的内容地图,这些组件是通过读取使用Node2Bean机制写进Java Bean的配置来建立的。

注意以下几点:

  • 组件定义通常在STK > Template Definitions模板定义 /components里配置,在这里设置为对模板原型可用。
  • 每个组件都是在一个子内容节点下配置的。
    • 通常情况下,内容节点名对应组件定义里的内容节点名,但这也并不是严格必须。
    • id属性以<module name>:<path to component definition>格式定义到组件定义的路径。这就允许从任何模块来添加组件,而不仅限于STK组件。
  • 标准的一套组件在原型里对多数区域可用。只要不是在具体模板定义里配置了覆写或添加,相同的组件在所有模板里都可用。样例可参考extras区域base区域promos区域
  • 一个值得注意的例外情况是content区域。该区域使具体模板脱颖而出的方法是,使这几种不同的组件类型可用:内容模板里的内容组件,主页和章节模板的要点,以及特性模板里的独特组件。因此,这些组件在具体的模板定义里被设置为可用,而在原型里却不可用。

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

    prototype

     

    areas

     

    base

     

    availableComponents

     

    stkTeaserCarousel

     

    Paragraph

    id

    standard-templating-kit:components/teasers/stkTeaserCarousel

    catCloudWide

     

    Paragraph

    id

    categorization:components/catCloudWide

...

您可以在availableComponents节点下限制单个组件对特定角色用户的可用性,用户的角色在Security安全应用的Roles角色标签里设定。角色里有更多信息。下列配置样例限制了stkPromo组件仅对superuser角色可用。

...

您可以添加一个maxComponents属性到<area name>名字节点并设置合适的值,来限制list区域绘制的组件数量。一旦数量达到限制,New Component新建组件输入框就会被Maximum Components Reached通知替代,来阻止编辑者添加更多的组件。下列配置样例将base区域的组件数量限制为2。

...

  • 自动继承:只能在父页面上添加组件,所有子页面自动继承。metaNavigation区域为此类继承的例子。
  • 选择性继承:编辑者可以决定一个特定的组件是否可以扩展到子页面上。组件对话框里有Show in subpages在子页面中显示勾选框。只有当此勾选框被勾选时,组件才会扩展。extras1/2promos区域都是这类继承的样例。

...

  • enabled属性启用和禁用区域继承,对组件继承和属性继承两者皆然。
  • components属性有三个选项:
    • all配置自动继承。此区域里添加的所有组件都自动延伸到子页面。
    • filtered配置选择性继承。此区域内添加的组件只有当组件对话框里的Show in subpage在子页面中显示框被勾选时才向下延伸。inheritable属性时在组件内容节点上创建,它的值被设置为true。该属性是选择器的触发者。只有该属性值为true的节点才被子页面继承。
    • none表示没有组件被继承。该属性有效的禁用了组件继承,不需要同时禁用属性继承。参看以下的属性继承

...

CSS和JavaScript可在必要时被添加到模板原型中。这个选项在/default/template/prototype配置中并未使用,因为所有必要的样式表和JavaScripts都被包含在缺省的pop主题里了,pop主题在网站定义/theme节点里提到。参考主题HTML头部区域以获得更多关于标准配置的信息。

以下配置样例在模板原型级别STK > Site Definitions 网站定义 /default/templates/prototype/cssFiles/jsFiles里添加了一个额外的Javascript和CSS文件。

...