发新话题
打印

smarttemplate引入模板文件总结

本主题由 phpres 于 2007-11-16 09:21 加入精华

smarttemplate引入模板文件总结

一个网页,比如我们要拆分成header.lbi和index.tpl和footer.lbi三个文件,我们需要在index.tpl中引入header.lbi和footer.lbi两个模板文件以组成完整的网页,SmartTemplate 1.2.1以前的版本并不支持支持include的语法,但我们也可以用来<?php include('header.html');?>包含一些复用的文件,但这样的包含并不能解析其中的语法,所以只能包含一些纯静态的文件。现在这些问题已经都解决,你可直接在模板中使用include把你需要的文件包含进来.
引用:
As of version 1.2.0 templates can be included in other templates by using the INCLUDE statement.
This permit the use of subtemplating.

The syntax is the following:<!-- INCLUDE templatename.html -->
之前一直没有打到正确的方法,因为没范例,所以用
这样试:{include templatename.html}试不行,换了好几种方法也不行,正确是
复制内容到剪贴板
代码:
<!-- INCLUDE header.lbi -->
以前的解决方案就是用php把模板文件引入后assign到模板,模板里在放一个{header}类似的东东。推荐如果你的版本是smarttemplate 1 . 2 . 0 以上的就用新方法吧。

TOP

一個偽裝成白癡的天纔!

TOP

有个小问题:
<!-- INCLUDE header.lbi -->
如果这个文件在当前模板文件的上层目录里,就找不到了

TOP

修改class.smarttemplateparser.php文件中compile()和count_subtemplates()两个方法的正则为([a-zA-Z0-9\-_.\/]+)
(zt)

TOP

比方說,HEADER.HTML我也是通過程序控制輸出的,在INNEX.HTML頁面直接INCLUDE進來的HEADER.HTML

那么在INDEX.HTML會編譯HEADER.HTML業的內容嗎?

還是單純的引入一個靜態頁面?

TOP

總結:要在引用子頁的頁面控制程序中給子頁賦值,什么值都無所謂(可為空),讓后直接在頁面中INCLUDE就好了

但是這個還不如直接用RESULT()這個還清楚些

TOP

呵呵。。按照上面的高手把正则改了下,果然可以支持不同目录的文件了。
不过经测试发现,可是INCLUDE PHP文件,也可以INCLUDE HTML文件,
但是INCLUDE HTML文件中如果有 {XXX},而且在程序中又没有定义的话,
就会出现找不到该页面。同时不能INCLUDE 调用该模板文件的PHP文件,
否则也会卡死,似乎陷入死循环了。

TOP

发新话题