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

技术教程 2026-01-09 15:36:04 浏览
如题,如果你在使用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其它不变即可。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐