广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中Smarty模板如何实现模板继承
  • 308
分享到

PHP中Smarty模板如何实现模板继承

2024-04-02 19:04:59 308人浏览 八月长安
摘要

这篇文章主要介绍PHP中Smarty模板如何实现模板继承,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!{extends}模板继承中,你可以在子模板内使用{extends}标签来扩展父

这篇文章主要介绍PHP中Smarty模板如何实现模板继承,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

{extends}
模板继承中,你可以在子模板内使用{extends}标签来扩展父模板。
1.{extends}必须放在模板的第一行。
2.如果子模板要用{extends}来扩展父模板,那么它只能有 {block}的区域。

3.任何其他的模板内容都会被忽略。

扩展使用在$template_dir 之外的文件,请使用模板资源的语法。

Note
当你扩展一个父模板名称的变量如{extends file=$parent_file},

请确保$parent_file变量放到同一个 $cache_id中. 否则Smarty无法辨别不同的$parent_file变量。

parent.php页面

<?php 
//创建smarty对象
require_once './libs/Smarty.class.php';
//定义根目录
define('ROOT', str_replace("\\", "/",dirname(__FILE__))."/");
//实例化Smarty类
$smarty=new Smarty();
//设定定界符
$smarty->left_delimiter="<{";
$smarty->right_delimiter="}>";
//设置为false 定界符号左右可以有空格
$smarty->auto_literal = false;

//添加一个插件的目录
//$smarty->setPluginsDir(ROOT."/libs/myplugins/");

//注意添加一个插件,要把系统默认设置的路径加入 否则不能使用默认系统的插件
$smarty->setPluginsDir(array(
    ROOT."/libs/plugins/",//系统默认设置的路径
    ROOT."/libs/myplugins/",//自定义的
));

//变量输出
$smarty->display('parent.tpl');

?>

child.php页面

<?php 
//创建smarty对象
require_once './libs/Smarty.class.php';
//定义根目录
define('ROOT', str_replace("\\", "/",dirname(__FILE__))."/");
//实例化Smarty类
$smarty=new Smarty();
//设定定界符
$smarty->left_delimiter="<{";
$smarty->right_delimiter="}>";
//设置为false 定界符号左右可以有空格
$smarty->auto_literal = false;

//变量输出
$smarty->display('child.tpl');

?>

parent.tpl页面

<!DOCTYPE html>
<html>
<head>
    <meta Http-equiv="content-type" content="text/html;charset=utf-8"/>
    <title><{block name="one"}>This is a title<{/block}></title>
</head>
<body>
<{block name="two"}>This is a content....<{/block}>
<{block name="three"}>我是<{/block}>
<{block name="four"}>中国<{/block}>
<{block name="five"}>电影<{/block}>
<{block name="six"}>我要去<{$smarty.block.child}>上大学<{/block}>
</body>
</html>

child.tpl页面

<{extends 'parent.tpl'}>
<{block name="one"}>我是第一个block<{/block}>
<{block name="two"}>我是第二个block<{/block}>
<{block name="three" append}>津沙港湾<{/block}>
<{block name="four" prepend}>我爱你,<{/block}>
<{block name="five" }>你喜欢看<{$smarty.block.parent}>吗?<{/block}>
<{block name="six" }>上海<{/block}>

浏览器输出(child.php页面输出)

我是第二个block
我是津沙港湾
我爱你,中国
你喜欢看电影吗?
我要去上海上大学

模板继承
继承是从面向对象编程而来的概念。

模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展。

扩展继承意味着子模板可以覆盖部分或全部父模板的块区域。

继承结构可以是多层次的,所以你可以继承于一个文件,而这个文件又是继承于其他文件,等等。

在覆盖父模板的{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} 来作为继承。

以上是“PHP中Smarty模板如何实现模板继承”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP中Smarty模板如何实现模板继承

本文链接: https://www.lsjlt.com/news/83693.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP中Smarty模板如何实现模板继承
    这篇文章主要介绍PHP中Smarty模板如何实现模板继承,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!{extends}模板继承中,你可以在子模板内使用{extends}标签来扩展父...
    99+
    2022-10-19
  • Django模板继承与模板的导入实例详解
    目录一:模版的继承1.什么是模板继承2.使用继承流程原理3.模板继承语法二:模板的继承使用1.案例需求2.总结模板继承三:模版的导入1.模板导入2.模板导入格式3.模板导入使用4.使...
    99+
    2022-11-13
  • Django中模板的继承及引用实现
    引言 大家啊可以随便取找个网站,比如:淘宝。多去看看它不同的页面,用你闪亮的大眼睛去找不同点和相同点。 到一定时候,你会发现,网站中有些不同的页面,它们中的部分数据是完全一模一样的...
    99+
    2022-11-12
  • Laravel框架模板继承操作如何实现
    本文小编为大家详细介绍“Laravel框架模板继承操作如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel框架模板继承操作如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。laravel和T...
    99+
    2023-07-04
  • django中模板继承与ModelForm实例详解
    目录模板的继承form和ModelForm使用方法总结模板的继承 完美在写html的时候会发现,自己多个html文件中又好多东西是一样的,包括静插件的引入 还有有些简单的css样式都...
    99+
    2022-11-10
  • django中模板继承与ModelForm怎么用
    这篇文章主要讲解了“django中模板继承与ModelForm怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“django中模板继承与ModelForm怎么用”吧!模板的继承完美在写ht...
    99+
    2023-06-30
  • Django模板继承和静态资源如何使用
    这篇“Django模板继承和静态资源如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2022-10-19
  • Xamarin XAML语言中如何实现控件模板的模板绑定
    这篇文章主要介绍Xamarin XAML语言中如何实现控件模板的模板绑定,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 控件模板的模板绑定为了可以轻松更改控件模板中控件上的属性值,可以在控件模板中实现模板绑...
    99+
    2023-06-04
  • php如何安装模板
    本篇内容主要讲解“php如何安装模板”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何安装模板”吧!一、准备工作在安装模板之前,我们需要确保以下条件已满足:已安装PHP要安装PHP模板,必...
    99+
    2023-07-05
  • react中如何实现同构模板
    这篇文章给大家分享的是有关react中如何实现同构模板的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。TODO List数据:如何保持前后端应用状态一致路由:路由在服务端和客户端中...
    99+
    2022-10-19
  • JavaScript如何实现模板文字
    小编给大家分享一下JavaScript如何实现模板文字,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!模板文字我们通常使用“+”运算符连接字符串值和变量。有了ES6...
    99+
    2023-06-27
  • php网站如何改模板
    本文小编为大家详细介绍“php网站如何改模板”,内容详细,步骤清晰,细节处理妥当,希望这篇“php网站如何改模板”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。确定你的网站框架在更改模板之前,你需要知道你的 PHP...
    99+
    2023-07-05
  • 如何使用JavaScript实现模板方法模式
    模板方法模式是一种行为设计模式,它是指将一个算法的骨架定义在一个操作中,将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。在本文中,我们将介绍如何使用 JavaScript 实现模板方法模式。实...
    99+
    2023-05-14
  • php如何替换模板变量
    这篇文章给大家分享的是有关php如何替换模板变量的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php替换模板变量的方法:首先用fopen()函数打开文件;然后通过fread函数读取文件;最后使用str_repla...
    99+
    2023-06-07
  • 如何在PHP中使用模板引擎?
    随着网站的不断发展,许多开发人员开始使用模板引擎来更方便地管理和呈现网站内容。PHP作为一种非常流行的网站开发语言,也提供了许多模板引擎供开发者选择,例如Smarty、Twig和Blade等。在本篇文章中,我们将介绍如何在PHP中使用模板引...
    99+
    2023-05-14
    使用 PHP 模板引擎
  • OpenCV-Python如何实现多模板匹配
    小编给大家分享一下OpenCV-Python如何实现多模板匹配,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!多模板匹配在上一篇的实战中,我们通过人物眼睛的子图,找...
    99+
    2023-06-15
  • SpringBoot中web模板渲染的实现
    目录模板ModelModel中添加对象日期格式化模板 开发Web站点的本质,其实就是根据浏览器发起的请求(输入),生成HTML代码返回给浏览器(输出)。在之前的学习中,我们已经通过文...
    99+
    2022-11-13
  • 如何使用Python继承实现单例模式
    这篇文章给大家分享的是有关如何使用Python继承实现单例模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。继承实现:class ParentClass:    ...
    99+
    2023-06-17
  • thinkphp模板中如何求和
    本篇内容主要讲解“thinkphp模板中如何求和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp模板中如何求和”吧!thinkphp模板中求和的实现方法:1、创建一个Show控制器...
    99+
    2023-07-04
  • php中如何实现smarty
    这篇文章主要介绍php中如何实现smarty,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在PHP中,smarty是一个使用PHP编写出来的模板引擎,提供了一种易于管理和使用的方法,将原本与HTML代码混杂在一起的P...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作