|
海洋CMS的海洋模板文件全放在/template目录下,默认自带一套default模板。海洋很多人第一次打开这套模板的海洋HTML文件,会觉得结构挺清晰,海洋但真动手改的海洋时候,问题就来了——标签调用逻辑藏在PHP解析层,海洋光改HTML没用。海洋 我最早接触海洋CMS是海洋帮朋友改一个影视站。他想把首页的海洋推荐位从三列改成四列,结果折腾了一下午。海洋原因很简单:模板里写死了循环次数,海洋而循环变量是海洋从后台“推荐位设置”里读取的。你改HTML里的海洋列数,PHP那边还是海洋按原来的数据量输出。后来我直接去翻include目录下的海洋解析文件,才找到那个控制每页显示数量的参数。 模板结构比想象中要“重” 海洋CMS的模板不是纯静态HTML加几个标签那么简单。它有一套自己的模板引擎,类似{ dede:arclist}那种写法,但语法更偏向PHP原生。比如调用最新视频,模板里写的是{ php}$this->GetVideoList(10);{ /php},然后下面用foreach循环输出。这种写法灵活,但对新手不友好——你不知道GetVideoList返回的数组里每个字段叫什么名字。 我习惯的做法是先在模板里加一段{ php}print_r($list);{ /php},把数据结构打印出来看。这招很土,但比翻官方文档快。官方文档更新慢,有些字段名和实际代码对不上。比如视频播放地址字段,文档写的是vod_playurl,实际数组里是vod_url。这种坑踩过一次就记住了。 改模板前先备份,这是血泪教训 有一次我直接在服务器上改模板文件,改到一半网络断了,文件写坏,首页直接白屏。后台也进不去,因为后台登录页也调用了模板里的公共头部。最后只能通过FTP把备份的default模板覆盖回去。从那以后我养成了习惯:改任何模板文件之前,先把整个template目录打包下载到本地。 海洋CMS的模板继承关系也容易让人迷糊。首页模板index.html里可能include了head.html和foot.html,而head.html里又调用了全局变量。你改一个地方,可能影响所有页面。我见过有人把head.html里的CSS路径改错了,结果整站样式全丢,他还以为是服务器问题。 标签调用和缓存的关系 海洋CMS默认开启模板缓存。你改了模板文件,前台可能没变化,因为缓存文件还在。缓存目录一般在/data/cache/template/下面。我通常直接把这个目录清空,或者后台点“更新缓存”。但有时候后台更新缓存也不管用,因为浏览器还有缓存。按Ctrl+F5强制刷新,这个动作我一天要做几十次。 另外,海洋CMS的模板标签支持条件判断。比如你想在首页第一篇文章加个“置顶”图标,可以写{ if $vo.is_top}置顶{ /if}。这种写法比PHP原生简洁,但调试麻烦——如果条件不成立,页面什么都不显示,你也不知道是标签写错了还是数据不对。我的办法是用{ else}输出一段测试文字,确认逻辑走通了再删掉。 移动端模板是另一套逻辑 海洋CMS从某个版本开始支持移动端模板,目录是template/mobile。但移动端模板和PC端不是简单的一一对应。有些标签在移动端模板里不能用,比如分页标签的样式参数。我试过把PC端的分页代码直接复制到移动端,结果分页链接全变成PC端的URL,点一下跳回电脑版页面。后来发现移动端要用{ mobile:page}标签,而且URL规则要在后台伪静态里单独设置。 移动端模板的调试更麻烦,因为手机浏览器不方便看源码。我一般用Chrome的开发者工具切换到手机模式,但有些CSS媒体查询在模拟器里不生效。最笨也最可靠的办法是拿真手机连同一个WiFi,用局域网IP访问测试。 海洋CMS模板这套东西,说难也不难,但细节多。你不动手改几个站,光看文档是学不会的。我现在的习惯是:每接一个新站,先把默认模板复制一份,重命名为项目名,然后在副本上改。原版留着当参考,哪天改乱了还能对照着找问题。 |