如何解決phpcms關(guān)聯(lián)文章排序不變的問題

這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹如何解決phpcms關(guān)聯(lián)文章排序不變的問題,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、青岡網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、青岡網(wǎng)絡(luò)營(yíng)銷、青岡企業(yè)策劃、青岡品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供青岡建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:m.kartarina.com

phpcms關(guān)聯(lián)文章排序不變問題的修改方法:

打開 phpcms/modules/content/classes/content_tag.class.php 內(nèi)容模型標(biāo)簽類,發(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)行查詢,但此時(shí)并沒有按照order參數(shù)進(jìn)行排序。而是不進(jìn)行排序。這也就是為什么文章調(diào)用的相關(guān)閱讀總是那么陳舊的原因了。

修正該問題的方法如下:
修改 phpcms/modules/content/classes/content_tag.class.php 內(nèi)容模型標(biāo)簽類文件,將 content_tag 類中 relation 方法修改為:

代碼如下:

/**
* 相關(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ù)傳入查詢方法。
在模板當(dāng)中,使用如下標(biāo)簽,加上order參數(shù)即可實(shí)現(xiàn)排序了。

代碼如下:

{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ì)影響未來升級(jí),可以將其單獨(dú)提取出來。放到模板中當(dāng)作函數(shù)使用。代碼如下:

代碼如下:

<?php
/**
* 內(nèi)容模型 - 相關(guān)文章標(biāo)簽(修正排序異常問題)
* @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代碼獲取即可。

代碼如下:

{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}

關(guān)于如何解決phpcms關(guān)聯(lián)文章排序不變的問題就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁(yè)名稱:如何解決phpcms關(guān)聯(lián)文章排序不變的問題
文章來源:http://m.kartarina.com/article48/pipeep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名虛擬主機(jī)網(wǎng)站營(yíng)銷動(dòng)態(tài)網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
主站蜘蛛池模板: 无码精品一区二区三区| 亚洲区日韩区无码区| 日韩精品无码专区免费播放| 亚欧免费无码aⅴ在线观看| 无码亚洲成a人在线观看| 人妻AV中出无码内射| 性生交片免费无码看人| 免费无码av片在线观看| 无码国产精品一区二区免费3p | 久久AV高清无码| 国产精品无码免费视频二三区| 久久无码人妻精品一区二区三区| 日韩精品少妇无码受不了| av无码一区二区三区| av无码国产在线看免费网站| 无码人妻一区二区三区免费视频 | 成人无码Av片在线观看| 无码人妻精品一区二区三 | 中文字幕无码成人免费视频| 国精品无码一区二区三区左线 | 无码av中文一二三区| 一本大道在线无码一区| 无码专区AAAAAA免费视频| 国产精品成人无码久久久久久 | 人妻无码αv中文字幕久久| 狠狠躁天天躁无码中文字幕| 国产精品无码一二区免费| 特级小箩利无码毛片| 亚洲人av高清无码| 免费无码中文字幕A级毛片| 亚洲AV无码久久| 国产成人无码精品一区二区三区 | 亚洲AV无码精品色午夜在线观看 | 亚洲成A∨人片在线观看无码| 无码福利写真片视频在线播放| 国产AⅤ无码专区亚洲AV| 精品无码国产AV一区二区三区 | 亚洲av无码专区国产不乱码| 亚洲中文无码av永久| 亚洲av无码专区在线| 在线观看无码AV网址|