转自:http://gentwolf.sinaapp.com/index/detail/108.html
{extends}模板继承
继承将OOP的理念带到了模板中,允许你定义一个或多个可以被子模板扩展的基模板,扩展意味着查以覆盖父模板中命名相同的区域块。
1.继承可以是多级的,只要你想要,你可以从一个文件继承另一个文件,这个文件可以是从另另一个文件继承的
2.子模板不能在{block}标签外定义内容,{block}这外的内容将会被忽略
3.子模板与父模中的{block}标签内容可以使用append或prepend、{$smarty.block.parent}或{$smarty.block.child}合并
4.子模板使用定义的{extends}继承父模板,{extends}必需是子模板的第一行
注意:
当$compile_check开启时,继承中的所有文件在每一次调用时都会检测修改时间,因此在服务器生产环境下你应该关闭$compile_check。
如果你的子模板使用{include}包含,并且它有{block}块,仅当使用{block}包围{include}时它才会起作用。
例:模板继承
layout.tpl (父模板)
<html>
<head>
<title>{block name=title}Default Page 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}My Page 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}My HTML Page Body goes here{/block}
输出模板:
$smarty->display('mypage.tpl');
输出内容:
<html>
<head>
<title>My Page Title</title>
<link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
<script src="/js/mypage.js"></script>
</head>
<body>
My HTML Page Body goes here
</body>
</html>
例:使用模板资源的模板继承
Instead of using {extends} tags in the template files you can define the inheritance tree in your PHP script by using the extends: resource type.
在模板中不使用{extends}标签,你也可以在PHP脚本定义继承等级:资源类型,
The code below will return same result as the example above.
下面的代码返回结果与上面的相同:
<?php
$smarty->display('extends:layout.tpl|myproject.tpl|mypage.tpl');
?>
分享到:
相关推荐
扩充freemarker实现模版继承指令<@extends>,可以实现类似java的继承,模版现在也可以继承了,也可以实现接口.freemarker interface,freemarker extends
本文实例讲述了laravel5.1框架基础之Blade模板继承简单使用方法。分享给大家供大家参考,具体如下: 模板继承什么用? 自然是增强基础页面的复用,有利于页面文档的条理,也便于更改多处使用的内容,如页头、页脚 1....
但是用 Django 解决此类问题的首选方法是使用更加优雅的策略—— 模板继承 。 本质上来说,模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载。 让我们通过
犰狳 一个适用于 ERB 小型库。 用法 要渲染 Armadillo 模板,您需要调用Armadillo.render方法。 此方法接受以下任何选项: :scope - 要绑定到模板范围的任何... extends ( "base.html" ) %> <% vlock ( :title
}模板继承(extends,block)base.tpl :<html>@block aa {aaaa@block bb {bbb}@block cc {ccc} }@section Pagination(curPage int) </html>test_extends_base.tpl :@block bb { extends ...
说实在话,以前我只需要知道“寄生组合继承”是最好的,有个祖传代码模版用就行。最近因为一些事情,几个星期以来一直心心念念想整理出来。本文以《JavaScript高级程序设计》上的内容为骨架,补充了ES6 Class的相关...
ThinkPHP 内置的模板引擎来定义模板文件,以及使用加载文件、模板布局和模板继承等高级功能。 每个模板文件在执行过程中都会生成一个编译后的缓存文件,其实就是一个可以运行的 PHP 文件。 引用自 ...
Nunjucks 是一个更复杂的 JavaScript 模板引擎,提供丰富的语言特性和块继承、自动转移、宏和异步控制等等。示例代码:{% extends "base.html" %} {% block header %} <h1>{{ title }} {% endblock %...
所以,可以将admin/change_form.html 拷贝到指定目录,然后重新指定继承模板。 {% extends 'admin/englishwordlibrary/recitequestion/change_form.html' %} 然后我在admin/englishwordlibrary/recitequestion/...
实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 4 实验2 一个简单的Java Applet程序 4 实验3 联合编译 5 上机实践2 基本数据类型与控制...
用{%extends xx%}关键字实现继承。 高性能:Web.Java会自动把Html文件,编译成Java文件。应用到生产环境的时候,速度等同于Java的硬输出。且在DEBUG模式下,会动态的加载模板文件,而不需要重启进程。 ...
具有extends和include帮助器的简单模板继承无效。 layout.html < h1> Hello World {{ template "body" }} {{ include "sidebar.html" }} index.html {{ extends "layout.html" }} {{ define "body"}}
继承功能。 可重用的代码块。 还有更多... 代码段 {{ print_variable }} {! print_variable_without_escaping_it !} {# comment #} {% var code_inside_this_tags = true %} ~{{ escape_template_tags }} @...
但是在某些情况下,需要紧密耦合的组件,我们希望它们成为单个实体,但我们想重用模板和控制器逻辑, extends和slot不足,并且可能导致繁琐的代码。 谨慎使用此加载程序,在依赖此加载程序之前探索Vuer的方法来实现...
Extends 继承 ANE中的具体实现iOS原生功能的代码是我编写的,但是整个ANE的快速编译框架是参考Github上的开源ANE模板,里面有很多宏文件以及批处理文件都已经提前写好了,不用我们再纠结这些问题,直接编译就可以...
变数采用jinja2的架构,需要用url_for('static', filename = 'css/style.css')引用bootstrap5将后端资料在前端显示继承模板{% extends 'index.html' %}创建子模板{% block content %} {% endblock %}繼承的模板可以...
在base.html模板中,只需添加render_breadcrumbs标记,任何继承了base的模板都应包含面包屑。 IE base.html {% load view_breadcrumbs %} {% block breadcrumbs %} {% render_breadcrumbs %} {# Optionally ...
Class 里面同样含有 extends 继承。 14. 模块化 ES6 中引入了模块化的概念,可以使用 export 和 import 来进行模块的导入和暴露。暴露的方法有多种,可以使用 import {需要导入的东西} from’需要导入的东西的位置...
上下级接口可以通过“extends”关键词继承; 接口所有方法都是“public”权限(爱E族); 接口可以定义常量成员,但不能定义变量成员; 类通过“implements”关键词来实现接口,类必须完全实现接口定义的所有...