用head.php和foot.php来解析这两个模板,然后再include“head.php”和“foot.php”,这样应该可以,没试过,可以试试!!

解决方案 »

  1.   

    你看smarty的demo文件,里面有这个
      

  2.   

    同意erldy(我还是我)的看法,就是这样
      

  3.   

    ---楼主---
    以下是我采用的一种方法:
    --code---
    <?php
    $page = new SmartTemplate("opensource.html");//....opensource.php自身里的东西省略....//下面PAGE_FOOT这块就对应要套嵌的模板foot.html
    $page_foot = new SmartTemplate('foot.html');
    $page_foot->assign('PROCESS_TIME',timer());
    $page->assign('PAGE_FOOT', $page_foot->result()); //PAGE_FOOT作为一块$page->output(); //整个页面输出
    ?>
    opensource.html里套嵌foot.html的方法:
    {PAGE_FOOT}
    --code--这个方法能够实现,但是不能作为2个单独的能被include的文件。不知道有没有别的解决方法。
    另外遇到一个<!--if var-->aa<!--endif var-->无论var是否为空aa都显示出来了。是什么原因呢?---楼主---
      

  4.   

    楼上不用开两个新类一个就可的,
    smartytempalte支持多个模板
    $page->set_templatefile('foot.html');
    这里处理
    $page->assign('PAGE_FOOT', $page_foot->result('foot.html')); 
      

  5.   

    直接在模板里{load_file:"head.htm"}参见http://smartphp.net/Examples/Templating/Extensions/load_file.php?menu=47
      

  6.   

    ---楼主---直接load静态文件的话volca(v) 的方法可行。
    但是如果head.htm也需要assign的话好象就不行了。uuq(杜牧) 的意思是不是取消$page_foot = new SmartTemplate('foot.html');这一行?
    如果取消了那么$page->assign('PAGE_FOOT', $page_foot->result('foot.html')); 的$page_foot从那定义?
    ---楼主---
      

  7.   

    $page_foot换成$page以后,只解析最后一个set_templatefile中的模板文件了。
      

  8.   

    试验多次,总算实现了。不过原理不是很清楚。是不是需要必须new最先显示的模板文件,然后往下set_templatefile?
    <?php
    $page = new SmartTemplate("header.html");
    ////assign sth
    //$page->output();   <---这里为什么不output()
    $page->set_templatefile("ShowDetail.html");
    ////assign sth
    $page->output();     <---这里output()一次$page->set_templatefile("footer.html");
    $page->assign("FOOTER",$page->result());
    $page->output();     <---这里也要output()一次
    ?>ShowDetail.html
    <html>
    <body>
    {HEADER}
    ....
    {FOOTER}
    </body>
    </html>
      

  9.   

    请问楼上的{HEADER}定义在哪里?
    如果要在ShowDetail.html内加入其它的内容的话,要用到display的话,会不会冲突呀,
    display与SmartTemplate的output有什么区别?
      

  10.   

    不定义{HEADER}了
    简单的说,最先显示的new然后output();
    接下来显示的就set_templatefile()再output();
      

  11.   

    晕了晕了。
    每次set_template以后显示出来的位置都不对了...
    不是替换{}了到底应该怎么实现include 啊?
    达人现身啊~~~
      

  12.   

    $data = $header->result();
    $main->assign('header, $data);
      

  13.   

    楼上的$header在哪定义?
    是$header=new template()还是$header=set_templatefile()?
      

  14.   

    如果header模板里有N个assign的话,而有N个文件需要用到header,那每个文件里都要assign很多次了。
    这样就失去了包含文件的意义了。
    我现在的做法是显示页面的模板里使用{HEADER}
    php文件里$page->assign("HEADER",include(ROOT_PATH."header.php"));
    然后header.php如下
    <?
    $header = new SmartTemplate("header".EXT);
    $header->assign(...)
    $header->assign(...)
    $header->assign(...)
    ....
    return $header->result();
    ?>这样的话修改了header.php那么所有包含了{HEADER}的文件都会更新了,
    算是include 的目的达到了,但是不知道是否合理。
      

  15.   

    {include file = head.html}
    <body>
    </body>
    {include file = foot.html}
      

  16.   

    楼上的回帖要看回帖...
    不过还是谢谢了有个问题我将$array用print_r()打印出来效果如下:
    Array
    (
        [0] => Array
            (
                [SELLTOP_INDEX] => 0
                [SELLTOP_LINK] => ShowDetail.php?product_id=100285
                [SELLTOP_TITLE] => 实用皮肤病性病治疗学
            )    [1] => Array
            (
                [SELLTOP_INDEX] => 1
                [SELLTOP_LINK] => ShowDetail.php?product_id=
    100270
                [SELLTOP_TITLE] => 内分泌代谢病临床新技术
            )    [2] => Array
            (
                [SELLTOP_INDEX] => 2
                [SELLTOP_LINK] => ShowDetail.php?product_id=
    100169
                [SELLTOP_TITLE] => 神经科感染性疾病诊疗常规
            )    [3] => Array
            (
                [SELLTOP_INDEX] => 3
                [SELLTOP_LINK] => ShowDetail.php?product_id=
    100161
                [SELLTOP_TITLE] => 临床常用辅助检查手册
            )
    )我想问一下怎么用begin...end...来实现循环?
    比较急,大伙帮忙。
      

  17.   

    <!-- BEGIN tag -->
    {SELLTOP_INDEX}<a href="{SELLTOP_LINK}">{SELLTOP_TITLE}</a><br>
    <!-- END tag -->
    $page->assign('tag',$array);