CMSware常见模版错误
导航:返回上一页
概述:常见模版错误主要有三类:模版语法错误、内容调用错误和新旧版语法混用。模版语法错误一般在刷新页面时任务执行窗口会有相关报错,内容调用错误则要认真分析前台输出页面的报错代码来查找问题,一般而言此时我们的模版并没有写错或者说没有语法错误,但是可能在模版中调用了不存在的内容等,比如调用了不存在的结点或内容模型。
虽然新版思维(CMSware)兼容旧版语法(思维(CMSware)2.1及其以前的模版语法),但如果混用容易导致各种错误。
第一类:无法生成、刷新页面等模版语法错误[ ]
常见症状
- 对模版进行修改后,更新页面后,没有变化;
- 改变发布位置,点击更新后没有生成页面。
此时一般是您的模版语法有错误,请按照以下说明参照用户手册查找解决问题。
查找问题代码方法:
在信息查看菜单上,选择查看状态窗口,右下角会出现一个框,比如显示结果为
> Updating index.htm at 品位龙江 failed. 2005-9-4 23:32:7
该提示表明该内容页所使用的模版可能有错误,此时,我们选择查看任务执行窗口,左下角会出现一个框,再次刷新页面,如果模版有错,会在左下角框里显示出错信息和错误行数,按提示打开那个模版编译中间文件(在 系统安装目录/sysdata/templates_c 下)来看看,找到出错行,对照模版看是哪行,看看是不是语法有问题,或是语句匹配问题之类
比如任务执行窗口显示如下信息:
parse error: parse error in w:\www\cmsware\sysdata\templates_c\%%c_^@templates@pale_blue_html@include@category_index.htm on line 41
以上文字中重点标识部分为目录名或者文件名。
查找问题时,进入目录w:\www\cmsware\sysdata\templates_c\,找到并用文本编辑器打开文件%%c_^@templates@pale_blue_html@include@category_index.htm,看第41行的具体内容并针对用户手册认真的一点点找问题所在。
然后根据刚才所查找到的原因对模版category_index.htm(在pale_blue_html/include/)作相应修改
第二类:内容调用错误[ ]
- 症状1:制作模版时从手册直接粘贴代码到所作模版的相应部分但是图片、内容列表等却调用不出来,并且查看状态窗口、任务执行窗口也没有报错
- 可能原因:粘贴代码的结点ID(NodeID)与当前栏目的结点ID不一致;原代码中调用了特定排序权重的内容以及精华、置顶等特定内容而您的当前结点内又没有这样的内容
- 症状2:页面完全无法生成,并且查看状态窗口、任务执行窗口也没有报错
- 可能原因:模版代码中可能有多余的loop循环、where等;闭合标签:比如<loop ......>....</loop>、<if...>......</if>等没有闭合,即缺少了后面的部分;非闭合标签没有使用 "/"作为结束符
- 症状3:页面完全无法生成,查看状态窗口、任务执行窗口有报错,但是对照手册时却找不到什么错误
- 可能原因:可能您的模版在同一个<cms />标签内即使用了 2.5版以前的旧语法也使用了2.5版开始启用的新语法,此时会出错;模版标签中单引号、双引号混合使用也会出错,新语法要求模版标签必须用双引号引起来.
- 症状4:我在文章上后面都加上有相关问题,一般是显示10条。今天看了一下生成了文件,吃惊啊,所有的相关文章的内容在原文章中全有了。 一个文件,平白大了几倍。 应该只是一个链接的啊,为什么内容也有了?
- 可能原因:模版中包含了<debug name="List" />这个用来调试变量输出的标签
- 症状5:前台页面生成不完整,有些内容能调用出来,有些部分显示的是如下报错信息:
- 报错信息1:
SYS info: MySQL Query Error Time: 2005-11-10 9:24am Script: /cmsware/admin/admin_task.php SQL: SELECT i2.NodeID,i2.ContentID,i2.State,i2.URL,i.IndexID,i.PublishDate,i.Type,i.Sort,i.Pink,co.*, c.* FROM cmsware_content_index i,cmsware_content_index i2 left JOIN cmsware_publish_ c ON c.IndexID=i2.IndexID left JOIN cmsware_plugin_base_count co ON co.IndexID=i2.IndexID where (UNIX_TIMESTAMP() >= i.PublishDate) AND i.parentIndexID=i2.IndexID AND i2.State=1 AND i.State=1 AND i2.Type!=3 AND i.NodeID='' AND c.Photo='' ORDER BY i.Top DESC,i.Sort DESC,i.PublishDate DESC Limit 0,10 Error: Table 'netzhu.cmsware_publish_' doesn't exist Errno.: 1146 -- Backtrace -- /pub/www/vhost/netzhu/cmsware/include/lib/kDB/lib/mysql.php(66): require /pub/www/vhost/netzhu/cmsware/include/lib/kDB/lib/mysql.php(57): mysql.halt /pub/www/vhost/netzhu/cmsware/include/lib/kDB/lib/mysql.php(171): mysql.query /pub/www/vhost/netzhu/cmsware/include/lib/kDB/driver/db.php(23): mysql.execute /pub/www/vhost/netzhu/cmsware/include/lib/kDB/kDB.php(49): db.execute /pub/www/vhost/netzhu/cmsware/include/cms.func.php(534): kdb.execute /pub/www/vhost/netzhu/cmsware/sysdata/templates_c/%%c_^@templates@default@index.html(183): cms_list /pub/www/vhost/netzhu/cmsware/include/lib/kTemplate/kTemplate.class.php(240): include /pub/www/vhost/netzhu/cmsware/include/lib/kTemplate/kTemplate.class.php(284): ktemplate._fetch /pub/www/vhost/netzhu/cmsware/include/admin/publishAdmin.class.php(1076): ktemplate.fetch /pub/www/vhost/netzhu/cmsware/admin/admin_task.php(230): publishadmin.refreshindex
- 报错信息2:
SYS info: MySQL Query Error Time: 2005-11-10 10:08am Script: SQL: SELECT i.NodeID,i.ContentID,i.State,i.URL,i.IndexID,i.PublishDate,i.Type,i.Sort,i.Pink, c.* ,co.Hits_Total, co.Hits_Today, co.Hits_Week, co.Hits_Month, co.Hits_Date, co.CommentNum From cmsware_plugin_base_count co, cmsware_content_index i,cmsware_publish_999 c where co.IndexID=i.IndexID AND c.IndexID=i.IndexID AND co.TableID=999 ORDER BY co.CommentNum DESC Limit 0,10 Error: Table 'cmsware.cmsware_publish_999' doesn't exist Errno.: 1146 -- Backtrace -- W:\www\CMSware\include\lib\kDB\lib\mysql.php(66): require W:\www\CMSware\include\lib\kDB\lib\mysql.php(57): mysql.halt W:\www\CMSware\include\lib\kDB\lib\mysql.php(171): mysql.query W:\www\CMSware\include\lib\kDB\driver\db.php(23): mysql.execute W:\www\CMSware\include\lib\kDB\kDB.php(49): db.execute W:\www\CMSware\include\cms.func.php(534): kdb.execute W:\www\CMSware\sysdata\templates_c\%%c_^@templates@org.cmsware.demo@news@index.html(30): cms_list W:\www\CMSware\include\lib\kTemplate\kTemplate.class.php(240): include W:\www\CMSware\include\lib\kTemplate\kTemplate.class.php(280): ktemplate._fetch W:\www\CMSware\include\admin\publishAdmin.class.php(1076): ktemplate.fetch W:\www\CMSware\admin\admin_task.php(230): publishadmin.refreshindex
问题分析与查找:上述两则报错信息都很长并且看似没有什么共性,我们认真看两段报错信息,重点看我加了标记色的部分。“Error”是出错原因,这两段代码都报Table 'xx' doesn't exist,表明都是因为调用了不存在的内容(数据表)."templates_c/%%c_^@templates@default@index.html(183): cms_list"和“templates_c\%%c_^@templates@org.cmsware.demo@news@index.html(30): cms_list”这两段报错代码结构一样,“templates@default@index.htm(183): cms_lis”表明报错模版文件位于templates/default /index.html,第183行报错,报错处使用的系统调用函数为 CMS_LIST();“templates@org.cmsware.demo@news@index.html(30): cms_list”表明报错模版文件位于templates/org.cmsware.demo/news/index.html,第30行报错,报错处使用的系统调用函数为CMS_LIST().知道了出错位置和大体出错原因,下一步就该查看相应的模版的源文件解决问题了。
第三类:新旧版语法混用[ ]
典型问题示例1:在我的模版里想要调用一个结点下所有文章标题!用了以下代码,但是无法生成大家帮忙给 看看!部分模版代码如下:
<CMS::NODELIST:List Type="sub" NodeID="123" Ignore="" > <loop $List key=key var=var > <a href="[$var.NodeURL]"> [$var.NodeName] </a> | </loop> </td> </tr> <tr> <td height="19" colspan="2"> <p align="left"><font size="2">长空无际</font></td> </tr> <tr> <th width="190" rowspan="2" valign="top"> <img border="0" src="images/cr3_10.gif" width="186" height="27"><img border="0" src="images/24ta_1.gif" width="185" height="293"></th> <td width="600" valign="top" height="151" background="images/snow.gif"> <CMS action="LIST" return="List" NodeID="all-216" Num="10" /> <LOOP name="List" var="var" key="key"> - [<a href="[$var.NodeURL]" target="_blank" > [$var.NodeName] </a>] <a href="[$var.URL]" target="_blank" title="[$var.Title]" >[@CsubStr($var.Title,0,16)] </a> <br> </LOOP>
问题分析:看您这个模版中,第一段cms语法是2.1格式的,就是下面这段
<CMS::NODELIST:List Type="sub" NodeID="123" Ignore="" > <loop $List key=key var=var > <a href="[$var.NodeURL]"> [$var.NodeName] </a> | </loop>
2.1格式的语法必须有</cms>, 而下面几段都是2.5的语法,2.5的不需要
典型问题示例2,模版中的非闭合标签没有添加结束符:我的内容列表调用不出来,也没有任何模版报错,代码如下
<CMS action="LIST" return="List" NodeID="all-216" Num="10"> <LOOP name="List" var="var" key="key"> <a href="[$var.URL]" target="_blank" title="[$var.Title]" >[@CsubStr($var.Title,0,16)] </a> <br> </LOOP>
问题分析:模版中的非闭合标签<CMS...>没有添加结束符<CMS.../>,第一行正确的格式应该为
<CMS action="LIST" return="List" NodeID="all-216" Num="10" />
常见问题3:闭合标签 比如<loop ......>....</loop>、<if...>......</if>等没有闭合,即缺少了后面的部分