PHPCMS V9跨站調(diào)用推薦位出現(xiàn)URL連接為空問題的解決方法
發(fā)布時(shí)間:2013-06-09 17:12:31 作者:佚名
我要評論

如果你在使用PHPCMS V9的時(shí)候需要在不同的站點(diǎn)之間調(diào)用推薦位可能會(huì)出現(xiàn)鏈接的URL為空的情況,下面是具體的解決方法,有類似問題的朋友可以參考下哈
如題,如果你在使用PHPCMS V9的時(shí)候需要在不同的站點(diǎn)之間調(diào)用推薦位可能會(huì)出現(xiàn)鏈接的URL為空的情況,具體解決辦法如下,該辦法適合20130522 之前版本
一、在自定義函數(shù)中加入下面的函數(shù):
/**
* 獲取內(nèi)容地址
* @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)函數(shù)中
/**
* 推薦位
* @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;
}
即可,注意看兩處紅色區(qū)域,11-16行是為了獲取siteID 可以根據(jù)情況不修改也可以
42行,即將原來 的go 改為 go_dusion其它不變即可。
一、在自定義函數(shù)中加入下面的函數(shù):
復(fù)制代碼
代碼如下:/**
* 獲取內(nèi)容地址
* @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)函數(shù)中
復(fù)制代碼
代碼如下:/**
* 推薦位
* @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;
}
即可,注意看兩處紅色區(qū)域,11-16行是為了獲取siteID 可以根據(jù)情況不修改也可以
42行,即將原來 的go 改為 go_dusion其它不變即可。
相關(guān)文章
完美解決phpcms圖片太大撐破表格圖片自適應(yīng)圖片按比例縮小
下面小編就為大家?guī)硪黄昝澜鉀Qphpcms圖片太大撐破表格圖片自適應(yīng)圖片按比例縮小。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-18- 這篇文章主要介紹了PHPCMS v9 安全設(shè)置、防范教程,需要的朋友可以參考下2016-09-05
PHPCMS V9 全站 Sitemaps生成實(shí)現(xiàn)代碼[服務(wù)器端版]
這篇文章主要介紹了PHPCMS V9 全站 Sitemaps生成實(shí)現(xiàn)代碼[服務(wù)器端版],需要的朋友可以參考下2016-06-08phpcms內(nèi)容詳情頁只顯示日期不顯示時(shí)間的方法
這篇文章主要介紹了phpcms內(nèi)容詳情頁只顯示日期不顯示時(shí)間的方法,即格式化時(shí)間輸出的方法,需要的朋友可以參考下2015-06-19- 這篇文章主要介紹了PHPCMS制作網(wǎng)站地圖的簡單方法,本文給出了操作步驟及標(biāo)簽源碼,需要的朋友可以參考下2015-06-19
- 這篇文章主要介紹了PHPCMSV9父欄目調(diào)用子欄目的方法,本文講解了在二級(jí)欄目列表頁調(diào)用、在一級(jí)欄目列表頁調(diào)用兩種方法方式,需要的朋友可以參考下2015-06-19
PHPCMS使用date函數(shù)實(shí)現(xiàn)自動(dòng)更新頁腳年月的方法
這篇文章主要介紹了PHPCMS使用date函數(shù)實(shí)現(xiàn)自動(dòng)更新頁腳年月的方法,本文主要還是可以學(xué)習(xí)到date函數(shù)的用法了,需要的朋友可以參考下2015-06-19- 這篇文章主要介紹了phpsso忘記密碼的解決辦法,本文用PHPCMS的密碼及encrypt值替換數(shù)據(jù)表解決了這個(gè)問題,方法還是挺靠譜的,只是操作要求有點(diǎn),需要的朋友可以參考下2015-06-19
- 這篇文章主要介紹了phpcms 退出無法同步通知discuz問題的解決方法,需要的朋友可以參考下2014-12-15
phpcms v9列表頁如何調(diào)用子欄目如首頁>產(chǎn)品中心>產(chǎn)品類型a
phpcms v9列表頁如何調(diào)用子欄目如:首頁>產(chǎn)品中心>產(chǎn)品類型a>產(chǎn)品類型a11,在列表頁產(chǎn)品類型a中,包括產(chǎn)品類型a1、產(chǎn)品類型a2、產(chǎn)品類型a32014-09-24