【问题标题】:Velocity Template include master template速度模板包括主模板
【发布时间】:2013-06-10 10:34:35
【问题描述】:

我正在使用 Velocity 模板,我需要有多个页面需要遵循相同的模板样式,例如“about_me”、“contact_us”和“home”,所有这些页面都将具有相同的标题、左侧菜单和唯一不同的是内容。 例如,除了 中的一个之外,所有这些 HTML 将完全相同。

<html>
  <head>
    .. some common css and js 
  </head>

   <body>
    <div id="main-content">
     <div id="header"> 
       Main Menu Bar on top 
     </div>
     <div id="left-menu"> 
       Menus on the left
     </div>
     <div id="page-content"> 
       I could be contact us, or home or about us.
     </div>
    </div>
   </body>
</html>

我所做的其中一种方法是为标题和侧边菜单设置单独的 .vm 文件,并将它们导入到 aboutus.vm、contactus.vm 和 home.vm 中的每一个上,但是这样我有很多重复的代码.有没有办法将所有内容定义为模板,并且只在我的 .vm 文件中定义“页面内容”?

【问题讨论】:

    标签: templates velocity


    【解决方案1】:

    您可以在页面中间解析速度文件并将模板名称定义为变量。这样您就可以为每个文件指向不同的 page-content.vm 文件

    在下面的示例中,$contentTemplate 可以等于以下任何一项:

    • home/page-content.vm
    • about/page-content.vm
    • contact/page-content.vm

    见下文

    <html>
      <head>
        .. some common css and js 
      </head>
    
       <body>
        <div id="main-content">
         <div id="header"> 
           Main Menu Bar on top 
         </div>
         <div id="left-menu"> 
           Menus on the left
         </div>
         <div id="page-content"> 
           #parse($contentTemplate)
         </div>
        </div>
       </body>
    </html>
    

    【讨论】:

    • 谢谢 Ed,这样我只有这 1 页,我将它命名为“main.html”,我必须从控制器传递“contentTemplate”?使用此模板的所有控制器都将使用相同的视图文件?
    • 是的,没错...您可能更喜欢将“home”或“about”之类的内容传递到速度上下文中,而不是实际的文件名,然后根据该值计算文件名,但这样就可以了给你
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多