在thinkphp5.0中需配置模板继承机制实现页面共用结构:先创建base.html定义{block}区块,子模板首行用{extend name="index/base"/}声明继承,再用同名{block}重载内容,支持完全替换、追加(含{__block__})或清空。

要在ThinkPHP5.0中实现多个页面共用头部、尾部和导航结构,避免重复写HTML代码,必须正确配置模板继承机制,否则子模板无法识别基础模板中的区块定义,渲染时会直接报错或空白输出。
创建基础模板文件
在 【application/index/view/】 目录下新建 base.html 文件(路径可按模块调整,但必须与后续 extend 中的 name 路径一致)。
写入标准 HTML 结构,并用 {block name="xxx"} 标签包裹可被替换的区域,例如:<title>{block name="title"}默认标题{/block}</title>{block name="content"}主内容区{/block}
注意:block 标签必须成对出现,且 name 属性值只能是字母、数字、下划线,不能含斜杠或点号。
在子模板中声明继承关系
在要复用 base.html 的子模板(如 index.html)开头第一行,**必须且只能写一次**:{extend name="index/base" /}
其中 name 值为相对 【application/view/】 目录的路径,不带扩展名;若 base.html 在 application/index/view/base.html,则 name 写 index/base;若在 application/common/view/base.html,则写 common/base。
这一步漏掉或路径写错,模板引擎根本不会进入继承流程,而是当作普通模板直接渲染,所有 block 都原样输出为字符串,页面显示 {block name="title"}... 这类原始标签。
重载指定区块内容
在子模板中,用同名 {block name="xxx"} 标签包裹新内容,即可覆盖基础模板中对应区块:
方法一:完全替换{block name="title"}用户中心页{/block}
方法二:保留基础内容并追加{block name="content"}{__block__}<p>这是新增的欢迎语</p>{/block}
【{__block__} 是关键占位符】,它表示插入基础模板中该 block 的原始内容,缺了它就只剩新增部分。
方法三:清空该区块(留空){block name="sidebar"}{/block}
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











