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

来源:www.13sc.com | 游客上传 | 290 次浏览 | 0 条评论

搜索: 跨站调用 URL为空 

如果你在使用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其它不变即可。

标签: 跨站调用 URL为空

最热-phpcms

phpcms v9添加热门搜索关键词的方法

PHPCMS V9任意短消息阅读BUG分析与解决方法

PHPcms建站系统-个人建站必不可少的工具

phpcms v9站内外搜索代码分享

Phpcms V9 调用全站最新文章的方法

PHPCMS2008 SP4 心情排行指数不显示的解决办法

PHPCMS 2008 SP3 模板语法规则整理

mysql更改密码后 配置文件应该改的东西 PHPCMS2008&V9

关于phpcms2008 内部递增标变量 $n 使用时的注意事项

PHPCMS V9采集地址中有相对路径的问题及解决方法

FTP二进制形式上传phpcms程序

phpcms2008下的自定义url规则教程

Copyright 2009-2013 13sc.com All Rights Reserved.