• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 酸菜鱼 | 发布时间: 2025-7-24 16:14| 查看数: 57| 评论数: 0|帖子模式

    如题,如果你在使用PHPCMS V9的时候需要在不同的站点之间调用推荐位可能会出现链接的URL为空的情况,具体解决办法如下,该办法适合20130522 之前版本 
    一、在自定义函数中加入下面的函数: 

    代码如下:
    /** 
    * 获取内容地址 
    * @param $catid 栏目ID 
    * @param $id 文章ID 
    * @param $allurl 是否以绝对路径返回 
    */ 
    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)函数中 

    代码如下:
    /** 
    * 推荐位 
    * @param $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其它不变即可。

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表