重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍PHP中Smarty模板如何实现模板继承,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联是专业的密山网站建设公司,密山接单;提供成都网站建设、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行密山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!{extends}
模板继承中,你可以在子模板内使用{extends}标签来扩展父模板。
1.{extends}必须放在模板的第一行。
2.如果子模板要用{extends}来扩展父模板,那么它只能有 {block}的区域。
3.任何其他的模板内容都会被忽略。
扩展使用在$template_dir 之外的文件,请使用模板资源的语法。
Note
当你扩展一个父模板名称的变量如{extends file=$parent_file},
请确保$parent_file变量放到同一个 $cache_id中. 否则Smarty无法辨别不同的$parent_file变量。
parent.php页面
child.php页面
left_delimiter="<{"; $smarty->right_delimiter="}>"; //设置为false 定界符号左右可以有空格 $smarty->auto_literal = false; //变量输出 $smarty->display('child.tpl'); ?>parent.tpl页面
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模板如何实现模板继承”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。