模板继承,那么首先就要有个父模板
由于很多页面有的地方很相似,因此,只需要将相似的地方提取出来,做成父模板,然其他模板继承共享就可以了。而我们只需要编写不同地方的代码即可。
补充:前面我对于{include file="public/footer" /}这样的语句不是太理解。实际上是因为当前这个页面的默认路径是在view下,因此只写public/footer在电脑看来,就是view/public/footer这样的路径。即使当前index.html页面的路径是public/index.html,只要用了{include file="" /}那么默认路径就是在view下
父模板的创建路径就在application/index/view/public下,取名为base.html。这里我发现一个规律,控制器的命名规范都是开头字母大写,比如Base.php,而页面都是小写字母。
由于已经将index.html中的内容都复制到了base.html中来制作模板,所以就像下图这样,用block块进行操作
像这样就基本差不多做好了基础模板。
然后开始在index.html页面中进行继承,并且删除之前的{include file="" /},这是因为基础模板中已经有{include file="" /}了。
开始用{extend name="public/base" /}来继承上面做好的基础模板,千万别忘了。只有继承之后,再用{block name="content"}{/block}这样的标签将对应基础模板的内容括起来。当然,名字是自己在基础模板中自己根据特点命名好的。
这个index.html最后没有js脚本,所以这里就意思一下,给它一个空的block
有几个注意点:
基础模板中,正常只有{include file="" /}标签和{block name=""}{/block}标签
子模板中(只限当前所讲知识中)只能出现{extend name="" /}和{block name=""}{/block}标签
若父模板多出来的{block name=""}{/block}子模板没有套用。那么这个多出来的模块也是可以使用的,并且默认是父模板中的内容。
最后,若想在子模板中引入父模板的内容,那么可以这样{__block__}:
显示效果类似这样:
这个的前提是,父模板这个地方写的内容是:
{block name="seo"} 这里是什么什么内容 {/block}
之后,按照上面的引用方法才管用。
其他的一些细节部分,比如但标签{extend name="" /}不能忘了/,设置html中的某个标签的content=""属性的时候,可以这么写content="$content|default='文章内容'",这种表示就能表示默认值了。。。