我正在为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错误输出因为$ full_templates_path未在custom_layout_1.tpl中定义。我尝试通过在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语句中时,一切正常,但这对我来说似乎是个黑客攻击。
理想情况下,这应该是正确的理由,不仅仅是因为我使用了很多胶带。
有关实现在自定义页面布局中包含模板文件的方法的任何建议吗?
答案 0 :(得分:1)
问题可能在于您的速度配置。
如果要访问在一个模板中设置的变量以便在另一个模板中可访问,则以下属性应为false velocimacro.permissions.allow.inline.local.scope
答案 1 :(得分: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}