Versions Compared

Key

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

...

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
节点名

components

 

teasers

 

stkTeaserNewsList

 

parameters

 

Paragraph

divClass

teaser latest

Paragraph

divIDPrefix

teaser

Paragraph

headingLevel

h2

Paragraph

searchForSubcategory

news

Paragraph

teaserLinkType

internal

Paragraph

description

paragraphs.teasers.stkTeaserNewsList.description

Paragraph

dialog

standard-templating-kit:components/teasers/stkTeaserNewsList

Paragraph

i18nBasename

info.magnolia.module.templatingkit.messages

Paragraph

modelClass

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

Paragraph

renderType

stk

Paragraph

templateScript

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

Paragraph

title

paragraphs.teasers.stkTeaserNewsList.title

以下为newsList.ftl脚本如何绘制脚本绘制divClassdivIDPrefixheadingLevel属性的。您可以在属性的代码。您可以在STK > 模板 /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 > 模板定义 /components/links里查看这些。里查看。
  • 主组件,嵌套区域和单个子组件都由它们自己的脚本绘制。

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

components

 

teasers

 

stkPureLinkList

 

parameters

 

areas

 

linkList

 

availableComponents

 

stkInternalLink

 

Paragraph

id

standard-templating-kit:components/links/stkInternalLink

stkExternalLink

 

stkDownloadLink

 

Paragraph

description

areas.components.linkList.description

Paragraph

enabled

true

Paragraph

templateScript

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

Paragraph

title

areas.components.linkList.title

Paragraph

type

list

Paragraph

description

paragraphs.teasers.stkTeaserPureLinkList.description

Paragraph

dialog

standard-templating-kit:components/teasers/stkTeaserPureLinkList

Paragraph

i18nBasename

info.magnolia.module.templatingkit.messages

Paragraph

renderType

stk

Paragraph

templateScript

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

Paragraph

title

paragraphs.teasers.stkTeaserPureLinkList.title

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

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

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

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

extends属性extends属性

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

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

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

components

 

teasers

 

stkTeaserContact

 

parameters

 

Paragraph

divClass

box vcard

Paragraph

divIDPrefix

teaser

Paragraph

headingLevel

h2

Paragraph

teaserLinkType

internal

Paragraph

description

paragraphs.teasers.stkTeaserContact.description

Paragraph

dialog

standard-templating-kit:components/teasers/stkTeaserContact

Paragraph

i18nBasename

info.magnolia.module.templatingkit.messages

Paragraph

modelClass

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

Paragraph

renderType

stk

Paragraph

templateScript

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

Paragraph

title

paragraphs.teasers.stkTeaserContact.title

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

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

components

 

extras

 

stkExtrasContact

 

parameters

 

Paragraph

divIDPrefix

box

Paragraph

dialog

standard-templating-kit:components/extras/stkExtrasContact

Paragraph

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>格式。

...

下面的例子在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
节点名

pages

 

stkArticle

 

areas

 

main

 

areas

 

content

 

availableComponents

 

autoGeneration

 

content

 

conference

 

Paragraph

editHTML

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

Paragraph

nodeType

mgnl:component

Paragraph

templateId

standard-templating-kit:components/content/stkHTML

Paragraph

generatorClass

info.magnolia.rendering.generator.CopyGenerator

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

...

特性组件

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

...