您当前的位置:首页 > 电脑百科 > 程序开发 > 开源程序 > 帝国cms

帝国CMS专题调用标签eshowzt不支持标签模板使用程序代码的解决方法

时间:2022-03-16 13:35:34  来源:帝国CMS  作者:

本文讲述了帝国CMS专题调用标签eshowzt不支持标签模板使用程序代码的解决方法。涉及针对帝国CMS源码的修改。分享给大家供大家参考,具体如下:

一、问题:

在项目开发中需要在首页调用专题,且专题增加了“专题自定义字段”:副标题(ftitle),需要在栏目名调用出比较简短的副标题。

使用【专题调用标签】eshowzt并设置对应的标签模板,在标签模板的list.var部分勾选【使用程序代码】,编写代码如下:
 

复制代码 代码如下: $listtemp='
<li><a href="[!--classurl--]">'.ReturnZtAddField('[!--classid--]','ftitle').'</a></li>
';

 

专题调用标签写好后刷新首页,发现勾选【使用程序代码】无效,就是说使用【专题调用标签】eshowzt的时候list.var部分无法使用程序代码。

二、分析:

查看帝国CMS源码,找到专题调用标签eshowzt对应的函数:sys_ShowZtData(位于e/class/t_functions.php约1860行)

分析源码找到如下代码:
 

复制代码 代码如下: //取得模板
$tr=sys_ReturnBqTemp($tempid);

 

此处获取模板ID号对应的模板相关变量,包括:模板名(tempname),页面模板内容(temptext)、列表内容模板(list.var)(listvar)以及是否使用程序代码(docode)等。

注意:此处的关键就在于是否使用程序代码(docode)字段!

再找到
 

复制代码 代码如下: //替换列表变量
$repvar=ReplaceShowClassVars($no,$listvar,$r,$num,1,$subnews);

 

分析函数ReplaceShowClassVars可以发现该函数并未接受与处理【使用程序代码】字段docode,至此就明白了为什么【专题调用标签】eshowzt在标签模板勾选【使用程序代码】的情况下并未作出代码解析的原因!

三、解决方法:

步骤1. 新增【使用程序代码】字段,在e/class/t_functions.php页面下找到函数function sys_ShowZtData,并在“取得模板”部分添加$docode字段:
 

复制代码 代码如下: //取得模板
$tr=sys_ReturnBqTemp($tempid);
$docode=$tr[docode];//新增项,判断标签模板是否使用程序代码

 

如下图所示:

帝国CMS,专题调用标签,eshowzt,不支持,标签模板,使用程序代码,解

该步骤可获取是否使用程序代码的标志信息。

步骤2. 还是在步骤1中e/class/t_functions.php页面的函数function sys_ShowZtData中,修改“替换列表变量”部分为自定义函数user_ReplaceShowClassVars,代码如下:
 

复制代码 代码如下: //替换列表变量
//$repvar=ReplaceShowClassVars($no,$listvar,$r,$num,1,$subnews);
$repvar=user_ReplaceShowClassVars($no,$listvar,$r,$num,1,$subnews,$docode);

 

如下图所示:

帝国CMS,专题调用标签,eshowzt,不支持,标签模板,使用程序代码,解

PS:仔细对比就能看出,此处的自定义函数比原先的函数多了一个针对$docode的接收处理。

步骤3. 在e/class/t_functions.php页面底部添加自定义函数user_ReplaceShowClassVars:

具体代码如下:
 

复制代码 代码如下: ////**************自定义替换栏目导航标签********************//
function user_ReplaceShowClassVars($no,$listtemp,$r,$num,$ecms=0,$subnews=0,$docode){
global $public_r,$class_r;
//栏目链接
if($ecms==1)
{
$classurl=sys_ReturnBqZtname($r);
$r['classname']=$r['ztname'];
$r['classid']=$r['ztid'];
$r['classimg']=$r['ztimg'];
}
else
{
$classurl=sys_ReturnBqClassname($r,9);
}
if($subnews)
{
$r[intro]=sub($r[intro],0,$subnews,false);
}
$listtemp=str_replace("[!--classurl--]",$classurl,$listtemp);
//栏目名称
$listtemp=str_replace("[!--classname--]",$r[classname],$listtemp);
//栏目id
$listtemp=str_replace("[!--classid--]",$r[classid],$listtemp);
//栏目图片
if(empty($r[classimg]))
{
$r[classimg]=$public_r[newsurl]."e/data/images/notimg.gif";
}
$listtemp=str_replace("[!--classimg--]",$r[classimg],$listtemp);
//栏目简介
$listtemp=str_replace("[!--intro--]",nl2br($r[intro]),$listtemp);
//记录数
$listtemp=str_replace("[!--num--]",$num,$listtemp);
//序号
$listtemp=str_replace("[!--no--]",$no,$listtemp);
//针对docode=1(执行程序代码)的情况statr
if($docode==1)
{
$listtemp=stripSlashes($listtemp);
eval($listtemp);
}
//针对docode=1(执行程序代码)的情况end
return $listtemp;
}

 

经过上述三步,问题解决!

PS:这里主要修改的代码就是针对$docode的判断与执行代码,如果将ReplaceShowClassVars函数也添加对应的$docode处理:
 

复制代码 代码如下: if($docode==1)
{
$listtemp=stripSlashes($listtemp);
eval($listtemp);
}

 

也能解决问题,但考虑到还有其他页面调用该函数的情况,因此使用自定义函数user_ReplaceShowClassVars相对来说不会影响其他程序的运行。



Tags:帝国CMS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
帝国cms怎么采集信息
帝国cms怎么采集信息?帝国cms是我们用得比较多得PHP的建站系统,在建站过程中,如果自己没有信息源,只能靠手工不断的重复copy和粘贴,这样费时费力,于是我们就要使用帝国cms自带的采...【详细内容】
2023-05-19  Search: 帝国CMS  点击:(434)  评论:(0)  加入收藏
帝国CMS的安装方法
给大家介绍一下帝国CMS的安装方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。相关推荐:《帝国cms教程》帝国CMS的安装方法1、将帝国cms源码上传至域名...【详细内容】
2023-05-19  Search: 帝国CMS  点击:(283)  评论:(0)  加入收藏
帝国cms信息归档是什么意思
帝国cms信息归档是什么意思?帝国cms信息归档的意思就是指帝国cms支持信息归档,用于将过期的信息归档到其它数据表,以减轻主数据表的负担,使系统稳定性与效率更高。帝国cms简介:《...【详细内容】
2023-04-20  Search: 帝国CMS  点击:(272)  评论:(0)  加入收藏
帝国cms设置伪静态的方法
相关推荐:《帝国cms教程》众所周知,动态页面不利于收录和排名。伪静态可以完美的解决这问题,配合百度云加速CDN,可以让动态页面有静态页面一样快的访问速度。今天开拓族给大家带...【详细内容】
2023-04-12  Search: 帝国CMS  点击:(231)  评论:(0)  加入收藏
帝国CMS安装成功后登录后台就提示错误的解决办法
有时候帝国CMS虽然安装成功了,但是登录后台就出现下面的错误提示:“Parse error: parse error, unexpected &#39;)&#39; in &hellip;/functions.php on line&hellip;或者:zend...【详细内容】
2023-03-07  Search: 帝国CMS  点击:(173)  评论:(0)  加入收藏
教你如何给帝国CMS系统添加登陆失败次数限制
如果您的浏览器没有自动跳转,请点击这里就是输入,密码,输入了很多次,错了。------------------解决办法-------------------修改e/class/config.php文件里这个&#39;loginnum&#39...【详细内容】
2023-03-07  Search: 帝国CMS  点击:(202)  评论:(0)  加入收藏
帝国cms全局站点标题调用标签
在制作帝国cms模板的时候为了有一个完整高效的帝国cms模板,我们往往会用到帝国cms全局站点标题吊阴功的标签,然而很多时候,我们队全局调用的标签还是比较陌生的,比如帝国网站名...【详细内容】
2023-03-07  Search: 帝国CMS  点击:(168)  评论:(0)  加入收藏
帝国CMS无法远程保存没有后缀图片的解决方法
帝国cms编辑器“远程保存图片”功能默认是无法远程保存没有任何后缀的图片附件的,下面精准像素教大家如何修复这个小缺陷。1.修改文件:/e/class/functions.php查找:$zz1="/\<(i...【详细内容】
2023-01-29  Search: 帝国CMS  点击:(260)  评论:(0)  加入收藏
帝国CMS点击量onclick的数值过万时,换成万为单位的方法
比如:点击量的数值过万时怎样变成 如: 10009变成1.09万找到显示点击量的地方换成如下代码,下面是内容模板使用的代码:<?=$navinfor[onclick]>=10000?($navinfor[onclick]/10000)...【详细内容】
2022-06-12  Search: 帝国CMS  点击:(392)  评论:(0)  加入收藏
帝国CMS刷新内容页提示Table '***.表前缀_ecms_news_data_' doesn't exist错误的解决方法
问题:刷新所有信息内容页面时--提示"Table &#39;*.phome_ecms_article_data_&#39; doesn&#39;t exist",进行不下去了!解答:1、原因是数据本身有问题,信息索引表phome_ecms_表名_...【详细内容】
2022-06-12  Search: 帝国CMS  点击:(473)  评论:(0)  加入收藏
▌简易百科推荐
帝国7.0伪静态Apache的Rewrite设置方法
帝国CMS7.0提供了伪静态的设置,本文就帝国7.0下伪静态Apache的Rewrite设置方法简述如下:代码如下:# 将 RewriteEngine 模式打开 RewriteEngine On #信息内容页:showinfo-&#091;!--cl...【详细内容】
2023-05-19      Tags:帝国   点击:(270)  评论:(0)  加入收藏
帝国cms怎么采集信息
帝国cms怎么采集信息?帝国cms是我们用得比较多得PHP的建站系统,在建站过程中,如果自己没有信息源,只能靠手工不断的重复copy和粘贴,这样费时费力,于是我们就要使用帝国cms自带的采...【详细内容】
2023-05-19      Tags:帝国cms   点击:(434)  评论:(0)  加入收藏
帝国CMS的安装方法
给大家介绍一下帝国CMS的安装方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。相关推荐:《帝国cms教程》帝国CMS的安装方法1、将帝国cms源码上传至域名...【详细内容】
2023-05-19      Tags:帝国CMS   点击:(283)  评论:(0)  加入收藏
帝国cms信息归档是什么意思
帝国cms信息归档是什么意思?帝国cms信息归档的意思就是指帝国cms支持信息归档,用于将过期的信息归档到其它数据表,以减轻主数据表的负担,使系统稳定性与效率更高。帝国cms简介:《...【详细内容】
2023-04-20      Tags:帝国cms   点击:(272)  评论:(0)  加入收藏
帝国cms设置伪静态的方法
相关推荐:《帝国cms教程》众所周知,动态页面不利于收录和排名。伪静态可以完美的解决这问题,配合百度云加速CDN,可以让动态页面有静态页面一样快的访问速度。今天开拓族给大家带...【详细内容】
2023-04-12      Tags:帝国cms   点击:(231)  评论:(0)  加入收藏
帝国CMS安装成功后登录后台就提示错误的解决办法
有时候帝国CMS虽然安装成功了,但是登录后台就出现下面的错误提示:“Parse error: parse error, unexpected &#39;)&#39; in &hellip;/functions.php on line&hellip;或者:zend...【详细内容】
2023-03-07    帝国CMS  Tags:帝国CMS   点击:(173)  评论:(0)  加入收藏
教你如何给帝国CMS系统添加登陆失败次数限制
如果您的浏览器没有自动跳转,请点击这里就是输入,密码,输入了很多次,错了。------------------解决办法-------------------修改e/class/config.php文件里这个&#39;loginnum&#39...【详细内容】
2023-03-07      Tags:帝国CMS   点击:(202)  评论:(0)  加入收藏
帝国cms全局站点标题调用标签
在制作帝国cms模板的时候为了有一个完整高效的帝国cms模板,我们往往会用到帝国cms全局站点标题吊阴功的标签,然而很多时候,我们队全局调用的标签还是比较陌生的,比如帝国网站名...【详细内容】
2023-03-07      Tags:帝国cms   点击:(168)  评论:(0)  加入收藏
帝国CMS无法远程保存没有后缀图片的解决方法
帝国cms编辑器“远程保存图片”功能默认是无法远程保存没有任何后缀的图片附件的,下面精准像素教大家如何修复这个小缺陷。1.修改文件:/e/class/functions.php查找:$zz1="/\<(i...【详细内容】
2023-01-29    余斗  Tags:帝国CMS   点击:(260)  评论:(0)  加入收藏
帝国CMS点击量onclick的数值过万时,换成万为单位的方法
比如:点击量的数值过万时怎样变成 如: 10009变成1.09万找到显示点击量的地方换成如下代码,下面是内容模板使用的代码:<?=$navinfor[onclick]>=10000?($navinfor[onclick]/10000)...【详细内容】
2022-06-12    帝国模板网  Tags:单位   点击:(392)  评论:(0)  加入收藏
站内最新
站内热门
站内头条