主要讨论侧边栏
很多网站主体右侧,都会有一个侧边栏。譬如友情链接之类什么的,每个页面都有,而且重复。
这里讨论一个处理动态侧边栏的解决方法(动态就是会根据数据库更新的意思)。
主体方法如下:
$tpl->set_file("link_link","link_link.html");
$tpl->parse("link_area","link_link",true);
第一句是把侧边栏的页面读入,第二句是把侧边栏放到页面{link_area}处。
咋一看好像很简单,其实真的很简单。
这里贴一个刚做的网站的其中一个侧边栏的代码:
html页面最终侧边栏:
<div class="cb_link" align="left">
<table width="100%" cellspacing="0">
{link_area}
</table>
</div>
配对的php页面最终关于侧边栏的所有代码:
setLinkBlock($tpl);
setMovieBlock($tpl, $progid);
setMsgBlock($tpl, $progid);
这个页面的侧边栏共有三层,友情链接+movieblock+msgblock
经过服务器解析的侧边栏:
<div class="cb_link" align="left">
<table width="100%" cellspacing="0">
<tr height="8" bgcolor="#a11f25"><td colspan="2"></td></tr>
<tr><td align="left" height="28" colspan="2"><b><a> 友情链接</a></b></td></tr>
<tr><td align="left" class="mt2" colspan="2"><a> 1231321</a></td></tr>
<tr><td align="left" class="mt2" colspan="2"><a> 那啥</a></td></tr>
<tr><td align="left" class="mt2" colspan="2"><a> 还是那啥</a></td></tr>
<tr><td> </td></tr>
<!--last program block -->
<tr height="8" bgcolor="#a11f25"><td colspan="2"></td></tr>
<tr>
<td align="left" height="28"><b><a> 近期节目</a></b></td>
<td align="right"><a href="prog_list.php"><img src="./templates/images/more.png" /></a></td>
</tr>
<tr><td class="mt2" align="left" colspan="2">
<a href="prog_article.php?issue=d9f17e4d8460bb463bddff33ad4075e0"><b>[第3期]</b>fffffffffffffffffffffffffffff</a>
</td></tr>
<tr><td class="mt2" align="left" colspan="2">
<a href="prog_article.php?issue=8f274cca46324ceeb141e30d67d42488"><b>[第2期]</b>cccccccccccccccccccccccc</a>
</td></tr>
<tr><td class="mt2" align="left" colspan="2">
<a href="prog_article.php?issue=f6cb2e20c5d965cefae00f52a44a6c27"><b>[第1期]</b>那个那个那个</a>
</td></tr>
<tr><td> </td></tr><!--this is the message blob -->
<tr height="8" bgcolor="#a11f25"><td colspan="2"></td></tr>
<tr>
<td align="left" height="28"><b><a> 最新留言</a></b></td>
<td align="right"><a href="message_list.php"><img src="./templates/images/more.png" /></a></td>
</tr>
<tr><td class="mt2" align="left" colspan="2"><a> 123</a></td></tr>
<tr><td class="mt2" align="right" colspan="2"><a>--<b style="color:black;">游客</b></a></td></tr>
<tr><td> </td></tr>
</table>
</div>
想象一下,每个页面就这样几行就已经把侧边栏弄好了,那是多么干净。。
这里讨论侧边栏的其中一段的实现方式:
link_prog.html文件:
<!--last program block -->
<tr height="8" bgcolor="#a11f25"><td colspan="2"></td></tr>
<tr>
<td align="left" height="28"><b><a> 近期节目</a></b></td>
<td align="right"><a href="prog_list.php"><img src="./templates/images/more.png" /></a></td>
</tr>
<!-- BEGIN link_progblob -->
<tr><td class="mt2" align="left" colspan="2">
<a href="prog_article.php?issue={progid}"><b>[第{issue}期]</b>{intro}</a>
</td></tr>
<!-- END link_progblob -->
<tr><td> </td></tr>
这里已经是整个文件了,不需要<html>之类的文件头,因为是直接内嵌在表格里面的
php函数:
function setProgBlock($tpl) {
$tpl->set_file("link_prog","link_prog.html");
$proglist = listProgram($page, 5);
$tpl->set_block("link_prog", "link_progblob", "pb");
$tpl->set_var("mb");
while(!$proglist->EOF) {
$tpl->set_var("progid", $proglist->fields['PROGRAM_ID']);
$tpl->set_var("issue", $proglist->fields['PROGRAM_ISSUE']);
$tpl->set_var("intro", substr($proglist->fields['PROGRAM_INTRODUCTION'],0,64));
$proglist->moveNext();
$tpl->parse("pb", "link_progblob", true);
}
$tpl->parse("link_area","link_prog",true);
}
有了以上的基础,就可以在php页面里面调用 setProgBlock($tpl) 来设置侧边栏了
假如侧边栏有几层(友情链接+最新留言+。。。),一样调用
其实这里还有个问题懒得改,就是把html里面的侧边栏区域{link_area}也作为变量输入setXxxBlock,这样才比较好看。
注意:每个php函数里面,
$tpl->set_file("link_prog","link_prog.html");处变量名需要设置为不同,否则会出错。
于是就搞定了
有了很nnd干净的侧边栏html页面和php页面,最最重要,侧边栏修改时不再需要每个页面改了。