smarty 模板继承 {extends}

作者: 新亮笔记 | 来源:发表于2016-07-11 09:47 被阅读203次
    smarty 模板继承 {extends}

    定义:

    继承是从面向对象编程而来的概念,模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展。 扩展继承意味着子模板可以覆盖部分或全部父模板的块区域。

    特性:

    1. 继承结构可以是多层次的,所以你可以继承于一个文件,而这个文件又是继承于其他文件。
    2. 在覆盖父模板的 {block} 块以外的地方,子模板不能定义任何内容,任何在{block}以外的内容都会被自动忽略。
    3. 子模板继承使用{extends}标签, 该标签一定放要在子模板的第一行。
    4. 模板继承在编译时将编译成单独的一个编译文件,对比效果相似的{include}包含模板功能,模板继承的性能更高。

    代码:

    layout.html(父模板)
    
    <html>
    <head>
      <title>{block name=title}默认页面标题{/block}</title>
      {block name=head}{/block}
    </head>
    <body>
    {block name=body}{/block}
    </body>
    </html>
    
    myproject.html(父模板)
    
    {extends file='layout.html'}
    {block name=head}
      <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
      <script src="/js/mypage.js"></script>
    {/block}
    
    
    mypage.html (孙子模板)
    
    {extends file='myproject.html'}
    {block name=title}我的页面标题{/block}
    {block name=head}
      <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
      <script src="/js/mypage.js"></script>
    {/block}
    {block name=body}我的HTML页面内容在这里{/block}
    
    
    $smarty->display('mypage.html');
    
    <html>
    <head>
      <title>我的页面标题</title>
      <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
      <script src="/js/mypage.js"></script>
    </head>
    <body>
    我的HTML页面内容在这里
    </body>
    </html>
    

    温馨提示:{extends} 比 {include} 性能更高。


    Thanks ~

    相关文章

      网友评论

        本文标题:smarty 模板继承 {extends}

        本文链接:https://www.haomeiwen.com/subject/vxtjjttx.html