文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHPCMS V9跨站调用推荐位出现URL连接为空问题的解决方法

2022-06-12 01:53

关注

如题,如果你在使用phpcms V9的时候需要在不同的站点之间调用推荐位可能会出现链接的URL为空的情况,具体解决办法如下,该办法适合20130522 之前版本

一、在自定义函数中加入下面的函数:


复制代码代码如下:

function go_dusion($catid,$id, $allurl = 0) {

static $category;

if(empty($category)) {

$siteids = getcache('category_content','commons');

$siteid = $siteids[$catid];

$category = getcache('category_content_'.$siteid,'commons');

}

if($siteid == '' || empty($siteid)) {

$siteids = getcache('category_content','commons');

$siteid = $siteids[$catid];

$category = getcache('category_content_'.$siteid,'commons');

}

$id = intval($id);

if(!$id || !isset($category[$catid])) return '';

$modelid = $category[$catid]['modelid'];

if(!$modelid) return '';

$db = pc_base::load_model('content_model');

$db->set_model($modelid);

$r = $db->get_one(array('id'=>$id), '`url`');

if (!empty($allurl)) {

if (strpos($r['url'], '://')===false) {

if (strpos($category[$catid]['url'], '://') === FALSE) {

$site = siteinfo($category[$catid]['siteid']);

$r['url'] = substr($site['domain'], 0, -1).$r['url'];

} else {

$r['url'] = $category[$catid]['url'].$r['url'];

}

}

}

return $r['url'];

}

第二:在content/classes/content_tag.class.php 的 public function position($data)函数中


复制代码代码如下:

public function position($data) {

$sql = '';

$array = array();

$posid = intval($data['posid']);

$order = $data['order'];

$thumb = (empty($data['thumb']) || intval($data['thumb']) == 0) ? 0 : 1;

//Du修改

if(isset($data['siteid']) && is_numeric($data['siteid'])){

$siteid = $data['siteid'];

}else{

$siteid = $GLOBALS['siteid'] ? $GLOBALS['siteid'] : 1;

}

$catid = (empty($data['catid']) || $data['catid'] == 0) ? '' : intval($data['catid']);

if($catid) {

$siteids = getcache('category_content','commons');

if(!$siteids[$catid]) return false;

$siteid = $siteids[$catid];

$this->category = getcache('category_content_'.$siteid,'commons');

}

if($catid && $this->category[$catid]['child']) {

$catids_str = $this->category[$catid]['arrchildid'];

$pos = strpos($catids_str,',')+1;

$catids_str = substr($catids_str, $pos);

$sql = "`catid` IN ($catids_str) AND ";

} elseif($catid && !$this->category[$catid]['child']) {

$sql = "`catid` = '$catid' AND ";

}

if($thumb) $sql .= "`thumb` = '1' AND ";

if(isset($data['where'])) $sql .= $data['where'].' AND ';

if(isset($data['expiration']) && $data['expiration']==1) $sql .= '(`expiration` >= \''.SYS_TIME.'\' OR `expiration` = \'0\' ) AND ';

$sql .= "`posid` = '$posid' AND `siteid` = '".$siteid."'";

$pos_arr = $this->position->select($sql, '*', $data['limit'],$order);

if(!empty($pos_arr)) {

foreach ($pos_arr as $info) {

$key = $info['catid'].'-'.$info['id'];

$array[$key] = string2array($info['data']);

$array[$key]['url'] = go_dusion($info['catid'],$info['id']);

$array[$key]['id'] = $info['id'];

$array[$key]['catid'] = $info['catid'];

$array[$key]['listorder'] = $info['listorder'];

}

}

return $array;

}

即可,注意看两处红色区域,11-16行是为了获取siteID 可以根据情况不修改也可以

42行,即将原来 的go 改为 go_dusion其它不变即可。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯