我有一个树状结构,并希望将其用作基于类别的常见问题解答。 我知道有一个分类模块,但是我想使用文件树结构。
所以我有以下内容:
faq
- first category
- first entry
- second entry
- second category
- first entry
...
每个页面都有一个带有标题和描述的对话框。那就是我要为每个页面获取的内容。
所以目前我得到当前页面,并遍历子页面
[#local currentPage=cmsfn.page(content) /]
[#local pageChildren = cmsfn.children(currentPage, "mgnl:page")]
[#list pageChildren as page ]
{
"category": "${page.title}",
[#local pageContent = cmsfn.contentById(page)]
"headline": "${pageContent.headline!?json_string}",
"description": "${pageContent.description!?json_string}"
} [#if page?has_next],[/#if]
[/#list]
现在,我获得每个条目的类别(页面标题)。没关系。但是标题和说明未填写。
我知道,page
是一个节点。 page
是页面,可以访问每个页面属性(标题,模板)。
我没有找到任何东西可以通过cmsfn
从页面中获取内容。 contentById
,contentByPath
和page()
都有一些方法来获取内容页面。
但是我如何从页面获取内容?
更新:
我迈出了一大步。 我从contentByPath获取pageContent,并在此处使用页面的路径。 之后,我将其转换为JCR节点。
[#local pageContent = cmsfn.contentByPath(page.@path)]
[#local jcr = cmsfn.asJCRNode(pageContent)]
现在转储显示我的jcr。
Node (/my-website/faqs/kategorie1/question1)
footer = Node (/my-website/faqs/kategorie1/question1/footer)
mgnl:activationStatus = true (Boolean)
[...]
jcr:uuid = "a09d13da-3549-4b2a-8609-3b635e6f1c59" (String)
layers = Node (/my-website/faqs/kategorie1/question1/layers)
mgnl:activationStatus = true (Boolean)
[...]
jcr:uuid = "08b52c64-7327-4300-884c-047e42f560d0" (String)
overlays = Node (/my-website/faqs/kategorie1/question1/overlays)
mgnl:activationStatus = true (Boolean)
[...]
jcr:uuid = "9a78479b-0d25-4acf-9554-b9d626a7cc61" (String)
content = Node (/my-website/faqs/kategorie1/question1/content)
0 = Node (/my-website/faqs/kategorie1/question1/content/0)
description = "something" (String)
headline = "my example" (String)
mgnl:activationStatus = true (Boolean)
mgnl:created = Jul 24, 2019 11:20:40 AM UTC (Date)
我真正需要的是内容节点,描述和标题。
但是如何访问它,是否有更好的方法来获取此内容?
答案 0 :(得分:0)
您已经获得页面的标题,并且页面节点上的任何其他属性的行为与title属性相同。因此,page.description将为您提供给定页面节点/对象的description属性。
我们还要弄清楚#contentById()方法的作用。它负责通过其标识符获取节点并返回ContentMap,例如
ContentMap (think as a Node object but mere Map) contentById(String identifierOfRequestedNode)
更新:
通过contentById方法,您可以直接访问描述和名称,而无需将其转换为Node对象。
例如
pageContent.description
pageContent.name
希望有帮助,
干杯