1

如何将 magnolia 中的页面包含到 magnolia 模板脚本中?

在模板脚本中,我可以从特定页面访问数据,但是如何将该页面加载到模板中?

假设我有 2 个页面,每个页面都有自己的模板。第 1 页包含在其树中第 2 页。我想在第 1 页的模板脚本中包含第 2 页,但不起作用。

非常感谢你 :)

更新

我真正想做的是在我的所有项目页面中包含我的标题。但我不想把它作为一个段落,因为如果我想改变我的标题,我将不得不编辑所有项目的页面。

所以我尝试做的,我不知道这是否是正确的方法是为标题创建一个页面模板。此模板不包含任何 . 或 css,它只是标题的代码。我想做的下一件事是在 magnolia 中创建一个页面,该页面作为页眉。接下来,我想将刚刚创建的页面包含在项目的主模板模型中,但我不知道该怎么做。

我是 Magnolia cms 的新手,最初我尝试使用 stk 创建我的演示站点。唯一的问题是我不能使用 jsp 作为脚本语言,或者至少我在互联网上找不到任何解决方案。我真的不知道freemarker,但这并不是一个大问题。我真的很不情愿使用freemarker,因为将来在一个更复杂的项目中,我可能需要一些freemarker 不支持的功能,但jsp 可以。如果可以使用 magnolia,我想使用 jsp 构建我的网站。

对于这次长时间的更新,我感到很抱歉,但如果有人对最佳实践有什么建议,如果我可以在 jsp 中实现我想要的,我将非常感激。

再次感谢您的时间:)

4

2 回答 2

3

如果您使用的是 STK,请参阅本指南内容重用

如果不看cms tag-lib,尤其是 cms:loadPage 和 cms:setNode 标签,您可以使用它们获取一段内容并将其设置为 JSP/JSTL 变量,然后使用 cms:includeTemplate 进行渲染。

一个常见的场景是从父页面“继承”内容,标题就是一个很好的例子。您所做的是,您在内容层次结构中向上走的区域并使用相同名称呈现其区域中父页面的所有内容。这样,您仅添加到首页的标题包含在其所有子项中。

另一种选择是有一个特殊的页面,它只包含要包含在其他页面中的东西。像页眉、页脚和横幅应该放在某些页面的侧窗格中。

于 2011-12-06T10:07:00.733 回答
1

在另一个页面中包含一个页面实际上是行不通的。Page 2 已经有它自己的 <html> 标签、它自己的 <script> 标签和它自己的 CSS,所以将它批发到另一个页面中只是没有意义。

但是,您确实有几个选择:

  1. 使用 iframe。这将允许您将整个第 2 页包含在第 1 页的区域中。
  2. 最新版本的 Magnolia 将允许您呈现单个段落,然后您可以将其包含在另一个页面中。(例如,您可以在 http://demopublic.magnolia-cms.com/demo-project 查看http://demopublic.magnolia-cms.com/demo-project/about/subsection-articles.html的单个段落/about/subsection-articles/article/main/0.html。)这需要了解一些数据的结构方式,但这是一种非常有用的方法,可以有选择地提取页面的各个部分。
  3. 您可以在模型类中使用 Magnolia API 从子页面中提取数据,然后将其提供给您的视图模板。这是 STK 用来构建包含他们引用的页面内容的预告片的方法,并且可能是最强大和最灵活的方法,但它确实需要实际编写一些 Java 代码。(有关如何使用此方法的详细信息,请参阅http://documentation.magnolia-cms.com/templating/stk/templating.htmlhttp://documentation.magnolia-cms.com/reference/templating.html 。)
  4. (在编辑问题后添加)STK 中包含的页脚功能几乎完全做到了这一点。您可能有兴趣看看它,看看它是如何在那里实现的。

希望那有所帮助!

于 2011-12-05T15:44:13.190 回答