`
dcj3sjt126com
  • 浏览: 1872209 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Smarty模板继承

    博客分类:
  • PHP
阅读更多
模板继承
继承是从面向对象编程而来的概念,模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展。 扩展继承意味着子模板可以覆盖部分或全部父模板的块区域。
 
继承结构可以是多层次的,所以你可以继承于一个文件,而这个文件又是继承于其他文件,等等。
 
在覆盖父模板的{block}块以外的地方, 子模板不能定义任何内容。任何在{block}以外的 内容都会被自动忽略。
 
在子模板和父模板中的{block}内容,可以通过 append 和 prepend来进行合并。{block}的选项,和 {$smarty.block.parent} 或 {$smarty.block.child}会持有这些内容。
 
模板继承在编译时将编译成单独的一个编译文件。对比效果相似的{include}包含模板功能,模板继承的性能更高。
 
子模板继承使用{extends}标签, 该标签一定放要在子模板的第一行。 另一种做法是将整个模板继承树,在PHP程序调用fetch() 或 display()的时候, 用extends:的模板资源类型,该做法有更大的灵活性。
 
Note
当开启了$compile_check,继承树里面的全部文件都会在每次调用的时候检查是否有修改。 因此,在生产环境中你最好关闭$compile_check。
 
Note
如果你的子模板里面有用到{include} 来包含模板,而被包含的模板里面存在供{include}模板 调用的{block}区域, 那么在最顶层的父模板里面,你需要放置一个空的 {block} 来作为继承。
 
Example 17.6. 模板继承例子
 
layout.tpl (父模板)
 
<html>
<head>
  <title>{block name=title}默认页面标题{/block}</title>
  {block name=head}{/block}
</head>
<body>
{block name=body}{/block}
</body>
</html>
 
  
myproject.tpl (子模板)
 
{extends file='layout.tpl'}
{block name=head}
  <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
  <script src="/js/mypage.js"></script>
{/block}
 
 
  
mypage.tpl (孙子模板)
 
{extends file='myproject.tpl'}
{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.tpl');
 
页面将输出:
 
<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>
 
Example 17.7. 用extends:来进行模板继承
 
代替模板内使用{extends}的继承方式, 你可以通过在PHP内定义继承树来进行继承,使用extends:的资源类型。
 
下面的代码将返回和上面例子一样的结果:
 
<?php
$smarty->display('extends:layout.tpl|myproject.tpl|mypage.tpl'); 
?>
 
   
 
分享到:
评论

相关推荐

    自编的Smarty模板引擎

    本教程是针对自编的Smarty模板引擎进行的深入解析,通过最基础的功能实现,帮助开发者理解其工作原理。 Smarty的核心理念是“智能模板”,它提供了一种方式,让HTML模板文件可以包含PHP代码,但这些代码会被预处理...

    Smarty模板包下载

    在这个"Smarty模板包下载"中,我们看到的是Smarty 2.6.18版本。 Smarty 2.6.18是一个较早的版本,发布于Smarty的历史发展中。尽管如此,它依然包含了许多关键功能和特性,如: 1. **模板语法**:Smarty提供了一套...

    smarty模板引擎教程

    - **模板继承与包含**:通过`{extends}`定义父模板,`{section}`和`{append|prepend}`操作子模板内容。 - **模板函数**:如`{assign}`分配变量,`{include}`包含其他模板,`{fetch}`直接获取模板内容。 4. **...

    Smarty模板快速入门相关代码

    本教程将基于Smarty模板引擎的快速入门进行详细讲解,配合提供的源代码,帮助你更好地理解和应用Smarty。 1. **Smarty的基本概念** Smarty是一个强大的PHP模板系统,它通过引入模板文件来处理动态内容,从而让...

    smarty模板

    3. **模板继承**:通过`{extends}`和`{block}`指令,Smarty支持模板继承,一个基础模板可以定义基本布局,子模板只需覆盖特定区块,方便维护大型项目中的多个页面。 4. **函数与插件**:Smarty允许自定义函数和插件...

    php开发smarty模板

    3. **模板继承**:通过`extends`指令,一个模板可以继承另一个模板的基础结构,只修改需要改变的部分,这有利于减少重复代码,保持设计一致性。 4. **函数和插件**:Smarty提供了许多内置函数,如`{foreach}`、`{if...

    smarty模板,调用静态页面模板,Smarty-2.6.22

    8. **模板继承**:Smarty支持模板继承,允许创建一个基础模板,然后由其他模板继承并覆盖或添加内容,提高了代码的复用性。 Smarty-2.6.22版本可能包括了错误修复、性能优化和新功能的引入,具体可通过查阅官方文档...

    smarty 模板

    3. **模板继承与部分**:Smarty允许创建基础模板,子模板可以继承并覆盖基础模板的部分,实现页面布局的复用。`{block}`指令用于定义和替换模板中的区块。 4. **变量过滤**: Smarty提供了丰富的变量过滤器,如`...

    利用smarty模板开发的电子商务软件

    2. **模板继承**:通过模板继承,我们可以创建一个基础模板,子模板可以继承并覆盖基础模板的部分内容,这样可以保持整体设计的一致性,同时减少重复代码。 3. **函数和插件**:Smarty提供了丰富的内置函数和插件,...

    smarty模板/PHP

    - **模板继承与布局**:Smarty支持模板继承,可以创建一个基础模板,然后其他模板可以继承并覆盖特定部分,实现页面布局的复用。 - **变量赋值与显示**:在PHP中设置变量后,可以通过`{$variable}`在模板中显示。 ...

    Smarty模板引擎3.1.18版本

    6. **模板继承与块**:Smarty支持模板继承,一个父模板可以被多个子模板继承,子模板可以覆盖或添加父模板的部分内容。此外,块(block)功能可以实现局部内容的复用和替换。 7. **配置选项**:Smarty提供了丰富的...

    php仿照smarty模板类

    5. **模板继承与部分模板**:Smarty支持模板继承,允许一个模板继承另一个模板的基础结构。我们也可以实现类似的功能,方便复用代码。此外,部分模板(也称为块)可以让开发者将重复的代码段封装起来,提高代码的可...

    smarty模板引擎3.1

    5. 模板继承(Template Inheritance):通过`{extends}`和`{block}`指令实现模板的继承和重写,方便页面布局的管理。 三、Smarty配置与使用 1. 安装:下载Smarty-3.1.14压缩包,解压后将lib目录下的文件放入项目中...

    深入浅出之Smarty模板引擎工作机制

    3. **模板继承**:通过`{extends}`指令,一个模板可以继承另一个模板,这样可以创建共享布局,减少重复代码。 4. **插件系统**:Smarty允许自定义函数或过滤器,扩展其功能,满足各种需求。 5. **预定义变量和配置...

    传智韩顺平老师《全面掌握smarty模板技术》 韩顺平smarty笔记、源码、ppt、工具等

    3. **模板继承**:Smarty支持模板继承,通过`extends`指令可以创建基础模板,并在子模板中使用`block`指令定义或覆盖父模板的部分内容,提高代码复用性和维护性。 4. **函数和插件**:Smarty提供了许多内置函数,如...

    李炎恢Smarty专题精讲视频课程源码

    - **模板继承与布局**:理解如何利用 Smarty 的模板继承和布局功能,实现更高效的页面构建。 - **模板函数和修饰符**:学习如何使用内置的函数和修饰符,以及如何创建自定义的函数和修饰符。 - **模板资源**:探索...

    php之smarty篇(二)--smarty基础

    Smarty模板语言提供了丰富的指令和函数,如: - `{foreach}` 循环遍历数组或对象。 - `{if}/{elseif}/{else}` 条件判断。 - `{include}` 引入其他模板。 - `{block}` 定义和重写模板块。 - `{function}` 自定义模板...

    CMS程序Smarty模板引擎 v2.6.26-smarty-2.6.26.zip

    2. **模板继承**:通过`{extends}`和`{block}`指令,模板可以继承并重写父模板的部分内容,实现页面布局的复用和定制。 3. **变量处理**:Smarty提供了多种内置函数,如`{escape}`, `{function}`, `{assign}`等,...

Global site tag (gtag.js) - Google Analytics