16
UCHome 模模模模 Zuoyuan 2012/3/23

UCHome 模板解析

Embed Size (px)

DESCRIPTION

UCHome 模板解析. Zuoyuan 2012/3/23. 问题提出. 为什么要了解模板? 模板解析的过程是什么样的? 模板的基本语法 怎样修改模板?. - PowerPoint PPT Presentation

Citation preview

UCHome 模板解析

Zuoyuan 2012/3/23

问题提出• 为什么要了解模板?• 模板解析的过程是什么样的?• 模板的基本语法• 怎样修改模板?

1. <!--//说明 : 显示公共头部模板 -->2. <!--{template common/header}-->

3. <!--//说明 : 开始显示留言 -->4. <div id="ct" class="wp cl">5. <h1 class="mt"> 心情墙 - <!--{if $_G[uid]}--><a href="mood.php?mod=publish"> 发表心情</a><!--{/if}--></h1> 6. <div class="bm">7. <!--{if $list}-->8. <!--//说明 : loop 循环一个数组 相当于 foreach(){}-->9. <!--{loop $list $mood}-->10. <a href="home.php?mod=space&uid=$mood[uid]" target="_blank"><!--

{avatar($value[authorid],small)}--></a><br>11. <a href="home.php?mod=space&uid=$mood[uid]" title="$mood[username]" target="_blank"

class="xi2">$mood[username]</a> 发表于 : $mood[dateline]12. <br>13. 心情 : $mood[message]14. <hr>15. <!--{/loop}-->16. <!--//说明 : 显示准备好的分页链接 -->17. $multi18. <!--{else}-->19. <p class="emp"> 暂时没有记录 ...</p>20. <!--{/if}-->21. </div>22. </div>

23. <!--//说明 : 显示公共尾部模板 -->24. <!--{template common/footer}-->

模板• Uchome 和很多 php 框架都使用了模板• 模板使得框架和数据分开• 模板引擎– Smarty– Template Lite– Uchome 自定义的 模板

模板解析过程• 涉及的文件: php 引擎文件, htm 或其他

格式(如 tpl )的模板文件, php 缓存文件• 编译过程: php 引擎打开模板,进行替换,

生成 php 缓存文件

技术细节• 独立的标记

<!--{if $_G[uid]}-->• 查找替换——正则表达式

正则表达式• 功能:字符串查找匹配• 类似的技术:通配符 windows 下的 * ?• 一个例子

在模板中查找 <!--{template 各种可用字符 }-->正则表达式是 \<\<\!\-\-\{template\s+ ([a-z0-9_\/]+)\}\-\-\>

正则表达式基本语法/ 定界符^ 字符串头$ 字符串尾[a-z] 所有小写字母[A-Z] 所有大写字母[0-9] 所有数字? 零或一个紧接前的字符* 零或多个紧接前的字符+ 一或多个紧接前的字符{4} 4 个紧接前的字符{4,8} 4-8 个紧接前的字符. 任意字符(red|green|blue) Red 或 green 或 blue (红 或 绿 或 蓝)s 空格( ) [ ] . * ? + ^ | $

正则表达式语法举例• 匹配数字和字母

[0-9|a-z]+• 匹配 http 开头的 url

^http\<http

• 分组 ( 下面这个是干嘛的? )(\d{1,3}\.){3}\d{1,3}

在哪里可以使用正则表达式• Findstr• World• Open office• Excel• 编程语言 php , js , java 等

正则表达式参考• http://

deerchao.net/tutorials/regex/regex.htm• 正则表达式入门经典 Andrew

watt(TP301.2/6)

UChome 模板的语法<!--{template common/header}-->用 common/header.htm 替换这里<!--{template common/footer}-->用 common/footer.htm 替换

UChome 模板的语法• 流程控制

{if}{else if}{/if}{loop}{/loop}

• 变量$value{$_SN[‘title’]}

源代码// 模板

$template = preg_replace("/\<\!\-\-\{template\s+([a-z0-9_\/]+)\}\-\-\>/ie", "readtemplate('\\1')", $template);// 处理子页面中的代码$template = preg_replace("/\<\!\-\-\{template\s+([a-z0-9_\/]+)\}\-\-\>/ie", "readtemplate('\\1')", $template);// 解析模块调用$template = preg_replace("/\<\!\-\-\{block\/(.+?)\}\-\-\>/ie", "blocktags('\\1')", $template);// 解析广告$template = preg_replace("/\<\!\-\-\{ad\/(.+?)\}\-\-\>/ie", "adtags('\\1')", $template);// 时间处理$template = preg_replace("/\<\!\-\-\{date\((.+?)\)\}\-\-\>/ie", "datetags('\\1')", $template);// 头像处理$template = preg_replace("/\<\!\-\-\{avatar\((.+?)\)\}\-\-\>/ie", "avatartags('\\1')", $template);//PHP 代码$template = preg_replace("/\<\!\-\-\{eval\s+(.+?)\s*\}\-\-\>/ies", "evaltags('\\1')", $template);

本周任务• 在服务器上搭好框架,进行修改,添加插

件,配置模板等(按脚本行事)• 查看源代码、网上查找资料,将 uchome 修

改成我们修要的界面• 本周 php 培训

事务管理• 增加一次会议(周三或周日晚上 22 :

00 )• 确定一起工作的时间, 4 小时,本时间内,

禁止人人, QQ ,游戏等与任务无关的事,时间待定