在phplib模板中如何包含php文件
模板文件中例如在web文件下面有top.php,index.php和default文件夹,在default文件夹下面有top.htm 和index.htm文件,现在我想让index.php包含top.php,请问这样的情况,如何让这个模板实现。 问题点数:80、回复次数:11Top
1 楼fzjw(冰凌尘埃)回复于 2004-08-02 08:51:34 得分 0
在index.php中包含top.php就可以了呀,用得着这么做吗?
Top
2 楼allkill(傲气游)回复于 2004-08-02 09:05:42 得分 0
在index.php中include("top.php"),再将top.php的模板解析结果保存为一个变量(就是改改显示的部分)传递给index.php的模板处理部分。这样就可以把top.php输出重定向到index.php指定的部分。Top
3 楼Einar(Love_lzw)回复于 2004-08-02 09:07:27 得分 0
include_once("top.php")不可以吗???????Top
4 楼mrshelly(Shelly)回复于 2004-08-02 09:11:18 得分 0
index.html
里放一个 {top}
set_file("top_template","top.html");
...
对 top.html 模板进行处理
处理后.
set_file("index_template","index.html");
parse("top","top_template");
即可~~~~~~~Top
5 楼freescy2002(我要努力)回复于 2004-08-02 13:20:58 得分 0
大家帮偶分析一下吧,运行index.php什么也没有显示。
left.php文件如下
<? $user=="abc";
if($user=="abc"){
$noname="good";
}else{
$noname="bad";}
include "Template/template.inc";
$tt = new Template("Template");
$tt->set_file("MyFileHandle","left.htm");
$tt->set_var("left",$noname);
$tt->parse("MyOutput","MyFileHandle");
$tt->p("MyOutput");
?>
left.htm 如下
{left}
index.php如下
<?
include "Template/template.inc";
$t = new Template("Template");
$t->set_file("MyFileHandle","index.htm");
$t->set_file("_left", "left.htm");
$t->parse("left","_left");
$t->parse("MyOutput","MyFileHandle");
$t->p("MyOutput");
?>
index.htm如下
{left}Top
6 楼xuzuning(唠叨)回复于 2004-08-02 15:15:53 得分 20
这样当然不行
1、你没有运行left.php
2、你没有在index.php中对模板变量left赋值
Top
7 楼freescy2002(我要努力)回复于 2004-08-02 15:58:06 得分 0
xuzuning(唠叨)
老大,那样的话,是不是只能对include left.php 把lefp.php的内容用一个变量赋值,然后 就像allkill(傲气游) 大哥说的那样,把这个变量给index.php再输出去。这个left.php必须是纯php文本,不可以使用html混插了是不是??Top
8 楼ccterran(iwind)回复于 2004-08-02 16:03:58 得分 20
没必要用top.php.直接用我跟你说的那种方法就行了吧Top
9 楼freescy2002(我要努力)回复于 2004-08-03 08:29:46 得分 0
ccterran(iwind) 大哥
小弟上次请教大哥是包含的是html文件,这次是包含的是php,需要用到两次模板解析,不知道如何操作了。根据allkill(傲气游)兄的指点,将整个php文件里同的内容当做一个变量来赋值可以运行出来,但是这个php文件就无法使用与html混 插了。Top
10 楼xuzuning(唠叨)回复于 2004-08-03 09:50:36 得分 40
这个left.php必须是纯php文本,不可以使用html混插了是不是?
你这个没有说清楚,我没有搞清楚你想干什么?
既然都使用模板了,怎么还“使用html混插”呢?
模板类的p方法为
function p($varname) {
print $this->finish($this->get_var($varname));
}
你可以派生或加一个result方法
function result($varname) {
return $this->finish($this->get_var($varname));
}
这样
$s = $tpl->result();
就取得了模板的处理结果而不输出
如果嵌入的文件确实“使用html混插”了,也可以这样处理
ob_start();
include "left.php";
$s = ob_get_contents(); //取回left.php的输出结果
ob_end_clean();
Top
11 楼cl_php()回复于 2005-01-17 09:51:23 得分 0
markTop




