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

这篇具有很好参考价值的文章主要介绍了帝国CMS专题调用标签eshowzt不支持标签模板使用程序代码的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、问题:

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

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

复制代码
代码如下:
$listtemp='
'.ReturnZtAddField('[!--classid--]','ftitle').'
';

专题调用标签写好后刷新首页,发现勾选【使用程序代码】无效,就是说使用【专题调用标签】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];//新增项,判断标签模板是否使用程序代码

如下图所示:

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

步骤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);

如下图所示:

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相对来说不会影响其他程序的运行。文章来源地址https://www.toymoban.com/news/detail-419145.html

到了这里,关于帝国CMS专题调用标签eshowzt不支持标签模板使用程序代码的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 帝国cms让listshowclass标签也可以调用栏目别名

    通过修改t_functions.php文件的以下几个地方 循环子栏目导航标签 function sys_ForShowSonClass($classid,$tempid,$show=0,$cline=0){ ... $sql=$empire-query(\\\"select classid,classname,bname,islast,sonclass,tbname,intro,classimg from {$dbtbpre}enewsclass where \\\".$where.\\\" and showclass=0 order by myorder,classid\\\".$limit);(这里加了bname 目的调

    2024年02月03日
    浏览(27)
  • 帝国CMS如何通过灵动标签调用日期时间的方法

    灵动标签调用时间默认的代码不行。用以下代码即可: =date(\\\"Y-m-d H:i:s\\\",$bqr[newstime])? 这样就可以了

    2024年02月03日
    浏览(27)
  • 帝国CMS灵动标签调用多表多模型调用文章的方法

    灵动标签调用多表多模型调用文章 1、调用多模型的最新文章 [e:loop={\\\'select * from ( select id,classid,titleurl,filename,title,newstime,titlepic from phome_ecms_movie where newstime union select id,classid,titleurl,filename,title,newstime,titlepic from phome_ecms_news where newstime union select id,classid,titleurl,filename,title,newsti

    2024年02月03日
    浏览(40)
  • 帝国CMS首页通过loop标签调用TAGS的实现代码

    帝国CMS首页无法调用TAGS,但是本人整理了一段可以使用的代码分享给大家。 \\\' target=\\\'_blank\\\' rel=\\\'nofollow\\\'\\\' alt=\\\'=$bqr[\\\'title\\\']?\\\' / =$bqr[\\\'smalltext\\\']?...\\\' title=\\\'更多\\\' target=\\\'_blank\\\'[更多] =date(\\\'Y-m-d\\\',$bqr[newstime])? 类目:=$bqsr[classname]? :=$alltag? ?php }else{? =$bqr[\\\'smalltext\\\']?...\\\' title=\\\'更多\\\' targe

    2024年02月03日
    浏览(31)
  • 帝国cms wap模板中调用栏目分类的实现代码

    我们在帝国wap模板中调用栏目导航的方法,代码如下: =DoWapClearHtml($rd[classname])??php }? 到这里就完成了,大家根据需要调用即可。

    2024年02月03日
    浏览(27)
  • 帝国CMS模板调用只读取当天发布的信息的代码

    核心 =$xinxi_row[title]? }? 这样就可以了,一般来说网站每天都要更新才可以得到搜索引擎的亲睐。

    2024年02月03日
    浏览(37)
  • 帝国CMS灵动标签如何调用$ecms_hashur[‘ehref‘]函数

    我们在二次开发时,后台调用链接就需要加上帝国CMS的$ecms_hashur[\\\'ehref\\\']函数,这是帝国CMS后台的安全函数,防止外部直接访问后台页面,直接强制访问后台链接就会提示“非法来源”。 我的站长站分享下制作自定义php页面,用帝国CMS灵动标签如何调用$ecms_hashur[\\\'ehref\\\']函数方法

    2024年02月09日
    浏览(66)
  • 帝国cms自定义列表模板里调用当前列表ID的方法

    我们在使用帝国cms自定义列表做模板时,需要获取当前自定义列表对应的ID,在自定义列表模板里面调用($GLOBALS[\\\'navclassid\\\'])获取不到当前自定义列表的id的 需要改下程序 eclassfunctions.php 搜索 //生成信息列表 $GLOBALS[\\\'navclassid\\\']=$classid; 改成 $GLOBALS[\\\'navclassid\\\']=$enews==4?$userlistr[\\\'l

    2024年02月03日
    浏览(33)
  • 帝国CMS灵动标签调用昨天、今天、某天、某天以前、某天以后发布的文章

    昨天发布的10篇文章 调用2020-01-30的10篇文章 [e:loop={\\\'news\\\',10,18,0,\\\'newstime=\\\'.to_time(\\\'2020-01-30 00:00:01\\\').\\\' and newstime=$bqr[title]? [/e:loop] 调用除今天以前的10篇文章 [e:loop={0,10,3,0,\\\'newstime=$bqno?、=$bqr[\\\'title\\\']?=date(\\\'Y-m-d\\\',$bqr[newstime])? [/e:loop] 调用2020-01-30以前的10篇文章 [e:loop={0,10,3,0,\\\'newstime=$bq

    2024年02月03日
    浏览(31)
  • 帝国CMS灵动标签调用文章第一张图片作为缩略图的实现代码

    今天给大家整理一下帝国CMS 灵动标签调用特俗效果是的一些实例代码,希望能给大家获得帮助。 教程开始: 灵动标签实例代码: \\\".$bqr[\\\'title\\\'].\\\" \\\".date(\\\'Y-m-d\\\',$bqr[newstime]).\\\" \\\".esub($bqr[smalltext],90).\\\" \\\";}?\\\" title=\\\" [/e:loop] 这篇文章就介绍到这了。

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包