Versions Compared

Key

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

STK具体页面模板和组件模板定义在STK > Template Definitions模板定义下配置。

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

Mgnl f
pages

 

Mgnl f
components

 

 

Table of Contents

页面定义

所有STK页面模板的具体模板定义都在STK > 模板定义 Template Definitions /pages里配置。

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

 pages 

Mgnl f
pages

 

Mgnl f
demo-features

 

Mgnl n
stkHome

 

Mgnl n
stkSection

 

Mgnl n
stkArticle

 

这些模板可供编辑者在Pages页面应用里选择使用。它们可以出现在Pages页面应用的Template域里,只需要:模板下拉菜单里,只需要:

  • 通用属性里,visible属性设置为true
  • 模板在模板在企业版的缺省网站定义或企业版里任意其他网站定义里可用。网站定义或其他网站定义里设置为可用。
  • 编辑者的权限已经足够获取特定的模板了。基于role的限制可利用原型里的编辑者的权限已经可以获取特定的模板了。如要通过角色来限制权限,可在原型里的/availability/<template name>/roles节点来添加。节点下配置。

可用的模板在不同的页面级别是不同的。例如,不同的页面级别可用的模板是不同的。例如,级别1可用stkHomestkRedirect在级别1可用,而stkRedirect,而级别2则可用stkSection和其他的则在级别2可用等。以下的和其他的模板。以下的类别和子类有关于如何实现网站层级的更多信息。有更多关于如何实现网站层级的信息。

所有具体的页面模板都是基于模板原型的。原型包含了缺省结构和行为,以及具体的对原型配置的例外,添加物,以及覆写的定义。参考的。原型包含了缺省结构和行为,具体模板则定义了对原型配置的例外、添加物和覆写。参考模板合并里的样例以了解它是如何工作的。里的样例来了解它是如何工作的。

为了能让系统识别,模板定义里的配置结构需要与模板原型里相应的配置一样。比较模板原型(prototype)和以下为了能使系统识别,模板定义里的配置结构需要与模板原型里相应的配置一样。比较模板prototype下面的stkEvent模板里关于infoBlock区域的配置,注意两者的节点结构是相同的。

Section
Column
width33%

模板原型

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

Mgnl n
default

 

Mgnl n
templates

 

Mgnl n
prototype

 

Mgnl n
areas

 

Mgnl n
main

 

Mgnl n
areas

 

Mgnl n
intro

 

Mgnl n
areas

 

Mgnl n
infoBlock

 
Column
width33%

模板定义

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

Mgnl n
stkEvent

 

Mgnl n
areas

 

Mgnl n
main

 

Mgnl n
areas

 

Mgnl n
intro

 

Mgnl n
areas

 

Mgnl n
infoBlock

 
Column
width33%

 

为使模板独一无二,您可以在模板定义里:为了使模板具有唯一性,您可以在模板定义里:

  • 覆写原型里的大多数属性和内容节点配置。
  • 为原型配置添加物。添加物为原型里所没有的新配置,能够添加功能,区域,组件,以及其他特性。为原型配置添加物。添加物为原型里所没有的新配置,能够添加功能、区域、组件以及其他特性。

没有硬性的快速规则。在典型安装里,模板原型里应包含的配置,与具体模板相比,是一个较为实用而非技术化的选择。配置模板没有硬性的快速规则。一个典型安装里模板原型包含的配置,与具体模板相比,只是一个较为实用而非技术化的选择。

对原型的修改可以在以下级别进行:

  • 页面级,如引用一个新的templateScript。以下讨论的stkRedirect模板就是这样的一个例子。
  • 导航级,通过修改缺省导航配置或编写一个全新的。这通常不是必须的,但适用于特殊定制的模板。或编写一个全新的配置。这通常不是必须的,但可能适用于特别定制的模板。
  • 区域级,通过引用不同的脚本并改变区域行为。参考main区域main区域样例。
  • 变异形式级,通过为特定模板禁止区域,好让区域为特定变异形式绘制。参考变异形式级,在特定模板里禁止区域,这样区域只会在指定的变异形式绘制,而不会在其他变异形式绘制。参考移动性以了解这个选项是如何用在了解这个选项是如何用在stkHome模板的stage区域里的。
  • JavaScript和CSS级,通过引用不同的CSS表或JavaScript。此选项通常不是必须的,无论在原型还是具体模板定义里都不会使用,不过以下的JavaScript和CSS级,引用不同的CSS表或JavaScript。很少需要这种做法,无论原型还是具体模板定义都没有使用,不过CSS和JavaScript是一个配置样例。里有一个配置样例。

模板属性

多数模板属性是在具体模板级别分配的,它们能够区分不同的模板。多数模板属性是在具体模板级别分配的,能够区分不同的模板。

参考资料部分的页面>属性里有可用的模板属性的完整列表及其用法。里有一个完整的列表,包含了可用的模板属性及用法。

通用属性

模板原型里分配的唯一一个对所有具体模板都可用的属性是里分配的唯一一个所有具体模板都可用的属性是templateScript,它引用管理页面脚本,,用来引用管理页面脚本,即main.ftl

除了这一个例外,以下通用属性为所有STK模板所用:除此之外,所有STK模板都使用以下通用属性:

  • class节点里分配的STKPage定义基本模板定义。
  • modelClass节点里分配的STKPageModel为基本页面模型,提供页面级功能。它扩展是基本页面模型,提供页面级功能。它扩展了STKPage
  • 值为stk的renderType节点分配STKRenderer为STK专用绘制器,被所有STK模板(页面和组件)使用。
  • renderType节点下值为stk时,分配的STK专用绘制器,STKRenderer。所有STK模板(页面和组件)都可以使用这个绘制器。
  • i18nBasename节点下分配的国际化关键字,国际化关键字,info.magnolia.module.templatingkit.messages,在i18nBasename节点下分配。这也是指向包含STK翻译的消息包的关键字。。这也是STK翻译的消息包关键字。
  • visible属性设置为true,使编辑者在页面应用里可以选择该模板。设置为truevisible属性使模板在Pages应用里对编辑者可用。

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

     

    Mgnl f
    pages pages

     

    Mgnl n
    stkArticle

     

    Mgnl n
    areas

     

    mgnl-p
    bodyID

    article

    mgnl-p
    category

    content

    mgnl-p
    class

    info.magnolia.module.templatingkit.templates.pages.STKPage

    mgnl-p
    dialog

    standard-templating-kit:pages/article/stkArticleProperties

    mgnl-p
    i18nBasename

    info.magnolia.module.templatingkit.messages

    mgnl-p
    modelClass

    info.magnolia.module.templatingkit.templates.pages.STKPageModel

    mgnl-p
    renderType

    stk

    mgnl-p
    subcategory

    article

    mgnl-p
    title

    templates.stkArticle.title

    mgnl-p
    visible

    true

有两个例外:

  • stkGlossary模板使用它自己的modelClassGlossaryTemplateModel,来扩展STKPageModel<STKPage>,完成字母序排列的术语表,即GlossaryTemplateModel,这个模型类通过扩展STKPageModel<STKPage>来完成按字母排序的词汇表。

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

     

    Mgnl f
    pages pages

     

    Mgnl n
    stkGlossary

     

    Mgnl n
    areas

     

    mgnl-p
    bodyID

    glossary

    mgnl-p
    category

    feature

    mgnl-p
    class

    info.magnolia.module.templatingkit.templates.pages.STKPage

    mgnl-p
    dialog

    standard-templating-kit:pages/glossary/stkGlossaryProperties

    mgnl-p
    i18nBasename

    info.magnolia.module.templatingkit.messages

    mgnl-p
    modelClass

    info.magnolia.module.templatingkit.templates.GlossaryTemplateModel

    mgnl-p
    renderType

    stk

    mgnl-p
    subcategory

    glossary

    mgnl-p
    title

    templates.stkGlossary.title

    mgnl-p
    visible

    true
  • stkRedirect模板使用它自己的:
    • modelClassRedirectTemplateModel用于扩展STKPageModel并提供3个交替的重定向模式,这三个模式取决于编辑者设置的path值:,这个模型类扩展了STKPageModel,并提供3个可选的重定向模式。编辑者可以通过以下方式之一设置path值来选择模式:
      • 如果在对话框里输入了内部路径或外部URL,用户将会直接被重定向过去。为避免写入响应,绘制步骤会被跳过。
      • 如果没有输入路径,那么页面会重定向至找到的第一个子页面。这有利于直接显示一个在重定向树的二级或三级定义的页面。
      • templateScript:

      • 如果在对话里输入了内部路径或外部URL,用户将会直接被重定向过去,绘制被跳过,以避免写入响应。
      • 如果没有输入路径,那么页面重定向至找到的第一个子页面。这对于直接显示一个在重定向树的二级或三级定义的页面是很有用的。
      • templateScriptredirectMain.ftl在页面上正确地绘制路径。您可以在,在页面上绘制合适的路径。您可以在STK >模板 Templates /templating-kit/pages/functional/redirectMain.ftl里查看脚本。

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

         pages 

        Mgnl f
        pages

         

        Mgnl n
        stkRedirect

         

        Mgnl n
        areas

         

        mgnl-p
        bodyID

        redirect

        mgnl-p
        category

        functional

        mgnl-p
        class

        info.magnolia.module.templatingkit.templates.pages.STKPage

        mgnl-p
        dialog

        standard-templating-kit:functional/stkRedirect

        mgnl-p
        i18nBasename

        info.magnolia.module.templatingkit.messages

        mgnl-p
        modelClass

        info.magnolia.module.templatingkit.templates.RedirectTemplateModel

        mgnl-p
        renderType

        stk

        mgnl-p
        subcategory

        redirect

        mgnl-p
        templateScript

        /templating-kit/pages/functional/redirectMain.ftl

        mgnl-p
        title

        templates.stkRedirect.title

        mgnl-p
        visible

        true

在页面编辑器里,页面上绘制到内部或外部重定向的路径,但在预览里,则由目标页面绘制。在页面编辑器里,页面显示到内部或外部重定向的路径,但在预览里,则显示目标页面。/demo-project/service/m5-campaign页面基于页面使用的是stkRedirect模板。

模板特定属性

以下属性因每个模板而不同:

  • bodyID:这是专为模板的样式准备的CSS表所用的标签。参考:这是模板专有样式的CSS表所用的标签。参考Body类和ID以获得更多信息。bodyIDsubcategory值常常会一致,但它们彼此之间没有相通的关系。subcategory值常常会一致,但它们彼此之间没有依赖关系。
  • categorysubcategory:每个模板都会被分配一个类别,大多数也会被分配一个子类。类别被用在很多场合,参考下面的:每个模板都会分配到一个类别里,同时大多数模板也会分配到子类。很多场合都使用了类别,参考类别和子类
  • dialog:每个页面模板会连接到它自己的stk<Template name>Properties对话,这个对话在对话框,这个对话框在STK > 对话框定义 Dialog Definitions /pages里配置。每个页面顶部工具栏里的Properties按钮可以打开此对话,用来控制浏览器标题和导航标题及行为,页面管理数据(关键字和描述),变异排除和页面依赖性。详细信息参看属性对话里配置。页面顶部工具栏里的属性按钮可以打开此对话框,控制浏览器标题和导航标题及行为,页面元数据(关键字和描述),变异形式排除和页面依赖性。详细信息参看属性对话框
  • title:在Pages页面应用的Template域里显示的模板标题。模板下拉菜单里显示的模板标题。

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

     

    Mgnl f
    pages pages

     

    Mgnl n
    stkImageGallery

     

    Mgnl n
    areas

     

    mgnl-p
    bodyID

    image-gallery

    mgnl-p
    category

    feature

    mgnl-p
    class

    info.magnolia.module.templatingkit.templates.pages.STKPage

    mgnl-p
    dialog

    standard-templating-kit:pages/imageGallery/stkImageGalleryProperties

    mgnl-p
    i18nBasename

    info.magnolia.module.templatingkit.messages

    mgnl-p
    modelClass

    info.magnolia.module.templatingkit.templates.pages.STKPageModel

    mgnl-p
    renderType

    stk

    mgnl-p
    subcategory

    imageGallery

    mgnl-p
    title

    templates.stkImageGallery.title

    mgnl-p
    visible

    true

extends属性

Anchor
页面定义
页面定义
extends属性

Magnolia CMS使用扩展机制来最小化配置。这个机制类似于单个模板定义和原型定义之间的关系,只不过它很直观。扩展配置中只配置修改、例外和添加物,其他所有配置都照搬基本配置。扩展机制被用来最小化配置。该机制类似单个模板定义和原型定义之间的关系,只不过它很直观。只有修改,例外,和添加物才在扩展配置中配置,其他所有配置都照搬基本配置。

内容模板,也就是stkLargeArticlestkNewsstkEventstkGlossaryTerm,都是组成基本配置的,都是在stkArticle模板的扩展。您可以使用此机制轻松创建与缺省的STK模板类似的定制模板。模板基本配置上的扩展。您可以使用此机制轻松创建与缺省STK模板类似的定制模板。

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

 

Mgnl f
pages pages

 

Mgnl n
stkArticle

 

Mgnl n
stkLargeArticle

 

Mgnl n
stkNews

 

Mgnl n
areas

 

mgnl-p
dialog

standard-templating-kit:pages/news/stkNewsProperties

mgnl-p
extends

/modules/standard-templating-kit/templates/pages/stkArticle

mgnl-p
subcategory

news

mgnl-p
title

templates.stkNews.title

相似地,/pages/demo-features里的模板都是stkSection模板的扩展。这些模板展示了您可以通过配置来改变页面布局的多种途径。您可以在模板的扩展。这些模板展示了通过配置来改变页面布局的多种途径。您可以在demo-features站点的Section Variations里看到。

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

 

Mgnl f
pages pages

 

Mgnl f
demo-features

 

Mgnl n
stkSectionNoExtras

 

Mgnl n
areas

 

mgnl-p
extends

/modules/standard-templating-kit/templates/pages/stkSection

mgnl-p
title

Section no Extras

Mgnl n
stkSectionNoHeader

 

Mgnl n
stkSectionFloating

 

extends属性也可被设置为extends属性也可设置为override来覆写部分扩展配置。参考以下的来覆写部分扩展配置。参考使组件可用中的样例。

Tip

模板合并是一个自动化的过程,不依赖于扩展机制模板定义里不能使用extends=override属性不能被用在模板定义里来修改模板原型。属性来修改模板原型。

类别和子类

每个STK页面模板都属于一个类别,除stkHomestkRedirect以外的所有模板都有一个以外的每个模板都还属于一个子类(subcategory)。类别使您能够控制模板可被用在网站上的什么位置。如果一个模板类别不被允许在网站结构的指定位置出现,它将不会对编辑者可用。分类机制因此确保了模板分配的一致性,并使您的网站有一个可控的结构。)。类别让您能够控制模板在网站上出现的位置。如果网站结构的指定位置不允许一个模板类别出现,那么编辑者将看不到此类别。因此,分类机制确保了模板分配的一致性,并使您的网站有一个可控的结构。

类别建立了一个隐含的模板层次结构,它们定义哪个模板可被分配到一个页面。例如,类别建立了一个隐含的模板层次结构,定义页面可以分配的模板。例如,stkHome模板属于home分类。分类,home分类只能被用于网站的根页面。同样地,分类只能用于网站的根页面。相似地,content分类的模板只能被用在位于使用类模板只能用于使用了sectionfeature,或functional类模板页面下的页。类模板的页面的子页。

子类别用于内容聚合。例如,系统在news子类别里聚合了所有页面,以生成一个新闻要点的列表。子类可用于内容聚合。例如,系统在news子类里聚合了所有页面,以生成一个新闻要点的列表。RSS种子的生成就是一个例子。

以下五个模板类别非常符合STK模板的计划用途。以下五个模板类别与STK模板的计划用途相呼应。

类别描述类别里的模板
home网站的根页面。stkHome
functional执行操作而非生成内容的特定模板。stkRedirect
section组成网站的章节。demo-project站点有诸如新闻(News),事件(Events),和服务(Service)的章节。您的也可以是产品(Products),服务(Services),以及支持(Support)。stkSection(包括/demo-features里的变异形式), stkGlossaryLetter
feature特定模板和收集或聚合内容的模板。stkForm
stkFormStep
stkImageGallery
stkFAQ
stkPublicUserRegistration
stkSearchResult
stkSiteMap
stkGlossary
stkNewsOverview
stkEventsOverview
stkCategoryOverview
content核心内容页面。stkArticle
stkLargeArticle
stkNews
stkEvent
stkGlossaryTerm

模板的可用性和层次结构都由STKTemplateAvailability类来控制,这个类同时也实现TemplateAvailability包装类。后者包含网站上可用的模板列表。可用性首先在包装类(后者还包含了网站上可用模板的列表)。可用性首先在网站定义/template/availability节点下配置,其次是通过类别配置。类别的可用性逻辑被硬编码方式写入节点下配置,其次是通过类别配置。类别的可用性逻辑以硬编码(hard-coded)方式写入TemplateCategory里,它们不可以不通过扩展此类就直接声明。里,所以必须先扩展此类才能声明。另外,TemplateCategoryUtil为使用模板的类别添加实用方法。子类别不是固定的,您可以在模板定义里直接设置它们。为使用模板的类别添加了实用方法。子类别由于不是固定的,您可以直接在模板定义里设置。

硬编码的缺省类别可用性逻辑为:类别的可用性逻辑是硬编码的,它的默认设置为:

  • 只有homefunctional分类可以被分配给网站的根页面
  • home在每个页面只可以被分配一次。您可以定义很多主页模板,如有着不同的列布局的模板,都属于在每个页面只可以被分配一次。您可以定义很多主页模板,如有着不同的列布局的模板,使他们都属于home分类,但您一次只可以分配它们当中的一个。
  • functional可以被分配给任意页面,无论父模板的类别如何。这就意味着,比如,您可以在网站的任意位置有一个重定向页面等。可以被分配给任意页面,不管父模板的类别是什么。举个例子,也就是说,您可以在网站的任意位置有一个重定向页面。
  • section只可以被分配给父页面类别为homesectionfunctional,或feature的页面。换句话说,它可以被分配给除父页面为content页以外的所有页面。类以外的所有页面。
  • contentfeature可以被分配给父页面类别为sectioncontentfunctional,或feature的页面。换句话说,它可以被分配到除主页外的所有页面下。feature可以被分配给父页面类别为sectioncontentfunctional,或feature的页面。换句话说,它可以被分配到除主页外的所有页面下。的页面。换句话说,它们可以被分配到除主页外的所有页面下。

区域定义

区域定义很强大,您在定义里可以找到很多模板独特的配置。本小节概述了区域定义通常是如何使用的。为了演示方便,我们提供一些添加功能和特性的样例,来演示具体模板与区域定义功能强大,您可以在定义里找到很多模板独特的配置。本页概述了一般如何使用区域定义。为了演示方便,我们提供一些添加功能和特性的样例,来演示具体模板与模板原型的不同。的不同。这些样例展示了系统的灵活性,但并不详尽。STK区域里有对每个区域更深层的讨论。这些样例展示了系统的灵活性,但并不详尽。您可以把它们综合起来创造出更多的可能。里有对每个区域更深层的讨论。您可以把它们综合起来创造出更多的可能。

...

引用对话框

区域定义可以引用对话。该选项用在所有具体模板(除了区域定义可以引用对话框。除了stkHome)的的所有具体模板的main/intro区域,来引用模板专用的属性对话。参考intro区域以获得更多信息。区域都使用该选项,来引用模板专有的属性对话框。更多信息参考intro区域

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

Mgnl n
stkSection

 

Mgnl n
areas

 

Mgnl n
main

 

Mgnl n
areas

 

Mgnl n
intro

 

mgnl-p
class

info.magnolia.module.templatingkit.templates.MainAreaIntro

mgnl-p
dialog

standard-templating-kit:pages/section/stkSectionIntro

mgnl-p
divID

page-intro

mgnl-p
showAuthorDate

false

mgnl-p
showTextFeatures

false

使组件可用

模板原型使组件在区域内可用,区域里的所有模板有同样的一套组件是合理的。促销区域(使组件在区域内可用。所有模板的相同区域应该有同样的一套组件,促销区域(extraspromos,和base)便是这样的例子。main/content区域比较特别,在这里组件对具体模板可用。区域比较特别,在这里,组件的可用性在具体模板里定义。

组件可被添加到任何组件可添加到任何listsingle区域。详细信息可参考区域。详细信息参考区域类型

您可以添加组件到任意模板的您可以在任何模板的/areas/<area name>/availableComponents节点。以下的配置添加节点里添加组件。以下的配置在stkArticle模板的promos区域添加stkTextImagestkQuotedText组件到stkArticle模板的promos区域。加上原型使stkPromo组件可用,这样就共有三个组件在stkArticle里可用了。组件。加上原型使stkPromo组件可用,这样stkArticle里就共有三个组件了。

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

Mgnl n
stkArticle

 

Mgnl n
areas

 

Mgnl n
promos

 

Mgnl n
availableComponents

 

Mgnl n
stkTextImage

 

mgnl-p
id

standard-templating-kit:components/content/stkTextImage

Mgnl n
stkQuotedText

 

mgnl-p
id

standard-templating-kit:components/content/stkQoutedText
Tip

不是所有组件在所有区域里都能很好的绘制,您可能需要修改CSS表或组件定义。例如,在以上配置中,因为不是所有组件在所有区域里都能很好的绘制,您可能需要修改CSS表或组件定义。例如,在以上配置中,stkQuotedText将不会获得CSS表在将不使用CSS表在promos里使用的背景字体或quote.png图片,正如它在图片,这与它在main/content区域里一样。区域里的情况不同。

 

如果您想要减少原型里可用的组件数量,您可以使用enabled属性来禁用特定组件。注意extends=override属性不能用于这种情况,因为模板合并不依赖于扩展机制

以下的配置样例使用了stkEventsOverview模板。模板:

  • 该模板不是任何其他模板的扩展。
  • /areas/promos/availableComponents节点的添加使Magnolia CMS了解对原型的修改是在此区域配置的。CMS了解此区域修改了原型。
  • /availableComponents/stkPromo/enabled节点禁用此区域的节点禁用了此区域的stkPromo组件。
  • /availableComponents/stkExtrasContact节点使stkExtrasContact组件取代stkPromo组件可用stkExtrasContact节点里使能了stkExtrasContact组件,禁用了stkPromo组件。

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

    Mgnl n
    stkEventsOverview

     

    Mgnl n
    areas

     

    Mgnl n
    promos

     

    Mgnl n
    availableComponents

     

    Mgnl n
    stkPromo

     

    mgnl-p
    enabled

    false

    Mgnl n
    stkExtrasContact

     

    mgnl-p
    id

    standard-templating-kit:components/extras/stkExtrasContact

这里是这是/demo-project/news-and-events/events-overview页面上的新组件。

如果您想要使不同的组件在扩展了另一模板的模板里可用,您可以使用如果一个模板是对另一个模板的扩展,而您想要在前者中使用与后者里不同的组件,您可以使用extends=override属性。

下列配置样例使用了stkNews模板:

  • 该模板是stkArticle模板的一个扩展。这是在模板的扩展。这是在/stkNews/extends节点下配置的。
  • 添加/areas/content/extends属性并设置为override,就会告诉Magnolia CMS忽略(覆写)stkArticle模板里的/areas/content配置。这个配置使得8种内容组件可用。配置。这个配置使得8个内容组件可用。
  • 添加/areas/content/availableComponents节点使得节点,使stkNews模板里只有stkTextImage组件可用

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

    Mgnl n
    stkNews

     

    Mgnl n
    areas

     

    Mgnl n
    main

     

    Mgnl n
    areas

     

    Mgnl n
    content

     

    Mgnl n
    availableComponents

     

    Mgnl n
    stkTextImage

     

    mgnl-p
    id

    standard-templating-kit:components/content/stkTextImage

    mgnl-p
    extends

    override

    mgnl-p
    dialog

    standard-templating-kit:pages/news/stkNewsProperties

    mgnl-p
    extends

    /modules/standard-templating-kit/templates/pages/stkArticle

    mgnl-p
    subcategory

    news

    mgnl-p
    title

    templates.stkNews.title

限制组件使用

您可以在模板定义里限制任意区域内可用组件的使用权。您可以在模板定义里,限制对区域内任意可用组件的使用权。stkArticle模板里有一个配置样例,限制了只有被分配了模板里有一个配置样例,限制了只有superuser角色的用户可以使用stkHTML组件。任何有着较少权限的用户都不可以使用该组件。此项配置在STK > Template Definitions 组件,任何有着较少权限的用户都不可以使用该组件。这是在STK > 模板定义 /pages/stkArticle/areas/main/areas/content/availableComponents/stkHTML里:里配置的:

  • roles内容节点警告Magnolia CMS可能的使用限制。内容节点提醒Magnolia CMS可能有使用限制。
  • 值也为superusersuperuser数据节点限制了只有被分配了superuser角色的用户才能使用组件。参考角色里的详细信息。属性值也设置为superuser,限制了只有superuser角色的用户才能使用组件。详细信息参考角色RolesRoles

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

    Mgnl n
    stkArticle

     

    Mgnl n
    areas

     

    Mgnl n
    main

     

    Mgnl n
    areas

     

    Mgnl n
    content

     

    Mgnl n
    availableComponents

     

    Mgnl n
    stkHTML

     

    Mgnl n
    roles

     

    mgnl-p
    superuser

    superuser

    mgnl-p
    id

    standard-templating-kit:components/content/stkHTML

    Mgnl n
    stkTextImage

     

    Mgnl n
    stkQuotedText

     

您可以这样来测试,以样例编辑者Eric(您可以这样来测试:以样例编辑者Eric(username/password=eric)的身份登录,并尝试添加stkHTML组件到任何文章页面的content区域。stkHTML组件在选择器对话里不可用。)的身份登录,尝试在任意文章页面的content区域添加stkHTML组件。结果将会是,stkHTML组件在选择器对话框里不可用。

(warning) 4.5.9 + 引入了两个有关组件可用性的新特性。它们以与原型模板里相同的方式在模板级别上配置。您也可以:引入了两个有关组件可用性的新特性,它们与原型模板一样在模板级别配置。您也可以:

  • maxComponents属性限制编辑者能够添加到区域里的组件数量。
  • 基于分配给用户的角色,定义细粒度的行为限制。参考限制组件动作以获得更多信息。

修改区域行为

main/content区域是把模板区别开的主要因素。在模板原型里,该区域被定义为typecontent区域是把模板区别开的主要因素。在模板原型里,该区域定义为type=list,缺省情况下允许无数量限制的添加有序组件。,默认允许无限量添加有序组件。

  • stkHomestkSection和内容模板保持缺省类型。在和内容模板里保持默认区域类型。从/areas/main/areas/content/availableComponents节点里,要点在节点可以看到,stkHomestkSection模板里可用,内容组件在内容模板(模板里可使用要点,内容模板(stkArticle)里可用。)里可使用内容组件。

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

    Mgnl n
    stkHome

    Mgnl n
    areas

    Mgnl n
    main

    Mgnl n
    areas

    Mgnl n
    content

    Mgnl n
    availableComponents

    Mgnl n
    stkTeaser

    Mgnl n
    stkTeaserNewsList

    Mgnl n
    stkTeaserEventsList

    Mgnl n
    stkTeaserGroup

    Mgnl n
    stkTeaserHorizontalTabbed

    Mgnl n
    stkTeaserPureLinkList

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

    Mgnl n
    stkArticle

    Mgnl n
    areas

    Mgnl n
    main

    Mgnl n
    areas

    Mgnl n
    content

    Mgnl n
    availableComponents

    Mgnl n
    stkTextImage

    Mgnl n
    stkTextImage
    stkQuotedText

    Mgnl n
    stkLinkList

    Mgnl n
    stkFlash

    Mgnl n
    stkVideo

    Mgnl n
    stkTeaserHorizontalTabbed

    Mgnl n
    stkDownloadList

    Mgnl n
    stkContact

    Column
    width33%

     

  • 特性模板覆写了缺省类型,将其改为single。该特性组件在特性模板覆写了默认类型,将其改为single。特性组件在/areas/main/areas/content/autoGeneration/content/singleton节点里添加。参考以下的节点里添加。参考特色组件自动生成的组件以获得更多信息。

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

    Mgnl n
    stkImageGallery

     

    Mgnl n
    areas

     

    Mgnl n
    main

     

    Mgnl n
    areas

     

    Mgnl n
    content

     

    Mgnl n
    autoGeneration

     

    Mgnl n
    content

     

    Mgnl n
    singleton

     

    mgnl-p
    maxImages

    9

    mgnl-p
    nodeType 

     mgnl:component

    mgnl-p
    templateId

     standard-templating-kit:components/features/stkImageGallery

    mgnl-p
    generatorClass

     info.magnolia.rendering.generator.CopyGenerator

    mgnl-p
    type

    single

使能区域

大多数区域在原型里是使能的,因此需要在特定的模板定义里禁用,以改变缺省设置。这是通过将大多数区域在原型里是使能的,因此需要在特定的模板定义里禁用,改变默认设置。您可以将/areas/<area name>内容节点下的enabled属性节点值设置为false实现的。类似来做到。另一方面,类似stageplatform这样很少使用到的区域在原型里是不使能的。这种情况可以设置的区域由于很少使用,所以在原型里是不使能的,这种情况就需要设置enabled属性值为true来改变缺省行为。来改变。

使能或禁用区域:使能或禁用区域,将会:

  • 决定整个区域绘制或不绘制,无论区域包含诸如组件的内容,自动生成的内容,还是脚本绘制的内容。内容会保留在内容库中,并且当一个之前被禁用的区域被重新使能后,将会再次绘制。您可以通过在决定整个区域是否绘制,无论区域包含的是组件,自动生成的内容,还是脚本绘制的内容。内容会保留在内容库中,并且在一个被禁用的区域重新使能后,将会再绘制。您可以在stkArticle模板上禁用extras,并在Tools 工具 > JCR里查看任何文章页来验证。里查看任意文章页来验证。

    Section
    Column
    width33%

    模板定义

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

    Mgnl n
    stkArticle

     

    Mgnl n
    areas

     

    Mgnl n
    extras

     

    mgnl-p
    enabled

    false

    mgnl-p
    bodyID

    article
    Column
    width33%

    JCR浏览器(网站)

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

    Mgnl f
    demo-project

     

    Mgnl f
    about

     

    Mgnl f
    subsection-articles

     

    Mgnl f
    article

     

    Mgnl n
    extras

     

    Mgnl n
    extras1

     

    Mgnl n
    0

     

    Mgnl n
    00

     
  • 将会对模板扩展与对基本模板有同样的效果。例如,如果您在对扩展模板与基本模板有着同样的作用。例如,如果您在stkArticle上禁用extras,这样将会在所有内容模板上都禁用该区域。添加,所有内容模板上都会禁用该区域;要在您的扩展模板上使能该区域,需要在扩展模板上添加enabled属性并在您想要包含该区域的模板扩展上将其设置为属性并设置为true,就可以修改了。
  • 可能影响页面布局。以下是一些样例,样例中的结果主要是由于页面排列和内容包装的方法造成的。可能会影响页面布局。以下的结果主要是由于页面排列和内容包装的方法造成的。这里是一些样例:
    • extras被禁用时,main区域会展开,以使用可用空间。区域会展开占用所有的可用空间。

    • promos被禁用时,可用空间里什么都不会绘制。被禁用时,原本它占用的可用空间里什么都不会绘制。

    • basestage,或是或是sectionHeader被禁用时,内容会上移绘制,就像被禁用的区域不存在一样。同样的行为也发生在区域被使能但不包含任何内容的预览模式里。下面的截图为禁用了被禁用时,内容会上移显示,就像被禁用的区域不曾存在一样。区域在使能但不包含任何内容时,预览模式里也会发生同样的情况。下面的截图为禁用了stagestkHome模板。
    • 当浮显(floating)在main区域里被使能,并列数设置为main区域里使能浮显(floating),并且将columns设置为2时,main区域里的第二列只会在extras被禁用时绘制。下面的截图展示了基于/demo-features/stkSectionFloating模板的demo-features/section-variations/floating页面。

添加区域

在模板定义里,您可以添加模板原型里没定义的区域。在模板定义里,您可以添加模板原型里没有的区域。以下的例子里,stkSection模板的main区域会创建一个新的嵌套区域,区域会创建一个新的嵌套区域,即opener区域。

以下对原型配置的修改与新的新的opener区域有关:r区域通过下列对原型配置的修改实现:

  • /areas/main节点:
    • 使用它自己的类,SectionMainArea,用来定义,来定义opener区域属性。
    • /section/mainArea.ftl脚本绘制,该脚本与缺省的脚本绘制。该脚本与默认使用的/global/mainArea.ftl脚本除了使用脚本唯一的不同在于,它使用[@cms.area name="opener"/]标签添加了opener区域外完全相同。区域。
  • /areas/main/areas/opener节点:
    • 配置新配置opener区域。
    • 是一个只能绘制一个组件的single区域。
    • enabledoptional的,意味着它虽然可用,但编辑者可能会选择删除它。
    • /section/opener.ftl这个标准的single区域脚本绘制。
    • 使stkTeaserOpener组件在availableComponents节点里可用。availableComponents节点里设置stkTeaserOpener组件可用。

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

      Mgnl n
      stkSection

       

      Mgnl n
      areas

       

      Mgnl n
      main

       

      Mgnl n
      floating

       

      Mgnl n
      areas

       

      Mgnl n
      intro

       

      Mgnl n
      opener

       

      Mgnl n
      availableComponents

       

      Mgnl n
      stkTeaserOpener

       

      mgnl-p
      id

      standard-templating-kit:components/teasers/stkTeaserOpener

      mgnl-p
      description

      areas.templates.main.opener.description

      mgnl-p
      enabled

       true

      mgnl-p
      optional

      true

      mgnl-p
      templateScript 

       /templating-kit/pages/section/opener.ftl

      mgnl-p
      title

      areas.templates.main.opener.title

      mgnl-p
      type

      single

      Mgnl n
      content

       

      mgnl-p
      class

      info.magnolia.module.templatingkit.templates.SectionMainArea

      mgnl-p
      templateScript

      /templating-kit/pages/section/mainArea.ftl

使能浮显

浮显就意味着该区域内的组件在指定数目的列里绘制。缺省情况下,浮显在浮显(floating)是指该区域内的组件在指定数目的列里绘制。默认情况下,浮显在stkHomestkSectionFloating模板的main区域内是使能的。demo-project主页和的主页和demo-features/section-variations/floating页面就是建立在这些模板之上的。这里就是页面就使用了这两个模板。下图显示了demo-project主页的main区域。

浮显是在模板定义的<template name>/areas/main 内容节点里配置的。在STK > Template Definitions 模板定义 /pages/stkHomestkHome模板下:模板里:

  • /areas/main:
    • 使用SectionMainArea类定义浮显属性。
    • section/MainArea.ftl脚本绘制,简单的绘制所有嵌套区域。
  • areas/main/floating里:
    • enabled节点被设置为节点设置为true来使能浮显。您可以将此属性设置为false来禁用。
    • 列数设置为columns设置为3,告诉Magnolia CMS在三列中绘制组件。可用的选项有CMS在三列中绘制组件。此属性可用的选项有12,和3。由于其他嵌套区域都被禁用,只有在/areas/main/areas/content/availableComponents节点下可用的组件会在main区域里绘制。
  • areas/main/areas/content
    • 使一些要点组件在/availableComponents节点里可用。这些组件被配置在一个浮显区域内工作(参看下表)。节点里可用。这些组件被配置在一个浮显区域内工作(见下表)。
    • section/contentArea.ftl脚本绘制。该脚本包含绘制teaserCount的代码(参看下表)。的代码(见下表)。
  • /areas/main/areas/intro/opener/breadcrumb被禁用了,意味着在此模板上,浮显只出现在/areas/main/areas/content里。禁用其他嵌套区域不是严格必须的。里。您并不一定需要禁用其他嵌套区域。
  • /areas/extras被禁用,以确保此页解析到一个allowedBodyClass里(参看下表)。extras被禁用,以确保此页解析到一个allowedBodyClass里(见下表)。

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

    Mgnl n
    stkHome

     

    Mgnl n
    areas

     

    Mgnl n
    main

     

    Mgnl n
    floating

     

    mgnl-p
    columns

    3

    mgnl-p
    enabled

    true

    Mgnl n
    areas

     

    Mgnl n
    content

     

    Mgnl n
    availableComponents

     

    mgnl-p
    templateScript

    /templating-kit/pages/section/contentArea.ftl

    mgnl-p
    title

    templates.stkHome.areas.main.content.title

    Mgnl n
    intro

     

    mgnl-p
    class

    info.magnolia.module.templatingkit.templates.MainAreaIntro

    mgnl-p
    enabled

    false

    Mgnl n
    opener

     

    Mgnl n
    breadcrumb

     

    mgnl-p
    class

     info.magnolia.module.templatingkit.templates.SectionMainArea

    mgnl-p
    templateScript

    /templating-kit/pages/section/mainArea.ftl

    Mgnl n
    extras

     

    Mgnl n
    inheritance

     

    mgnl-p
    class 

    info.magnolia.module.templatingkit.templates.ExtrasArea

    mgnl-p
    enabled

    false

缺省情况下,您可以扩展默认情况下,您可以扩展stkHomestkSection模板来配置一个浮显模板,因为它们都使用模板来配置一个浮显模板,这是因为它们都使用SectionMainArea类和要点组件。其它的场景需要定制。类和要点组件。其它的场景则需要定制。STK > Template Definitions 模板定义 /pages/demo-features/stkSectionFloating里的stkSectionFloating模板就是扩展stkSection模板的一个例子:模板的一个例子,它:

  • 此模板在stkSectionFloating/extends节点下扩展stkSection模板。通过扩展:
    • 合适的要点组件在需要的要点组件在/areas/main/content/availableComponents节点下可用。
    • 使用SectionMainArea类。类得到使用。
  • /areas/main/floating节点,floating被使能且列数设置为被使能且columns设置为2
  • /areas/main/areas节点,introopener区域被禁用。
  • /areas/extras节点,extras区域被禁用。

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

    Mgnl f
    demo-features

     

    Mgnl n
    stkSectionFloating

     

    Mgnl n
    areas

     

    Mgnl n
    main

     

    Mgnl n
    floating

     

    mgnl-p
    columns

    2

    mgnl-p
    enabled

    true

    Mgnl n
    areas

     

    Mgnl n
    intro

     

    mgnl-p
    enabled

    false

    Mgnl n
    opener

     

    mgnl-p
    enabled

    false

    Mgnl n
    extras

     

    Mgnl n
    inheritance

     

    mgnl-p
    class

    info.magnolia.module.templatingkit.templates.ExtrasArea

    mgnl-p
    enabled

    false

    Mgnl n
    base

     

    mgnl-p
    extends

    /modules/standard-templating-kit/templates/pages/stkSection

    mgnl-p
    title

    Section Floating

这就是基于这是基于stkSectionFloating模板的公共实例上的模板的demo-features/section-variables/floating页。该页解析到页在公共实例上的样子。该页解析到body元素里包含的一个属性(attribute)元素里包含的一个属性(attribute),即allowedBodyClass=nav-col-float2里。main区域的每个要点都被包在一个DIV元素内。区域的每个要点都包装在一个DIV元素内。

为确保浮显被使能后组件能够正确绘制,需要考虑以下几点因素:为确保浮显使能后组件能够正确绘制,需要考虑以下几点因素:

  • BodyClassResolver Java类自动解析此页的bodyClass。区域应在需要时被使能或禁用,以确保页面解析到一个allowedBodyClass。参看。更多信息参看body类以获得更多信息。
  • CSS表格引用此CSS表单引用此bodyClass以保证正确的样式。
  • 当浮显列数被配置后,配置了浮显列数以后,teaserCount会告诉Magnolia CMS哪里可以绘制每个要点。参看告诉Magnolia CMS哪里可以绘制每个要点。更多信息参看Teaser IDs以获得更多信息。
    • 每个要点定义的配置都有一个divId和一个divIdPrefix属性来辅助属性,以辅助teaserCount
    • 单个组件脚本里的FreeMarker代码分配一个要点ID和单个组件脚本里的FreeMarker代码分配一个要点ID,然后由section/contentArea.ftl脚本来在此区域里绘制脚本在此区域里绘制teaserCount

变异形式

变异形式用于某些特定用途,例如重新设计智能手机和平板这样的设备的内容格式,或已登录用户组的特定输出等。参看移动里关于演示站点里用到的智能手机变异形式样例的详细讨论,以及通知里关于此核心功能的更多信息。

变异形式可以用于多种用途,例如重新排版智能手机和平板设备的内容,或已登录用户组的特定输出等。移动性里有关于演示站点里smartphone变异形式样例的详细讨论,通道里也有此核心功能的更多信息。

变异形式通常在网站定义里配置,但也可以在模板定义里的模板级别上配置。舞台是使用该选项在智能手机上禁用变异形式通常在变异形式里配置,但只可以在模板定义里模板级别上配置。参看舞台里关于该选项是如何在智能手机上禁用stage区域的例子。

(warning) 4.5.3 +

在页面模板级别,您可以配置一个由页面URL扩展触发的变异形式。注意这种变异形式不可在网站定义里配置。在页面模板级,您可以配置一个由页面URL扩展名触发的变异形式。注意这种变异形式不可在网站定义里配置。

在以下的配置样例中,newsletter变异形式禁用了sectionHeaderextraspromos,和base区域,只剩主要内容。这个变异形式可能适用于如新闻简报的在线版或页面的打印版。区域,只留下主要内容。这个变异形式可能适用于如在线版的新闻简报,或是打印版的页面。

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

Mgnl n
stkSection

 

Mgnl n

 

areas

 

Mgnl n
variations

 

Mgnl n
newsletter

 

Mgnl n
areas

 

Mgnl n
sectionHeader

 

mgnl-p
enabled

false

Mgnl n
extras

 

mgnl-p
enabled

false

Mgnl n
promos

 

mgnl-p
enabled

false

Mgnl n
base

 

mgnl-p
enabled

false

如果您在基于如果您在任意基于stkSection模板的任何页面上请求内容,将扩展名从模板的页面上,只需将扩展名从.html改为.newsletter,变异内容就出现了。,变异形式的内容就出现了。

您可以将这个与网站定义里配置的smartphone变异结合起来,只需要添加变异形式结合起来,通过添加?mgnlChannel=smartphone参数来使参数,使newsletter变异形式为适合智能手机的格式。变异形式变为适合智能手机的格式。

变异形式通过DefaultRenderableVariationResolver解析,这个解析器是ChannelVariationResolverExtensionVariationResolver的结合。的结合)解析。

 

Warning

此功能需小心使用,因为它允许用户通过改变URL扩展名来获取内容。如果要用于敏感内容,那么可以考虑通过扩展此功能使用时需小心,因为它允许用户通过改变URL扩展名来获取内容。如果用于敏感内容,那么考虑扩展DefaultRenderableVariationResolver来提供额外的安全措施。

 

CSS和JavaScript

您也可以为单个模板在模板定义里引用模板专用的CSS表格和JavaScripts。此选项对如网站的节假日活动或专用章节可能会有用。您也可以在模板定义里,为单个模板引用模板专有的CSS表和JavaScripts。这个功能可用于如网站的节假日活动或专有章节。

下列配置样例分配一个专有CSS表格和一个附加JavaScript到下列配置样例在stkArticle模板。模板里分配一个特定的CSS表和一个附加JavaScript。

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

Mgnl n
stkArticle

 

Mgnl n
cssFiles

 

Mgnl n
articleStyles

 

mgnl-p
farFutureCaching

true

mgnl-p
link

/resources/templating-kit/css/articleStyles.css

mgnl-p
media

screen

Mgnl n
jsFiles

 

Mgnl n
fireworks

 

mgnl-p
farFutureCaching

true

mgnl-p
link

/resources/templating-kit/js/fireworks.js

组件定义

组件是页面上最小的内容块。STK包括用于所有使用案例的组件,和从简单的文本组件到复杂的聚合要点等可用组件。单个组件在组件是页面上最小的内容块。STK包括用于所有使用案例的组件,可用组件(从简单的文本组件到复杂的聚合要点组件),以及更多。单个组件在组件页上讨论。

组件定义在STK > Template Definitions 模板定义 /components里配置。定义以文件夹的形式排列,文件夹名表示组件类型。里配置,以文件夹的形式排列,文件夹名表示组件类型。

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

Mgnl f
components

 

Mgnl f
content

 

Mgnl f
teasers

 

Mgnl f
extras

 

Mgnl f
promos

 

Mgnl n
stkPromo

 

Mgnl f
features

 

Mgnl f
links

 

Mgnl f
stages

 

Mgnl f
footer

 

Mgnl f
pur

 

组件定义与页面定义相似,都使用同样的模板定义对象。页面和组件使用相同路径语法引用它们的对话。此外,页面和组件使用相同的绘制工具绘制。组件定义与页面定义相似,使用相同的模板定义对象。页面和组件使用相同路径语法引用它们的对话框。此外,页面和组件还使用相同的绘制工具绘制。

在很多时候,都不需要从头开始创建一个新组件,您可以拷贝或扩展现有的,并按您的需要调整。多数情况下,您不需要从头开始创建一个新组件;您可以拷贝或扩展现有的,并按您的需要调整。

通常创建新组件包括以下几步:

  1. 创建一个对话。创建一个对话框。
  2. 创建一个组件定义。
  3. 创建一个组件脚本。
  4. 使组件对组件脚本可用。

组件可用于编辑者通过编辑者可以在STK > Dialog Definitions里配置的相关组件对话输入内容。对话定义通过对话属性映射到组件定义里。对话框定义里配置的相关组件对话框输入内容,来使用组件。对话框定义通过dialog属性映射到组件定义里。

大多数组件在区域定义里分配给页面模板,区域定义可以是大多数组件在模板原型或具体页面模板定义的区域定义里被分配给页面模板。定义的。

组件模板属性

所有的STK组件定义都有以下属性:

  • description:指向组件描述的消息包关键字。
  • dialog:到对话定义的路径,有着:到对话框定义的路径,结构为<module name>:<path to definition>结构。大多数STK对话都在。大多数STK对话框都在STK > Dialog Defintions对话框定义下配置。
  • 118nBasename:国际化关键字,:国际化关键字,即info.magnolia.module.templatingkit.messages,指向包含STK翻译的消息包。
  • renderType:值为stk时分配的STKRenderer是一个STK专用的绘制器,为所有的STK模板(页面和组件)所使用。
  • templateScript:指向绘制组件的脚本的路径。组件脚本在STK Templates > 模板 /templating-kit/components下。
  • title:在组件工具栏里绘制的组件标题。
  • deletable决定组件是否能被删除。如果设置为false,那么Delete component动作在动作栏里不可用。删除组件在动作栏里不可用。(warning) 4.5.9+
  • moveable决定组件是否能被移动。如果设置为false,那么移动图标在组件工具栏里不绘制,并且Move component移动组件动作在动作栏里不可用。(warning) 4.5.9+
  • writable决定组件是否能被编辑。如果设置为false,那么编辑图标在组件工具栏里不绘制,并且Edit component编辑组件动作在动作栏里不可用。(warning) 4.5.9+

参考资料 > 组件里有可用的组件模板属性以及它们的用法的完整列表。里有可用的组件模板属性的完整列表及用法。

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

Mgnl f
components

 

Mgnl f
content

 

Mgnl n
stkQuotedText

 

mgnl-p
deletable

false

mgnl-p
description

paragraphs.content.stkQuotedText.description

mgnl-p
dialog

standard-templating-kit:components/content/stkQuotedText

mgnl-p
i18nBasename

info.magnolia.module.templatingkit.messages

mgnl-p
moveable

false

mgnl-p
renderType

stk

mgnl-p
templateScript

/templating-kit/components/content/quotedText.ftl

mgnl-p
title

paragraphs.content.stkQuotedText.title

mgnl-p
writable

true

以上的配置样例中,以上配置样例中,deletablemoveablewritable 属性的使用使得组件可编辑,同时禁止移动和删除。以下为编辑者在页面编辑器里看到的。属性的配置使组件可编辑,但不可移动或删除。以下为编辑者在页面编辑器里看到的。

Tip

你也可以在原型或具体模板定义的区域定义里限制组件动作,利用分配给用户的角色你也可以利用分配给用户的角色,在原型的或具体模板的区域定义里限制组件动作

模型类

很多组件使用它们自己的模型类,为组件提供业务逻辑,并且在一些实例中使定制属性对脚本可用。例如,以下的很多组件使用它们自己的模型类(model class),提供组件的业务逻辑,并且有时使脚本可以使用定制的属性。例如,以下的stkTeaser组件使用了InternalTeaserModel,允许链接到要点组件的内部内容。,允许要点组件链接到内部内容。

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

Mgnl f
components

 

Mgnl f
teasers

 

Mgnl n

 

stkTeaser

 

Mgnl n
parameters

 

Mgnl n
areas

 

mgnl-p
description

paragraphs.teasers.stkTeaser.description

mgnl-p
dialog

standard-templating-kit:components/teasers/stkTeaser

mgnl-p
i18nBasename

info.magnolia.module.templatingkit.messages

mgnl-p
modelClass

info.magnolia.module.templatingkit.templates.components.InternalTeaserModel

mgnl-p
renderType

stk

mgnl-p
templateScript

/templating-kit/components/teasers/internalPage.ftl

mgnl-p
title

paragraphs.teasers.stkTeaser.title

internalPage.ftl脚本绘制模型使能的目标内容的属性。以下为这个脚本的片段,该脚本在脚本绘制模型里配置的目标内容的属性。该脚本在STK > Templates 模板 /templating-kit/components/teasers/interalPage.ftlftl,以下为这个脚本的片段

Code Block
[#-- Assigns: Get and check Teaser Target --]
[#assign target = model.target!]
[#assign hasTarget = target?has_content]

[#-- Assigns: Macro assigning Values --]
[#macro assignValues]
    [#-- Assigns: Get Content --]
    [#assign title = content.teaserTitle!target.title!target.@name]
    [#assign kicker = target.kicker!]
    [#assign text = content.teaserAbstract!target.abstract!]
    [#assign teaserLink = model.teaserLink!]

参数

组件定义的模板脚本可直接使用组件定义的/<component name>/parameters节点里的属性对模板脚本可用,无需支持的模型类。这是一个嵌入功能。此节点也同样被模板类参数使用。节点里的属性,而无需支持的模型类。此节点也同样用作模板类参数。这是一个嵌入的功能。

参数属性被大量用于CSS样式。例如,在下面的stkTeaserNewsList组件定义配置里:

  • 为了达到使用CSS样式的目的,模板里设置了divClassdivIDPrefixheadingLevel属性可用于模板CSS样式目的,并且不依赖于模型类。更多信息可参考属性。这些属性不依赖于模型类。更多信息可参考Teaser IDs
  • searchForSubcategory属性由NewsListModel模型类定义对模板可用。组件生成要点列表,要点为基于模板通过NewsListModel modelClass设置了searchForSubcategory属性。这个组件会生成一个要点列表,其中要点的目标页面基于subcategory=news页面模板的目标页面。的页面模板。
  • teaserLinkType属性也由属性也通过modelClass使能,并且将要点链接识别为内部链接。被模板所用,它标记要点链接为internal链接。
Advanced Tables - Table Plus
heading0
multiplefalse
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名

Mgnl f
components

 

Mgnl f
teasers

 

Mgnl n
stkTeaserNewsList

 

Mgnl n
parameters

 

mgnl-p
divClass

teaser latest

mgnl-p
divIDPrefix

teaser

mgnl-p
headingLevel

h2

mgnl-p
searchForSubcategory

news

mgnl-p
teaserLinkType

internal

mgnl-p
description

paragraphs.teasers.stkTeaserNewsList.description

mgnl-p
dialog

standard-templating-kit:components/teasers/stkTeaserNewsList

mgnl-p
i18nBasename

info.magnolia.module.templatingkit.messages

mgnl-p
modelClass

info.magnolia.module.templatingkit.templates.components.NewsListModel

mgnl-p
renderType

stk

mgnl-p
templateScript

/templating-kit/components/teasers/newsList.ftl

mgnl-p
title

paragraphs.teasers.stkTeaserNewsList.title

以下为newsList.ftl脚本如何绘制脚本绘制divClassdivIDPrefixheadingLevel属性的。您可以在属性的代码。您可以在STK >> 模板 Templates /templating-kit/components/teasers/newsList.ftl获得此脚本。找到此脚本。

Code Block
[#-------------- RENDERING PART --------------]
[#-- Rendering: Latest News --]
<div class="${divClass}" ${divID} >

    <${headingLevel}>${content.teaserTitle}</${headingLevel}>

以下为由以下为stkNewsList组件绘制而成的HTML。 组件绘制的HTML。 

嵌套组件

很多STK组件都有嵌套组件。在页面上,主组件被首先创建,然后编辑者会创建子组件。很多STK组件都有嵌套组件。在页面上,主组件首先被创建,然后编辑者会创建子组件。stkPureLinkList主组件只允许一个组件标题,链接是由主组件只允许有一个组件标题,它的链接是由stkInternalLinkstkExternalLinkstkDownloadLink组件创建的。

在主组件定义中:

  • 子组件被分配到子组件在/areas/<area name>/availableComponents节点下。这里的节点结构与节点下分配。这里的节点结构与区域定义里使组件可用时使用的结构完全一致。 > 使组件可用里的结构完全一致。
  • 每个子组件都被分配到它自身的子内容节点下,使用与它的组件定义匹配的名字。每个子组件都在它自身的子内容节点下分配,它的名称与组件定义里的相匹配。
  • id属性引用子组件,使用<module name>:<path to component>结构。
  • 每个子组件都是在它自己的组件定义中分别配置。您可以在STK >> 模板定义 Template Definitions /components/links里查看这些。里查看。
  • 主组件,嵌套区域和单个子组件都由它们自己的脚本绘制。

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

Mgnl f
components

 

Mgnl f
teasers

 

Mgnl n
stkPureLinkList

 

Mgnl n
parameters

 

Mgnl n
areas

 

Mgnl n
linkList

 

Mgnl n
availableComponents

 

Mgnl n
stkInternalLink

 

mgnl-p
id

standard-templating-kit:components/links/stkInternalLink

Mgnl n
stkExternalLink

 

Mgnl n
stkDownloadLink

 

mgnl-p
description

areas.components.linkList.description

mgnl-p
enabled

true

mgnl-p
templateScript

/templating-kit/components/links/linkListArea.ftl

mgnl-p
title

areas.components.linkList.title

mgnl-p
type

list

mgnl-p
description

paragraphs.teasers.stkTeaserPureLinkList.description

mgnl-p
dialog

standard-templating-kit:components/teasers/stkTeaserPureLinkList

mgnl-p
i18nBasename

info.magnolia.module.templatingkit.messages

mgnl-p
renderType

stk

mgnl-p
templateScript

/templating-kit/components/teasers/pureLinkList.ftl

mgnl-p
title

paragraphs.teasers.stkTeaserPureLinkList.title

pureLinkList.ftl脚本使用页面模板里绘制区域的相同代码来绘制主组件。脚本全文在脚本绘制主组件与页面模板里绘制区域的代码相同。脚本全文在STK > 模板 Templates /templating-kit/components/teasers/pureLinkList.ftl下。这里为相关片段。下,这里为相关片段。

Code Block
[#-- Rendering the teaser's linkList --]
    [@cms.area name="linkList"/]

linkListArea.ftl脚本使用[#list]指令来绘制嵌套组件。脚本全文在STK > Templates 模板 /templating-kit/components/links/linkListArea.ftl里。这里为相关片段。里,这里为相关片段。

Code Block
…
[#list components as component ]
    [@cms.component content=component /]
[/#list]
…

extends属性

Anchor
组件定义
组件定义
extends属性

扩展机制被广泛使用来最小化extras组件的配置。extras组件有对应的teaser组件,这两个区域绘制的组件基本相同,只有CSS样式和继承行为不一样。扩展机制被广泛使用,以最小化有着相应teaser组件的extras组件的配置。在这两个区域绘制的组件基本相同,只有CSS样式和继承行为不一样。

这里是stkTeaserContact组件定义的完全配置。组件定义的配置全文。

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

Mgnl f
components

 

Mgnl f
teasers

 

Mgnl n
stkTeaserContact

 

Mgnl n
parameters

 

mgnl-p
divClass

box vcard

mgnl-p
divIDPrefix

teaser

mgnl-p
headingLevel

h2

mgnl-p
teaserLinkType

internal

mgnl-p
description

paragraphs.teasers.stkTeaserContact.description

mgnl-p
dialog

standard-templating-kit:components/teasers/stkTeaserContact

mgnl-p
i18nBasename

info.magnolia.module.templatingkit.messages

mgnl-p
modelClass

info.magnolia.module.templatingkit.templates.components.ContactModel

mgnl-p
renderType

stk

mgnl-p
templateScript

/templating-kit/components/teasers/contact.ftl

mgnl-p
title

paragraphs.teasers.stkTeaserContact.title

stkExtrasContact组件扩展要点组件,只修改组件扩展了要点组件,只修改了divIDPrefixdialog引用部分。stkExtrasContact对话也是stkTeaserContact对话的一个扩展,添加了Show in Subpage域,允许子页面继承。您可以在对话框也是stkTeaserContact对话框的一个扩展,添加了在子页面中显示字段,允许子页面继承。您可以在STK > Dialog Definitions 对话框定义 /components/teasers/stkTeaserContact/extras/stkExtrasContact里查看引用的对话。更多信息可参考里查看引用的对话框。更多信息可参考可继承组件

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

Mgnl f
components

 

Mgnl f
extras

 

Mgnl n
stkExtrasContact

 

Mgnl n
parameters

 

mgnl-p
divIDPrefix

box

mgnl-p
dialog

standard-templating-kit:components/extras/stkExtrasContact

mgnl-p
extends

/modules/standard-templating-kit/templates/components/teasers/stkTeaserContact

自动生成的组件

自动生成特性允许您在页面的任何区域内自动生成组件。这是Magnolia 自动生成特性使您在页面的任何区域都可以自动生成组件。这是Magnolia CMS核心功能,由以下类提供:

  • ConfiguredAutoGeneration类(由AreaElement引入),提供在区域定义中的引入),在区域定义中提供autoGeneration节点和属性。
  • CopyGenerator生成器类,创建节点和属性,这些属性与链接到生成器类(generator class),创建节点和属性,使他们与templateId属性并且只适用于属性里链接到的且只适用于autoGeneration节点的配置一致。

自动生成的组件可在任何区域定义里配置。以下配置样例在stkEvent模板的嵌套extras1区域自动生成stkExtrasCalendar组件。参考extras区域获得关于extras区域里可用配置选项的更多信息。组件。关于extras区域里可用的配置选项,请参考extras区域

  • /areas/<area name>/autoGeneration父节点和/content子节点需要有这些特定的名字。这种命名规则和节点结构将配置识别为自动生成内容。子节点需要有这些特定的名字。这种命名规则和节点结构可以识别配置为自动生成内容。
  • /autoGeneration/generatorClass节点分配CopyGenerator类,允许任何该组件可用的属性使用被类,允许使用templateId属性引用。属性引用的组件可用的任何属性。
  • /autoGeneration/content/calendar节点可以被任意命名。这个例子中的属性只是必需的属性,但可以依据引用的组件(参考以下样例)添加额外的属性。
    • nodeType被设置为mgnl:component,以将引用的组件识别为一个组件。,将引用的组件识别为一个组件。
  • templateId定义到组件定义的路径,使用<module name>:<path to definition>格式。
Advanced Tables - Table Plus
heading0
multiplefalse
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名

Mgnl f
pages

 

Mgnl n
stkEvent

 

Mgnl n
areas

 

Mgnl n

 

extras

 

Mgnl n
areas

 

Mgnl n
extras1

 

Mgnl n
autoGeneration

 

Mgnl n
content

 

Mgnl n
calendar

 

mgnl-p
nodeType

mgnl:component

mgnl-p
templateId

standard-templating-kit:components/extras/stkExtrasCalendar

mgnl-p
generatorClass

info.magnolia.rendering.generator.CopyGenerator

...

下面的例子在stkArticle模板的main/content区域自动生成stkHTML组件。因为其他内容模板扩展该模板,该组件也在组件。因为有其他内容模板扩展了该模板,该组件也在stkLargeArticlestkNewsstkEventstkGlossaryTerm模板上绘制。

这是绘制stkHTML组件的html.ftl脚本。注意一个单属性,脚本。注意,editHTML,在此组件中绘制。属性在此组件中绘制。

Code Block
[#if content.editHTML?has_content]
    ${cmsfn.decode(content).editHTML}
[/#if]

这是样例的配置,用来在以下配置样例用来在stkArticle模板的main/content区域绘制此组件:

  • 基本配置与上一个例子一样。基本配置与上例一样。
  • editHTML属性的添加会在脚本里添加由[cmsfn.decode]方法绘制的HTML代码。
Advanced Tables - Table Plus
heading0
multiplefalse
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名

Mgnl f
pages

 

Mgnl n
stkArticle

 

Mgnl n
areas

 

Mgnl n
main

 

Mgnl n
areas

 

Mgnl n
content

 

Mgnl n
availableComponents

 

Mgnl n
autoGeneration

 

Mgnl n
content

 

Mgnl n
conference

 

mgnl-p
editHTML

<p><font color="#669900" size="+1">Sign up for the</font><font size="+1">....../strong></a>.</font> </p>

mgnl-p
nodeType

mgnl:component

mgnl-p
templateId

standard-templating-kit:components/content/stkHTML

mgnl-p
generatorClass

info.magnolia.rendering.generator.CopyGenerator

这里是基于stkArticle模板的新页面上的自动生成组件。模板的一个新页面上的自动生成组件。

...

特性组件

特色模板主要由在页面模板的特性模板主要通过页面模板的main/content区域绘制的组件区分开。区域绘制的组件标识。stkImagGallerystkFAQstkSiteMap等组件在stkImageGallerystkFAQstkSiteMap等模板的该区域绘制。组件由页面模板自动绘制,由自动生成特性完成。

组件定义与其他组件使用的配置方法,您可以在特性组件定义与其他组件配置方法相同,您可以在STK > Template Definitions 模板定义 /components/features里查看。

下列所示的stkSiteMap组件:

  • 使用使用了SiteMapParagraphModel,包含了业务逻辑,并使,这个模型类包含业务逻辑,并使maxLevelsshowSiteMapRoottitleToUse属性对脚本可用。
  • siteMap.ftl脚本绘制,该脚本可在脚本绘制。该脚本在STK > Templates 模板 /templating-kit/components/features/siteMap.ftl找到。
Advanced Tables - Table Plus
heading0
multiplefalse
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名

Mgnl f
components

 

Mgnl f
features

 

Mgnl n
stkSiteMap

 

mgnl-p
description

paragraphs.features.stkSiteMap.description

mgnl-p
dialog

standard-templating-kit:components/features/stkSiteMap

mgnl-p
i18nBasename

info.magnolia.module.templatingkit.messages

mgnl-p
modelClass

info.magnolia.module.templatingkit.templates.components.SiteMapParagraphModel

mgnl-p
renderType

stk

mgnl-p
templateScript

/templating-kit/components/features/siteMap.ftl

mgnl-p
title

paragraphs.features.stkSiteMap.title

当一个基于stkSiteMap模板的页面被创建时,组件被使用区域定义(见下表)中配置的缺省值绘制。编辑者可以在模板的页面被创建时,组件使用区域定义中配置的缺省值(见下表)绘制。编辑者可以在STK > Dialog Definitions对话框定义 /components/features/stkSiteMap下配置的stkSiteMap组件对话里修改这些缺省值。查看组件对话框里修改这些缺省值。您也可以查看demo-project/service/site-map页了解它是如何工作的。

stkSiteMap页面模板的页面模板里,areas/main/areas/content节点下:节点的:

  • /autoGeneration节点在generatorClass节点的CopyGenerator类里分配。该生成器创建节点和属性,其中属性和链接到类里分配。该生成器创建节点和属性,使他们与templateId属性并且只适用于属性里链接到的且只适用于autoGeneration节点的配置一致。
  • autoGeneration/content/singleton节点里:
    • 缺省值被分配给显示给组件模型的属性。组件模型显示的属性使用缺省值。
    • nodeType被设置为设置为mgnl:component
    • templatedId属性引用stkSiteMap组件定义,使用<module name>:<path to component>结构。
Advanced Tables - Table Plus
heading0
multiplefalse
enableHeadingAttributesfalse
enableSortingfalse
classm5-configuration-tree
enableHighlightingfalse
节点名

Mgnl f
pages

 
 

Mgnl n
stkSiteMap

 

Mgnl n
areas

 

Mgnl n
main

 

Mgnl n
areas

 

Mgnl n
intro

 

Mgnl n
content

 

Mgnl n
autoGeneration

 

Mgnl n
content

 

Mgnl n
singleton

 

mgnl-p
maxLevels

3

mgnl-p
nodeType

mgnl:component

mgnl-p
showSiteMapRoot

true

mgnl-p
templateId

standard-templating-kit:components/features/stkSiteMap

mgnl-p
titleToUse

title

mgnl-p
generatorClass

info.magnolia.rendering.generator.CopyGenerator

mgnl-p
type

single

mgnl-p
class

info.magnolia.module.templatingkit.templates.MainArea

这里是这是stkSiteMap组件和demo-project/service/site-map页面上的对话。页面上的对话框。

在上面的对话里,在上面的对话框里,maxLevels属性被设置为4。这是因为模板定义里的缺省值,这是因为模板定义里的缺省值3在此页上已经被覆写了。新值4被存在JCR中,您可以在Tools 工具 > JCR /demo-project/service/site-map/content/singleton中验证。

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

Mgnl f
demo-project

 

Mgnl f
service

 

Mgnl f
site-map

 

Mgnl n
content

 

Mgnl n
singleton

 

mgnl-p
maxLevels

4

mgnl-p
showSiteMapRoot

true

mgnl-p
titleToUse

title

如果您想要在模板定义中修改一个自动生成的组件的缺省设置,您需要首先在JCR浏览器中删除这个内容节点(如果您想要在模板定义中修改一个自动生成组件的默认设置,您需要首先在JCR浏览器中删除这个内容节点(singleton)并刷新该页。系统会使用新的模板定义属性在页面上重新创建该组件。这是一个已知问题,您可以在MAGNOLIA-4482里跟踪进展。