2012-02-08 12 views
9

私は、生成されたマークアップで一般的なシナリオを抽象化しようとしています。ここでは、任意のコンテンツを「ラップ」するために2つのタグが必要です。だからではなく、この他のコンテンツを「ラップする」ベロシティマクロを定義できますか?

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

を書いて、私は私が何#を知っていない場合は、明らかに

#???? 
<!-- The real content that changes 
#end 

「のような」何かを書くことができるだろう????だろう。

私が知る限り、マクロでこれを行うことはできません。ブロックの開始用のマクロとブロックの最後用のマクロを定義するのは不十分です。

#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 

もっと良い方法がありますか?

答えて

10

$!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 

はとしてレンダリング:

<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> 

(マクロ・ボディ内##は空白を末尾削除、HTMLのがよいです問題ありません)

+0

コンテンツがHTMLの場合はどうなりますか?そうであれば、それはそれを逃れるでしょう。 – tokland

関連する問題