一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

DEDECMS|帝國(guó)CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|蘋(píng)果CMS|極致CMS|CMS系統(tǒng)|

服務(wù)器之家 - 建站程序 - PHPCMS - phpcms v9關(guān)聯(lián)文章排序陳舊問(wèn)題的修改方法

phpcms v9關(guān)聯(lián)文章排序陳舊問(wèn)題的修改方法

2019-10-16 12:29phpcms教程網(wǎng) PHPCMS

這篇文章主要介紹了phpcms v9關(guān)聯(lián)文章排序陳舊問(wèn)題的修改方法,需要的朋友可以參考下

之前一直沒(méi)有注意過(guò)相關(guān)閱讀的排序問(wèn)題,今天偶爾看帖有網(wǎng)友說(shuō)道,才發(fā)現(xiàn),果真如此。調(diào)用出來(lái)的內(nèi)容十分陳舊。于是嘗試添加 order="id DESC" 參數(shù)進(jìn)行排序,調(diào)用順序依然毫無(wú)變化。打開(kāi) phpcms/modules/content/classes/content_tag.class.php 內(nèi)容模型標(biāo)簽類(lèi)一看,發(fā)現(xiàn)該標(biāo)簽僅在內(nèi)容存在人為設(shè)置的相關(guān)閱讀時(shí),才依照order參數(shù)進(jìn)行排序。而當(dāng)內(nèi)容不存在人為設(shè)置的相關(guān)閱讀時(shí),則按照關(guān)鍵字進(jìn) 行查詢(xún),但此時(shí)并沒(méi)有按照order參數(shù)進(jìn)行排序。而是不進(jìn)行排序。這也就是為什么文章調(diào)用的相關(guān)閱讀總是那么陳舊的原因了。
修正該問(wèn)題的方法如下:
修改 phpcms/modules/content/classes/content_tag.class.php 內(nèi)容模型標(biāo)簽類(lèi)文件,將 content_tag 類(lèi)中 relation 方法修改為:
 

復(fù)制代碼

代碼如下:


/**
* 相關(guān)文章標(biāo)簽
* @param $data
*/
public function relation($data) {
$catid = intval($data['catid']);
if(!$this->set_modelid($catid)) return false;
$order = $data['order'];
$sql = "`status`=99";
$limit = $data['id'] ? $data['limit']+1 : $data['limit'];
if($data['relation']) {
$relations = explode('|',trim($data['relation'],'|'));
$relations = array_diff($relations, array(null));
$relations = implode(',',$relations);
$sql = " `id` IN ($relations)";
$key_array = $this->db->select($sql, '*', $limit, $order,'','id');
} elseif($data['keywords']) {
$keywords = str_replace('%', '',$data['keywords']);
$keywords_arr = explode(' ',$keywords);
$key_array = array();
$number = 0;
$i =1;
foreach ($keywords_arr as $_k) {
$sql2 = $sql." AND `keywords` LIKE '%$_k%'".(isset($data['id']) && intval($data['id']) ? " AND `id` != '".abs(intval($data['id']))."'" : '');
$r = $this->db->select($sql2, '*', $limit, $order,'','id');
$number += count($r);
foreach ($r as $id=>$v) {
if($i<= $data['limit'] && !in_array($id, $key_array)) $key_array[$id] = $v;
$i++;
}
if($data['limit']<$number) break;
}
}
if($data['id']) unset($key_array[$data['id']]);
return $key_array;
}

 

其實(shí)只是將 $r = $this->db->select($sql2, '*', $limit, '','','id'); 替換為了 $r = $this->db->select($sql2, '*', $limit, $order,'','id'); 讓order參數(shù)傳入查詢(xún)方法。
在模板當(dāng)中,使用如下標(biāo)簽,加上order參數(shù)即可實(shí)現(xiàn)排序了。
 

復(fù)制代碼

代碼如下:


{pc:content action="relation" relation="$relation" id="$id" catid="$catid" num="5" keywords="$rs[keywords]" order="id DESC"}
{loop $data $r}
{/loop}
{/pc}

 

如果有潔癖的朋友,擔(dān)心直接修改PC會(huì)影響未來(lái)升級(jí),可以將其單獨(dú)提取出來(lái)。放到模板中當(dāng)作函數(shù)使用。代碼如下:
 

復(fù)制代碼

代碼如下:


<?php
/**
* 內(nèi)容模型 - 相關(guān)文章標(biāo)簽(修正排序異常問(wèn)題)
* @param $data
*/
function mk1_content_tag_relation($data) {
$db = pc_base::load_model('content_model');
$catid = intval($data['catid']);
$siteids = getcache('category_content','commons');
if(!$siteids[$catid]) return false;
$siteid = $siteids[$catid];
$category = getcache('category_content_'.$siteid,'commons');
if(empty($category)) return false;
if($category[$catid]['type']!=0) return false;
$db->set_model($category[$catid]['modelid']);
$order = $data['order'];
$sql = "`status`=99";
$limit = $data['id'] ? $data['limit']+1 : $data['limit'];
if($data['relation']) {
$relations = explode('|',trim($data['relation'],'|'));
$relations = array_diff($relations, array(null));
$relations = implode(',',$relations);
$sql = " `id` IN ($relations)";
$key_array = $db->select($sql, '*', $limit, $order,'','id');
} elseif($data['keywords']) {
$keywords = str_replace('%', '',$data['keywords']);
$keywords_arr = explode(' ',$keywords);
$key_array = array();
$number = 0;
$i =1;
foreach ($keywords_arr as $_k) {
$sql2 = $sql." AND `keywords` LIKE '%$_k%'".(isset($data['id']) && intval($data['id']) ? " AND `id` != '".abs(intval($data['id']))."'" : '');
$r = $db->select($sql2, '*', $limit, $order,'','id');
$number += count($r);
foreach ($r as $id=>$v) {
if($i<= $data['limit'] && !in_array($id, $key_array)) $key_array[$id] = $v;
$i++;
}
if($data['limit']<$number) break;
}
}
if($data['id']) unset($key_array[$data['id']]);
return $key_array;
}
?>

 

在模板中,使用如下PHP代碼獲取即可。

 

復(fù)制代碼

代碼如下:


{php $data = mk1_content_tag_relation(array('relation'=>$relation,'id'=>$id,'catid'=>$catid,'keywords'=>$rs['keywords'],'order'=>'id DESC','limit'=>'4')); }
{loop $data $r}
{/loop}

 

其實(shí)只是一個(gè)小問(wèn)題,PC在未來(lái)應(yīng)該會(huì)進(jìn)行修正的,以上方法提供給那些心急的站長(zhǎng)朋友們。

延伸 · 閱讀

精彩推薦
  • PHPCMSphpcms的欄目緩存無(wú)限級(jí)羅列展示處理代碼(親測(cè))

    phpcms的欄目緩存無(wú)限級(jí)羅列展示處理代碼(親測(cè))

    本文為大家詳細(xì)介紹下phpcms的欄目緩存無(wú)限級(jí)羅列展示是怎么實(shí)現(xiàn)的,粗測(cè)試了一下,效果還不錯(cuò),有需求的朋友可以參考下哈,希望對(duì)大家有所幫助 ...

    phpcms教程網(wǎng)8642019-10-11
  • PHPCMSphpcms v9去除盛大連接 關(guān)閉盛大通行證的修改方法

    phpcms v9去除盛大連接 關(guān)閉盛大通行證的修改方法

    phpcms v9默認(rèn)開(kāi)啟了盛大連接,直接使用盛大通告證登錄網(wǎng)站,但是盛大通告證的覆蓋面有限,比不上QQ或者支付寶,甚至不如人人網(wǎng)、豆瓣之類(lèi),于是有朋...

    phpcms教程網(wǎng)5562019-10-13
  • PHPCMSphpcms轉(zhuǎn)移到虛擬空間的詳細(xì)步驟

    phpcms轉(zhuǎn)移到虛擬空間的詳細(xì)步驟

    本文向大家介紹phpcms從本地轉(zhuǎn)移到虛擬空間的步驟,轉(zhuǎn)移過(guò)程需要改動(dòng)一部分文件,這里提供如何改動(dòng)這些文件,以保證你可以順利轉(zhuǎn)移PHPCMS ...

    phpcms教程網(wǎng)4232019-10-13
  • PHPCMS數(shù)據(jù)庫(kù)導(dǎo)入成功,phpcms打不開(kāi)

    數(shù)據(jù)庫(kù)導(dǎo)入成功,phpcms打不開(kāi)

    問(wèn):,數(shù)據(jù)庫(kù)導(dǎo)入成功,phpcms打不開(kāi) 答:您好,查看此域名是解析到 云主機(jī) 上的,報(bào)錯(cuò)來(lái)看應(yīng)該是您導(dǎo)入的數(shù)據(jù)庫(kù)不完整,還差session的表,請(qǐng)您核實(shí) 若需...

    未知1822023-05-07
  • PHPCMSphpcms怎么上傳歌曲文件

    phpcms怎么上傳歌曲文件

    phpcms上傳歌曲文件的方法:首先依次打開(kāi)“設(shè)置-站點(diǎn)管理-修改”;然后在附件配置的“允許上傳附件類(lèi)型”中添加自己需要的類(lèi)型;接著打開(kāi)“添加模型...

    未知1522023-05-07
  • PHPCMS如何設(shè)置PhpCms廣告模塊管理 PhpCms廣告模塊管理圖文教程

    如何設(shè)置PhpCms廣告模塊管理 PhpCms廣告模塊管理圖文教程

    PhpCms廣告模塊管理圖文教程,下面給大家總結(jié)一下 ...

    PHPCMS教程網(wǎng)3782019-10-14
  • PHPCMSphpcms V9實(shí)現(xiàn)QQ登陸OAuth2.0提供下載

    phpcms V9實(shí)現(xiàn)QQ登陸OAuth2.0提供下載

    phpcmsV9使用的QQ登陸依然是OAuth1.0,但現(xiàn)在騰訊已經(jīng)不審核使用OAuth1.0的網(wǎng)站了。這對(duì)于使用pc的站長(zhǎng)來(lái)講是一個(gè)無(wú)比巨大的坑。經(jīng)過(guò)對(duì)phpcms論壇的一位同學(xué)做...

    phpcms教程網(wǎng)3402019-10-11
  • PHPCMSphpcms常見(jiàn)問(wèn)題解答

    phpcms常見(jiàn)問(wèn)題解答

    1.為什么phpcms首頁(yè)幻燈片怎么顯示不出來(lái)? 答:需要設(shè)置文章的 標(biāo)題圖片 如果設(shè)置標(biāo)題圖片,則可以在首頁(yè)以及欄目頁(yè)以圖片方式鏈接到文章。 2.自定義...

    phpcms教程網(wǎng)2712019-10-07
主站蜘蛛池模板: 护士被多人调教到失禁h | 成人影院www在线观看 | 色导行 | 亚洲乱码一区二区三区国产精品 | 72张让男人一看就硬的图片 | 婷婷sese| 九九热视频 这里有精品 | 久久这里只有精品视频9 | 99视频在线看观免费 | 国产成人免费 | 女娃开嫩苞经历小说 | japanese秘书丝袜 | 五月桃花网婷婷亚洲综合 | 日本道三区播放区 | 日本免费久久久久久久网站 | 亚洲 欧美 国产 综合 播放 | 日本最新免费二区 | 国产私人影院 | 成人免费毛片一区二区三区 | 日韩在线观看免费 | 欧美一级激情 | 亚洲AV 日韩 国产 有码 | 麻麻与子乱肉小说怀孕 | 办公室恋情在线观看 | chinese老头和老太交hd | 日本在线观看www免费 | 亚洲国产成人久久99精品 | 高清国产激情视频在线观看 | 秋霞综合网 | 国产日韩精品一区二区在线观看播放 | 国产日本韩国不卡在线视频 | 亚洲精品www久久久久久久软件 | 美女光屁股网站 | 男同精品视频免费观看网站 | 欧美一区二区福利视频 | 99在线视频观看 | 国产未成女年一区二区 | 亚洲欧美在线观看一区二区 | 高h喷水荡肉爽文np肉色文 | 久久伊人电影 | 亚洲欧美久久一区二区 |