在網(wǎng)上隨便看了一下有很多這類的文章,幾乎每一種方法都有它的可用之處了,下文我整理了我覺得還不錯(cuò)的全站最新文章調(diào)用方案,大家一起參考.
修改 phpcms/modules/content/classes/content_tag.class.php 在最后面的 },上面添加以下代碼:
- public function newcontent($data){
- $num = intval($data['limit']) ? intval($data['limit']) : '20';
- // 設(shè)置排序
- switch($data['order']){
- case '1':
- $order = ' `id` ASC ';
- break;
- case '2':
- $order = ' `id` DESC ';
- break;
- case '3':
- $order = ' `inputtime` ASC ';
- break;
- case '4':
- $order = ' `inputtime` DESC ';
- break;
- case '5':
- $order = ' `updatetime` ASC ';
- break;
- case '6':
- $order = ' `updatetime` DESC ';
- break;
- default:
- $order = ' `id` DESC ';
- }
- if($data['catid']){
- $catids = explode(',', $data['catid']);
- foreach($catids as $catid){
- $catid = intval($catid);
- if(emptyempty($catid))continue;
- $this->set_modelid($catid);
- $where = $this->category[$catid]['child'] ? ' `catid` IN ('.$this->category[$catid]['arrchildid'].')' : " `catid` = $catid";
- $datas = $this->db->select($where, '*', $num, $order);
- $data[$catid]['data'] = $datas;
- // 記錄本次的文章數(shù)
- $data['num'][] = count($datas);
- $model_num++;
- }
- }else{
- $models = getcache('model', 'commons');
- foreach($models as $model){
- $this->db->set_model($model['modelid']);
- $datas = $this->db->select('', '*', $num, $order);
- $data[$model['modelid']]['data'] = $datas;
- // 記錄本次的文章數(shù)
- $data['num'][] = count($datas);
- $model_num++;
- }
- }
- if($data){
- // 獲取每個(gè)模型應(yīng)該截取的條數(shù)
- $num = ceil($num/$model_num);
- // 循環(huán)條數(shù)記錄用于找出條數(shù)不滿足的數(shù)量然后進(jìn)行平均
- $w_num = $w_num_t = '';
- foreach($data['num'] as $num_t){
- if($num_t < $num){
- $w_num += $num-$num_t;
- $w_num_t++;
- }
- }
- // 判斷是否有不滿足平均數(shù)的 如果有那么就增加平均值
- if($w_num_t){
- $num += ceil($w_num/($model_num-$w_num_t));
- }
- $datas = array();
- foreach($data as $r){
- $r_n = '';
- if(is_array($r['data']))
- foreach($r['data'] as $r_t){
- $datas[] = $r_t;
- if(++$r_n == $num)break;
- } //開源軟件:Vevb.com
- }
- return $datas;
- }else{
- return false;
- }
- }
然后我們?cè)谛枰{(diào)用全站最新的頁面中調(diào)用下面的標(biāo)簽:
- {pc:content action=”newcontent” num=15}
- <ul >
- {loop $data $r}<li><span class=”date”>{date(‘m-d’,$r[inputtime])}</span> <a href=”{$r['url']}” target=”_blank”>{str_cut($r[title],57,”)}</a></li>{/loop}
- </ul>
- {/pc}
這樣就可以獲取到全站最新的15條數(shù)據(jù),默認(rèn)是調(diào)用20條最新,如果不設(shè)置.
catid:可有可無 加了就只調(diào)用指定欄目的信息 多個(gè)欄目請(qǐng)使用英文半角的 ,間隔
order:排序 參數(shù)值:1-7 具體的含義在代碼里面很容易看明白 不祥述
num:調(diào)用數(shù)量 不指定默認(rèn)調(diào)用20條
還有一種方案,代碼放置的位置是不一樣的。
V9的模型使用分表儲(chǔ)存,調(diào)用多個(gè)模型下的最新內(nèi)容使用GET來IN catid卻要連表查詢十分麻煩,所以使用下面的辦法即可.
第一步:
phpcms/libs/functions/extention.func.php
里面增加如下代碼:
- function news($limit="",$modelid="",$where="")
- {
- $db=pc_base::load_model('content_model');
- if((strpos($modelid,",")>=0))
- {
- $modelid=explode(",",$modelid);
- $midarr=$dot='';
- foreach($modelid as $mid)
- {
- $midarr=$midarr.$dot.$mid;
- $dot=',';
- }
- $sq="`modelid` IN ({$midarr})";
- }
- else
- {
- $sq="`modelid`={$modelid}";
- }
- $db->table_name='v9_model';
- $models=$db->select($sq,"tablename");
- $sql='';
- $lianhe='';
- foreach($models as $name)
- {
- $sql=$sql.$lianhe."SELECT id,catid,title,url,inputtime FROM v9_{$name['tablename']}";
- $lianhe=' UNION ALL ';
- }
- $time=time();
- $sql=$sql." ".$where." order by inputtime desc limit ".$limit;
- $allnews=$db->query($sql);
- while($r = $db->fetch_array($allnews))
- {//開源軟件:Vevb.com
- if($keyfield)
- {
- $key = $r[$keyfield];
- $array[$key] = $r;
- }
- else
- {
- $array[] = $r;
- }
- }
- return $array[0];
- }
以上代碼需要注意的是里面表前綴,這里是V9,使用的時(shí)候改成你自己的表前綴,默認(rèn)是V9.
第二步:
調(diào)用的方式為:
- <?php $recent=news(“0,8“,”1,12“);?>
- {loop $recent $r}
- <li><a href=”{$r['url']}” target=”_blank” title=”{$r['title']}”>{str_cut($r[title],54,”)}</a></li>
- {/loop}
- {/pc}
解釋:
數(shù)字是調(diào)用條數(shù),從0開始調(diào)用8條
數(shù)字模型ID,不是欄目的ID,多個(gè)模型用,分開
新聞熱點(diǎn)
疑難解答
圖片精選