你能定义一个速度宏来"包装"其他内容吗?

pht*_*ier 10 html velocity

我试图在生成的标记中抽象出一个常见的场景,我需要一些标记来"包装"任意内容.所以不要写这个

<div class="container">
   <p class="someClass">Some header</p>
   <div id="foo">
     <!-- The real content that changes -->
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以写一些"喜欢"的东西

#????
 <!-- The real content that changes
#end
Run Code Online (Sandbox Code Playgroud)

哪里显然我不知道#???? 将会.

据我所知,不可能用宏做这个,不能为块的开始定义一个宏,而为块的结尾定义一个宏.

#macro(startContained)
<div class="container">
   <p class="someClass">Some header</p>
   <div id="foo">
#end

#macro(endContained)
   </div>
</div>
#end

#startContained
<!-- The real content -->
#endContained
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

Dav*_*ton 12

使用#@宏调用语法以及$!bodyContent变量:

#macro(wrapper)
  <div class="container">
    <p class="someClass">Some header</p>
    <div id="foo">
      $!bodyContent##
    </div>
  </div>
#end

#@wrapper()
  The real content that changes.
#end

#@wrapper()
  Other different content.
#end
Run Code Online (Sandbox Code Playgroud)

呈现为:

<div class="container">
  <p class="someClass">Some header</p>
  <div id="foo">
    The real content that changes.
  </div>
</div>

<div class="container">
  <p class="someClass">Some header</p>
  <div id="foo">
    Other different content.
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

(##在宏体中删除尾随空格;对于HTML,它可能无关紧要.)