CMS企业模板|CMS模板|CMS网站定制|CMS模板下载

站内搜索 售前咨询 售后服务 建站帮助 微博 博客 在线客服
  • 网站模板
  • 定制开发
  • 案例展示
  • 最新动态
  • 关于我们
  • 联系我们
  • 问答社区

CMSYOU互助问答社区

诚信合作, 高质专业!
CMSYOU互助问答社区
使用新浪微博账号登录 登录 注册
  • 搜索
  • 问题
  • 话题
  • 用户
发起

Phpcms V9升级到V9.6.0 正式版,调用广告出现错误eval()错误

Phpcms V9 升级 广告 调用
我是参照https://www.cmsyou.com/support/88.html教程调用广告位的,使用了eval("\$narry =$r[setting];");把字符串转成数组。结果在升级到V9.6.0 正式版,新增或者编辑的广告位在前台出现错误提示:
Parse error: syntax error, unexpected '{' in caches\caches_template\cmsyou\content\footer.php(6) : eval()'d code on line 1

不能再用eval()调用了,求救!
2016-01-05 14:03 0 条评论 分享

站外

邮件

要评论问题请先登录或注册

3 个回复

CMSYOU - CMS企业网站定制专家

赞同来自:

我们可以在论坛看到PHPCMS V9.6.0 正式版更新说明:
string2array函数改成json处理,为了保持兼容函数名称没做变动

再检查phpcms/libs/functions/global.func.php中的函数:
在288、309行的确出现了string2array、array2string函数,具体升级及这两个函数介绍见https://www.cmsyou.com/blog/153.html。

并且也改变了广告数据存取到数据库的方式:
在862行:
function show_ad($siteid, $id) {
    $siteid = intval($siteid);
    $id = intval($id);
    if(!$id || !$siteid) return false;
    $p = pc_base::load_model('poster_model');
    $r = $p->get_one(array('spaceid'=>$id, 'siteid'=>$siteid), 'disabled, setting', '`id` ASC');
    if ($r['disabled']) return '';
    if ($r['setting']) {
        $c = string2array($r['setting']);
    } else {
        $r['code'] = '';
    }
    return $c['code'];
}

相当于新版Phpcms采用了新的函数string2array保存$r['setting']。

那么在前台调用的时候可以根据string2array、array2string函数这两个函数来置换。具体调用代码更新下就好:
PHPCMS V9.6.0 正式版之前版本调用的代码:
{pc:get sql="SELECT setting FROM v9_poster WHERE spaceid = 1 AND type='text' AND disabled=0 ORDER BY listorder ASC" num="10"}
<ul>
{loop $data $r}
<?php eval("\$narry =$r[setting];"); ?>
         <li><a href="{$narry[1][linkurl]}">{$narry[1][title]}</a></li>
{/loop}
</ul>
{/pc}

改为:
{pc:get sql="SELECT setting FROM v9_poster WHERE spaceid = 1 AND type='text' AND disabled=0 ORDER BY listorder ASC" num="10"}
<ul>
{loop $data $r}
<?php $narry = string2array($r[setting]); ?>
         <li><a href="{$narry[1][linkurl]}">{$narry[1][title]}</a></li>
{/loop}
</ul>
{/pc}

这样PHPCMS V9.6.0 正式版也能自定义调用广告数据了!

QQ群102932231里边奔跑的蜗牛发现这个问题,终于解决广告位自定义调用的问题!
2016-01-05 14:13 0 条评论

分享

要参与问题请先登录或注册

0

CMSYOU - CMS企业网站定制专家

赞同来自:

详细介绍具体参看文章:https://www.cmsyou.com/support/156.html
2016-01-05 14:38 0 条评论

分享

要参与问题请先登录或注册

0

CMSYOU - CMS企业网站定制专家

赞同来自:

由于程序版本更新到最新版后广告编辑或者新增的广告才会变化,于是之前保存的广告数据的代码用eval调用是不会报错的。

于是可以这样批量替换模板文件:
查找:
<?php eval("\$narry =$r[setting];"); ?>

替换为:
{php $mystr = substr($r[setting],1,1);}
{if $mystr=='a'}
{php eval("\$narry =$r[setting];");}
{else}
{php $narry = string2array($r[setting]);}
{/if}

这样做一个if判断,判断数据库里边的广告代码是array开头开始json数据{开头,避免出错。
2016-01-05 15:01 0 条评论

分享

要参与问题请先登录或注册

0

为什么被折叠?0 个回复被折叠

要回复问题请先登录或注册

相关问题

PHPCMS v9上传缩略图出现错误提示“选择的类型必须为图片类型”,怎么办? Phpcms v9更新栏目的时候出现错误“templates\default\content\index.html is not exists!”,怎么解决? Phpcms V9.6.0正式版采集功能缺少download_img_callback()函数? Apache服务器出现No input file specified错误,Phpcms网站打不开,怎么办? Phpcms网站突然出现错误:permission denied in /home/www/cms/phpcms/libs/functions/global.func.php,怎么办? 在用Phpcms做网站的时候,图片裁剪出现 Division by zero错误,怎么修改? PHPCMS V9 怎么全站调用站点名? phpcms v9 怎么调用页面描述 phpcms v9 tag页怎么调用文章内容(就像list页用moreinfo='1')?

问题状态

最新活动:2016-01-05 15:01

浏览:3352 次

关注:1 人

Copyright © 2008-2025 CMSYOU - 互助问答社区 - 粤ICP备10060801号-3   rss feed RSS Feed
欢迎加入QQ群(346494585)Phpcms V9企业模版交流 CMS定制咨询
“让我们一起来学习CMS建站吧!”