找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 93|回复: 0

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

[复制链接]

该用户从未签到

发表于 2019-3-24 16:11:00 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
PHPCMS V9跨站调用推荐位出现URL连接为空问题的解决方法
如题,如果你在使用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其它不变即可。
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-10-5 13:20

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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