0

我正在为 Liferay 创建一个自定义主题,我希望在每个页面布局中单独包含页脚。不幸的是,我似乎无法访问页面布局文件中的 $full_templates_path 变量。我没有运气使用#set 手动存储该值,然后在包含的模板中访问该值。

在 vanilla 主题中,文件的处理是这样的:

portal_normal.vm:
  1) some init, doctype, etc.
  2) #parse("$full_templates_path/header.vm")
  3) $theme.include($content_include)
    a) custom_layout_1.tpl
    b) chat portlet
  4) #parse("$full_templates_path/footer.vm")

出于布局目的,我需要偏离这种模式,如下所示:

portal_normal.vm
  1) some init, doctype, etc.
  2) #parse("$full_templates_path/header.vm")
  3) $theme.include($content_include)
    a) custom_layout_1.tpl
      i) #parse("$full_templates_path/footer.vm")
    b) chat portlet

当我尝试这个时,tomcat 会出错,因为在 custom_layout_1.tpl 中没有定义 $full_templates_path。我尝试通过在 portal_normal.vm 中执行以下操作来解决此问题

#set($full_footer_path = "$full_templates_path/footer.vm")
$theme.include($content_include)

然后,在 custom_layout_1.tpl 中,我在希望发出页脚标记的地方执行此操作:

#parse("$full_footer_path")

但是,tomcat 仍然报错,说 $full_footer_path 没有定义。

当我将 $full_templates_path 的值硬编码到 custom_layout_1.tpl 中的 #parse 语句中时,一切正常,但这对我来说似乎是一个 hack。

理想情况下,这应该出于正确的原因做正确的事情,而不仅仅是因为我使用了很多胶带。

关于从自定义页面布局中实现包含模板文件的方法的任何建议?

4

2 回答 2

1

问题可能是由于您的速度配置。

velocimacro.permissions.allow.inline.local.scope如果您想访问在一个模板中设置的变量以便在另一个模板中访问,则以下属性应该为 false

于 2012-10-15T22:00:48.213 回答
0

你可能打错了你的问题,但#set($full_footer_path = "$full_templates_path/footer.vm"最后不应该有一个右括号......

#set( $full_footer_path = "$full_templates_path/footer.vm" )

它也可能有助于$full_templates_path用花括号括起来以将其与文本的其余部分区分开来,即${full_templates_path}

于 2012-10-15T21:51:28.710 回答