国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 CMS教程 PHPCMS phpcms關(guān)聯(lián)文章排序不變?cè)趺崔k?

phpcms關(guān)聯(lián)文章排序不變?cè)趺崔k?

Jun 10, 2020 am 09:41 AM

phpcms關(guān)聯(lián)文章排序不變?cè)趺崔k?

phpcms排序不變?cè)趺崔k?

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[&#39;limit&#39;] && !in_array($id, $key_array)) $key_array[$id] = $v;
$i++;
}
if($data[&#39;limit&#39;]<$number) break;
}
}
if($data[&#39;id&#39;]) unset($key_array[$data[&#39;id&#39;]]);
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(&#39;content_model&#39;);
$catid = intval($data[&#39;catid&#39;]);
$siteids = getcache(&#39;category_content&#39;,&#39;commons&#39;);
if(!$siteids[$catid]) return false;
$siteid = $siteids[$catid];
$category = getcache(&#39;category_content_&#39;.$siteid,&#39;commons&#39;);
if(empty($category)) return false;
if($category[$catid][&#39;type&#39;]!=0) return false;
$db->set_model($category[$catid][&#39;modelid&#39;]);
$order = $data[&#39;order&#39;];
$sql = "`status`=99";
$limit = $data[&#39;id&#39;] ? $data[&#39;limit&#39;]+1 : $data[&#39;limit&#39;];
if($data[&#39;relation&#39;]) {
$relations = explode(&#39;|&#39;,trim($data[&#39;relation&#39;],&#39;|&#39;));
$relations = array_diff($relations, array(null));
$relations = implode(&#39;,&#39;,$relations);
$sql = " `id` IN ($relations)";
$key_array = $db->select($sql, &#39;*&#39;, $limit, $order,&#39;&#39;,&#39;id&#39;);
} elseif($data[&#39;keywords&#39;]) {
$keywords = str_replace(&#39;%&#39;, &#39;&#39;,$data[&#39;keywords&#39;]);
$keywords_arr = explode(&#39; &#39;,$keywords);
$key_array = array();
$number = 0;
$i =1;
foreach ($keywords_arr as $_k) {
$sql2 = $sql." AND `keywords` LIKE &#39;%$_k%&#39;".(isset($data[&#39;id&#39;]) && intval($data[&#39;id&#39;]) ? " AND `id` != &#39;".abs(intval($data[&#39;id&#39;]))."&#39;" : &#39;&#39;);
$r = $db->select($sql2, &#39;*&#39;, $limit, $order,&#39;&#39;,&#39;id&#39;);
$number += count($r);
foreach ($r as $id=>$v) {
if($i<= $data[&#39;limit&#39;] && !in_array($id, $key_array)) $key_array[$id] = $v;
$i++;
}
if($data[&#39;limit&#39;]<$number) break;
}
}
if($data[&#39;id&#39;]) unset($key_array[$data[&#39;id&#39;]]);
return $key_array;
}
?>

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

代碼如下:

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

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

推薦教程:《PHP視頻教程

以上是phpcms關(guān)聯(lián)文章排序不變?cè)趺崔k?的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276