国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > PhpCMS > 正文

phpcms v9 跨站點 多站點推薦位調用

2024-07-09 22:53:06
字體:
來源:轉載
供稿:網友
最近在做主站和子站的調用數據時遇問題:比如我們設置了推薦位為:首頁推薦
分別在子站1、子站2的內容中推薦一篇新聞為首頁推薦
在主站調用傳統的調用方式為:
{pc:content action="position" posid="1" order="listorder DESC" thumb="1" num="1"}
{loop $data $r}
。。。。。。
{/loop}{/pc}
我們查看緩存模版以及content_tag.class.php文件下的position函數 它判斷了一個siteid的變量如果為空那么就自動為主站默認1
這樣的話即使你這樣調用
{pc:content action="position" posid="1" siteid="$siteid" order="listorder DESC" thumb="1" num="1"}
{loop $data $r}
。。。。。。
{/loop}{/pc}
那么也只能調用當前的站點,做不到全站調用
解決方案:
打開擴展函數庫:寫入函數
/*跨站點獲取推薦位信息列表
$posid 推薦位id
$num 調用條數
$thumb 1為圖片 0 為文字
$siteid 站點id
$catid 為欄目ID
*/
function pos_oversite($posid,$num=6,$thumb=1,$order="listorder desc",$siteid="",$catid="")
{
$sql="";
$array = array();
$pos=intval($posid);
$db=pc_base::load_model('content_model');
$db->table_name='wecheposition_data';
if(!empty($catid)) $sql = "`catid` = '$catid' AND ";
if($thumb) $sql.= "`thumb` = '$thumb' AND ";
if(!empty($siteid)) $sql.= "`posid` = '".$posid."' AND `siteid` = '".$siteid."'";
else $sql.= "`posid` = '$posid'";
$news=$db->select($sql,'*',$num,$order);
if(!empty($news)) {
foreach($news as $info)
{
$key = $info['catid'].'-'.$info['id'];
$array[$key] = string2array($info['data']);
$arr= getidurl($info['catid'],$info['id'],$info['modelid']);
$array[$key]['url']=$arr['url'];
$array[$key]['catname']=$arr['catname'];
$array[$key]['caturl']=$arr['caturl'];
$array[$key]['id'] = $info['id'];
$array[$key]['catid'] = $info['catid'];
}
}
return $array;
}
/*獲取單條信息新聞信息
$id 新聞ID
$modelid 模型id
$catid 為欄目ID
*/
function getidurl($catid,$id,$modelid)
{
$cid=intval($catid);
$db=pc_base::load_model('content_model');
$db->table_name='wechemodel';
$r=$db->get_one("`modelid`={$modelid}");
$db->table_name="weche".$r['tablename'];
$n=$db->get_one("`id`={$id}");
$array=array();
$array['url']=$n['url'];
$array['title']=$n['title'];
$array['description']=$n['title'];
$array['updatetime']=$n['updatetime'];
$array['inputtime']=$n['inputtime'];
$db->table_name="wechecategory";
$c=$db->get_one("`catid`={$catid}");
$array['catname']=$c['catname'];
$sid=$c['siteid'];
$db->table_name='wechesite';
$s=$db->get_one("`siteid`={$sid}");
if(stripos($c['catname'],"http://")) $array['caturl']=$c['url'];
else {
$siteurl=$s['domain'];
$array['caturl']=$siteurl.$c['url'];
}
return $array;
}

有些同學會問:系統不是有一個go()函數可以獲取超鏈接地址嗎
確實,但是那個函數存在的情況是單一性站點才能所有
多站點調用的時候會輸出url為空
另外這個getidurl($catid,$id,$modelid)函數其實是很有用處的
譬如我們經常調用一些新聞帶欄目名稱的

前臺調用代碼講解:

<?php $data=pos_oversite(26,17,0);?> //這一種是調用推薦位為26 調用條數為17
{loop $data $r}
{if $n==9}</ul>
<div class="clearfix" style="margin-top:10px;"></div>
<ul class="i_list">{/if}
<li><span>[<a href="{$r['caturl']}" title="{$r[catname]}">{$r[catname]}</a>]</span><a href="{$r['url']}" title="{$r[title]}">{str_cut($r[title],30,'')}</a></li>
{/loop}
</ul>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朝阳县| 武邑县| 时尚| 安阳县| 中西区| 民勤县| 来宾市| 砀山县| 宁武县| 淄博市| 河西区| 栾城县| 浏阳市| 铜川市| 永清县| 潍坊市| 陆河县| 晋江市| 兰考县| 翁源县| 玉田县| 宣武区| 廉江市| 子长县| 儋州市| 兴业县| 舞钢市| 伊金霍洛旗| 博白县| 兰州市| 青浦区| 缙云县| 澎湖县| 西丰县| 浦城县| 保德县| 浦北县| 镇安县| 乐平市| 淮北市| 都江堰市|