thinkPHP 引入header模板,模板内的标签不解析

pinaby 2012-04-29 10:12:53
大家好:
刚开始使用TP,遇到一个问题,问题大概是这样的:
网站分为头部、内容部分、底部。
头部主要是一个导航菜单,模板文件我写为了header.html
当首页index文件引入header.html的时候 header里面动态的内容并没有显示出来。
使用localhost/index.php/Common/header (我在commonAction.class.php 定义了header 方法)是可以显示出来的。说明index引入的只是静态的html文件,并没有解析?怎么解决,谢谢大家!
...全文
4874 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
90HouDaShu 2013-02-06
  • 打赏
  • 举报
回复
yw5201314正解
xushre 2012-08-24
  • 打赏
  • 举报
回复
要回答就回答正确,不要误导其他查到问题答案的人~~~~~如果你晓得答案就不要乱回答,误导他人,浪费时间
ImFantasy 2012-04-30
  • 打赏
  • 举报
回复
最好的方法, 去下载thinkphp官方的开源演示。 仔细的看完他们官方的代码结构, 你就发现你这些问题都解决了。
积累是金 2012-04-29
  • 打赏
  • 举报
回复
不用的~,你定义个父类,里面写一些公用的方法 这个类继承action , 里面包括重写tp的 display()方法, 然后在这个方法里面调用header类 就可以了 其他的控制器里面的方法 只要用这个display() 自动就载入了 header~ 明白吗
pinaby 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

比方说你养加载首页 index.php,那么 肯定是加载对应的index。html模板, 如果已经确定了 这种情况下 是可以载入静态的header的话, 那么 看看你在index。php 里面的index()方法里面是否有没有对header里面的数据 assign(),
[/Quote]
恩 ,如果把header里面的变量在index控制器里面定义,是可以显示导航栏的。但是这未必太麻烦了,那样的话 我就必须在首页控制器,子栏目控制器,文章显示控制器,注册控制器。。。等等,都要定义栏目变量呀
积累是金 2012-04-29
  • 打赏
  • 举报
回复
比方说你养加载首页 index.php,那么 肯定是加载对应的index。html模板, 如果已经确定了 这种情况下 是可以载入静态的header的话, 那么 看看你在index。php 里面的index()方法里面是否有没有对header里面的数据 assign(),
pinaby 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

还有 记得在有修改变动的时候 最好删除一下——runtime里面的所有内容,避免 缓存的影响
[/Quote]
删除了 没作用!
pinaby 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

你可以这样测试一下:
1.将header 里面就放点静态的文字。
然后看看index是否能够正常引入header

。如果正常显示了文字,那么就是你的php里面有问题。


如果没有没有显示出来就是你的模板配置有问题
检查路径 名称,
[/Quote]
如果是静态的是可以正常显示的。php应该没有问题localhost/index.php/Common/header 执行后可以输出导航内容 那说明函数(即php语法)没有问题
积累是金 2012-04-29
  • 打赏
  • 举报
回复
还有 记得在有修改变动的时候 最好删除一下——runtime里面的所有内容,避免 缓存的影响
积累是金 2012-04-29
  • 打赏
  • 举报
回复
你可以这样测试一下:
1.将header 里面就放点静态的文字。
然后看看index是否能够正常引入header

。如果正常显示了文字,那么就是你的php里面有问题。


如果没有没有显示出来就是你的模板配置有问题
检查路径 名称,
pinaby 2012-04-29
  • 打赏
  • 举报
回复
在index.html中 我调用的这一句
<include file="Common:header" />
在header.html中我是这样调用动态的

<div class="nav">
<ul>
<li><a href="__APP__">  网站首页   |</a></li>
<volist name="category" id="categorylist">
<li><a href="__APP__/ArticleList/articlelist/id/{$categorylist.id}">{$categorylist.catename}   |</a></li>
</volist>
<div class="searchbox">
<form action="" method="">
<input type="text"><input type="submit" value="搜索" />
</form>
</div>
</ul>
</div>

积累是金 2012-04-29
  • 打赏
  • 举报
回复
你要把index里面是怎么引入的代码粘贴出来,
pinaby 2012-04-29
  • 打赏
  • 举报
回复
help!
coder 2012-04-29
  • 打赏
  • 举报
回复
是不是有语法错误。逐一排查

可以使用Include标签来包含外部的模板文件,使用方法如下:

include标签(包含外部模板文件)

闭合
闭合标签

属性
file(必须):要包含的模板文件,支持变量


示例:

1、 使用完整文件名包含

格式:<include file="完整模板文件名" />

例如:

<include file="./Tpl/default/Public/header.html" />

这种情况下,模板文件名必须包含后缀。使用完整文件名包含的时候,特别要注意文件包含指的是服务器端包含,而不是包含一个URL地址,也就是说file参数的写法是服务器端的路径,如果使用相对路径的话,是基于项目的入口文件位置。



2、包含当前模块的其他操作模板文件

格式:<include file="操作名" />

例如 导入当前模块下面的read操作模版:

<include file="read" />

操作模板无需带后缀。



3、 包含其他模块的操作模板

格式:<include file="模块名:操作名" />

例如,包含Public模块的header操作模版:

<include file="Public:header" />



4、包含其他模板主题的模块操作模板

格式:<include file="主题名:模块名:操作名" />

例如,包含blue主题的User模块的read操作模版:

<include file="blue:User:read" />



5、 用变量控制要导入的模版

格式:<include file="$变量名" />

例如

<include file="$tplName" />

给$tplName赋不同的值就可以包含不同的模板文件,变量的值的用法和上面的用法相同。



无论你使用什么方式包含外部模板,Include标签支持在包含文件的同时传入参数,例如,下面的例子我们在包含header模板的时候传入了title和keywords变量:

<include file="header" title="ThinkPHP框架"keywords="开源WEB开发框架"/>

就可以在包含的header.html文件里面使用var1和var2变量,方法

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>[title]</title>

<meta name="keywords" content="[keywords]" />

</head>



注意:由于模板解析的特点,从入口模板开始解析,如果外部模板有所更改,模板引擎并不会重新编译模板,除非在调试模式下或者缓存已经过期。如果部署模式下修改了包含的外部模板文件后,需要把模块的缓存目录清空,否则无法生效。





4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧