Smarty 模板布局继承

摘要:
Smarty模板继承自覆盖父模板的{block}块,子模板不能定义任何内容。{block}之外的任何内容都将被自动忽略。子模板和父模板中的{block}内容可以通过append和prepend合并。
Smarty 模板继承

在覆盖父模板的{block}块以外的地方, 子模板不能定义任何内容。任何在{block}以外的 内容都会被自动忽略。

在子模板和父模板中的{block}内容,可以通过 append 和 prepend来进行合并。 {block}的选项,和 {$smarty.block.parent} 或 {$smarty.block.child}会持有这些内容。

布局继承使用特点

1.布局页面可以有许多{block},子级页面也可以有许多block,他们通过name属性进行关联

2子级页面除了{extend} 和{block}其它内容不给显示,

3布局页面的{block}可以有默认内容,子级页面不实现就直接显示,实现覆盖

4布局的{block}可以彼此嵌套,子级实现可以有针对性实现

5{$smarty.block.child}布局可以调用子级内容

  {$smarty.block.child}子级页面可以调用父级页面内容

父模板

<html>
<head>
  <title>{block name=title}默认页面标题{/block}</title>
  {block name=head}{/block}
</head>
<body>
{block name=body}{/block}
</body>
</html>

子模板

{extends file='layout.tpl'}
{block name=head}
  <link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
  <script src="/js/mypage.js"></script>
{/block}

孙模板

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

免责声明:文章转载自《Smarty 模板布局继承》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇docker安装Jenkins和构建python容器Debug与Release版本的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数量线程SM,SP和GRID,BLOCK,THREAD之间的对应关系是什么?

最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--数量线程     SM,SP是硬件构结          GRID,BLOCK,THREAD是软件念概                    从硬件度角讲,一个GPU由多个SM构成(当然还有其他部份),一个SM含包有多个SP(以及还有寄存器资源,shared memory资源,L1cache,...

最全的iOS面试题及答案-转载

1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原...

ACE_Message_Block实现浅析

ACE_Message_Block实现浅析1. 概述ACE_Message_Block是ACE中很重要的一个类,和ACE框架中的重要模式的实现 如ACE_Reactor, ACE_Proactor, ACE_Stream, ACE_Task都有紧密的联系. 换个角度看,ACE_Message_Block实际上已经是这些实现中的重要组成部分.抛开和框架的配...

magento添加调用block的几种方法

静态块主要是指在后台添加的可用静态块调用方法常见的有如下几种:(这边就不介绍使用widgets 调用的方法了,有兴趣的朋友可以自己在后台widgets中尝试设置)1、直接在HomePage中调用(只限首页):修改layout中的xml代码<reference name=”content”><block type=”cms/block”...

Flexible实现H5页面的rem布局适配

1、https://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html (使用Flexible实现手淘H5页面的终端适配) 2、http://blog.csdn.net/u010377383/article/details/77963973 (Flexible实现手淘H5页面的rem布局适配)...

ios开发--常用宏定义(部分转)

1、release时,屏蔽log C代码   #if defined (DEBUG) && DEBUG == 1      #else   #define NSLog(...) {};   #endif   #if defined (DEBUG) && DEBUG == 1 #else #define NSLog...