讨论有关模板的几个功能

#1 ctcwri

新板的模板的layout非常好,但功能一些不足,可能是我没有发现,还望多指教。比如说一个layout.html是这样的

  
    首页
  


    <{include file=$__template_file}>



如果我在子页面中,想换掉的内容,这样就比较麻烦。我想到可以定义一个变量放在title中,比如<title><{$title}>这样可以实现简单的替换。但是如果我想放一大段js代码或者css在区。这样用变量就比较麻烦。这些内容应该是做在模板里面,移到php中去写就不太好。

以前我用smarty是用继承功能来解决这个的,把block定义好后,很方便。
比如说
parent.html



{block name="title"}标题{/block}


...

在子页面中只需这样写
child.html
{extends file="parent.html"}  
{block name="title"}这里是对应的title{/block}  
{block name="script"}
这里就是script
{/block}


所有的东西都在view层,不需要移到php中去。

新版模板怎么实现这样的功能?如果新版模板也支持多个替换,就很完美了。

2017-03-14 20:39:08

#2 jake

smarty的block功能,其实相当于include。你的需求其实不应往layout的方向思考,而是include

如,禁用或删除layout,然后某个页面模板是:

<{$title = "标题"}>
<{include file="header.html"}>
<{include file="js.html"}>
...

而在子html页面里面,可以做相应的判断。

2017-03-14 21:57:08

#3 ctcwri

jake 发表于 2017-3-14 21:57
smarty的block功能,其实相当于include。你的需求其实不应往layout的方向思考,而是include

如,禁用或删 ...
谢谢jake的及时回复!
以前也有用过include,不过后来追求优雅,父类—>子类,父模板—>子模板,对应起来。只是感觉良好。。。
用include也是一样的,都能实现,我改用include了。

2017-03-14 23:09:08

#4 jake

ctcwri 发表于 2017-3-14 23:09
谢谢jake的及时回复!
以前也有用过include,不过后来追求优雅,父类—>子类,父模板—>子模板,对应起来 ...
一样的,只是命名上感觉会不一样。
include严格来说更优雅:模板组件化开发,通过include粘合到一起成为一个整体,随时更换任何一个组件模板而不会影响其他的。

2017-03-15 08:59:52