焦点

pbootcms模板

时间:2010-12-5 17:23:32  作者:娱乐   来源:焦点  查看:  评论:0
内容摘要:pbootcms模板的目录结构其实就三块:/template/放前端文件,/apps/管后台逻辑,/config/存数据库配置。第一次拿到源码包,我翻了三遍没找到模板文件,后来才发现默认模板藏在/te

pbootcms模板的模板目录结构其实就三块:/template/放前端文件,/apps/管后台逻辑,模板/config/存数据库配置。模板第一次拿到源码包,模板我翻了三遍没找到模板文件,模板后来才发现默认模板藏在/template/default/下面,模板改个名就能当自定义模板用。模板

这套CMS的模板模板引擎不复杂,标签以{ pboot:}开头,模板跟dedecms那种{ dede:}完全两码事。模板比如调文章列表,模板写法是模板{ pboot:list scode=1 num=10},循环体里用[list:title]取标题。模板我第一次写的模板时候把scode理解成分类ID,结果调出来全是模板空白——实际上scode是栏目标识,数字ID得用scode=*配合id=参数。这种坑不踩一次根本记不住。

模板继承机制

pbootcms支持模板继承,但跟ThinkPHP那套extend不一样。它用{ include file="head.html"}直接嵌文件,没有block占位符。这意味着改导航栏得去每个模板文件里手动替换,或者把公共部分抽成独立文件。我见过一个站,头部文件被复制了十七份,改个logo路径要动十七个地方。后来我习惯把head.html、foot.html、sidebar.html拆出来,用include统一调用,维护量直接砍半。

标签缓存是个双刃剑。后台清缓存按钮点一下,/runtime/目录下的编译文件全删。但有时候改了模板没生效,八成是缓存没清干净。我现在的习惯是改完模板先手动删/runtime/cache/,再刷新页面。另外config/config.php里有个'tpl_cache' => true,调试阶段建议改成false,省得来回清缓存。

标签调用的细节

调单页内容用{ pboot:content id=1},里面[content:content]输出正文。注意这个id是单页的编号,不是栏目的。有次我帮人排查为什么单页调不出来,折腾半小时发现他把栏目ID填进去了。pbootcms的标签参数命名不太统一,list用scode,content用id,nav又用scode,记混很正常。

导航标签{ pboot:nav}默认只输出一级栏目。要二级导航得加parent=0再嵌套一层{ pboot:2nav}。我见过有人直接改/apps/home/controller/IndexController.php里的getNav方法,把递归深度写死成三级。能跑,但升级CMS时容易被覆盖。更稳妥的做法是复制一份控制器到/apps/下自定义目录,不过这就牵扯到路由重写了。

自定义模板的实操建议

别在默认模板上直接改。复制一份/template/default/重命名为/template/mytheme/,然后后台“全局配置”里把模板目录改成mytheme。这样升级时默认模板被覆盖也不影响你的站。CSS和JS文件建议放/static/下,模板里用{ pboot:sitetplpath}拼路径,换域名不用改代码。

移动端适配pbootcms有个取巧办法:建两套模板目录,mytheme_pc和mytheme_mobile,然后在config/config.php里根据User-Agent判断加载哪套。比响应式省事,但维护两套HTML终究麻烦。我现在倾向用一套模板加媒体查询,pbootcms的标签输出的是纯HTML,加class控制显示隐藏完全可行。

模板里直接写PHP代码?不行。pbootcms的模板引擎会过滤标签。需要复杂逻辑就写自定义标签,在/apps/home/controller/下建个MyTagController.php,继承BaseController,然后在模板里用{ pboot:mytag}调用。文档里没细说这块,但源码里ParserController.php的parseTag方法能看出扩展点在哪。

最后说个真事:有次客户网站突然白屏,日志显示模板编译失败。查了半天发现是模板里写了{ pboot:if([list:i]==1)},但[list:i]在pbootcms里压根不存在,正确写法是[list:i]换成[list:index]。标签手册得常备手边,别凭记忆写。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap