我有layout.vm
这样的
<html>
<head>
<title>$!page_title</title>
<link href="path/to/css.css">
</head>
<body>
$screen_content
<script src="path/to/js.js"></script>
</body>
</html>
这里需要使用user.vm
layout.vm
#set($page_title="User")
<div>hello, user.vm</div>
但是user.vm
需要更多的js / css文件
我希望渲染结果会像这样
<html>
<head>
<title>User</title>
<link href="path/to/css.css">
<link href="path/to/user.css">
</head>
<body>
<div>hello, user.vm</div>
<script src="path/to/js.js"></script>
<script src="path/to/user.js"></script>
</body>
</html>
我该怎么办?
答案 0 :(得分:0)
在user.vm
声明另一个变种:
#set($isUser = true)
现在编辑layout.vm
。有两种选择。如果你只想使用一个样式表,那么就像这样切换它们:
<head>
<title>$!page_title</title>
#if($isUser)
<link rel="stylesheet" href="path/to/user.css">
#else
<link rel="stylesheet" href="path/to/css.css">
#end
</head>
或覆盖这样的样式
<head>
<title>$!page_title</title>
<link rel="stylesheet" href="path/to/css.css">
#if($isUser)<link rel="stylesheet" href="path/to/user.css">#end
</head>
对您的脚本执行相同操作。如果你把它们放在头部,你甚至可以在一次检查中做到这一点。
注意:你可以通过检查$!page_title
是否等于'User'来做同样的事情,但这不是最好的主意,因为你重载了var的含义。因此,我建议使用另一个。
另请注意:此解决方案完全适用于Velocity。如果你正在使用支持对象,你应该使用它们(通常)来声明和设置var(s)。
在Velocity 1.7中测试