大家好,有同學(xué)反饋是否列表頁的帖子不要全部顯示只顯示預(yù)定的時(shí)間段帖子數(shù)量?,有沒有什么可調(diào)用的方法,以本人目前認(rèn)知是沒有此類的設(shè)置和調(diào)用標(biāo)簽。以下是小秋自己搗鼓出來的,只分享不保證,經(jīng)過測試完成完美實(shí)現(xiàn)?,F(xiàn)在跟的步驟來做:
打開\core\library\think\template\taglib
eyou.php文件:大概36新
'list' => ['attr' => 'modelid,channelid,typeid,notypeid,pagesize,row,loop,keyword,titlelen,orderby,ordermode,orderway,noflag,flag,bodylen,infolen,empty,mod,id,key,addfields,thumb,arcrank,idlist,idrange,siteall'],
修改為:
'list' => ['attr' => 'modelid,channelid,typeid,notypeid,pagesize,row,loop,keyword,titlelen,orderby,ordermode,orderway,noflag,flag,bodylen,infolen,empty,mod,id,key,addfields,thumb,arcrank,idlist,idrange,siteall,timewode'],
繼續(xù)查找(938行左右)
public function tagList($tag, $content)
在里面的內(nèi)容的:
$keyword = isset($tag['keyword']) ? $tag['keyword'] : '';
$keyword = $this->varOrvalue($keyword);
下面新增:
$timewode = isset($tag['timewode']) ? $tag['timewode'] : '';
$timewode = $this->varOrvalue($timewode);
繼續(xù)往下查找:
// 查詢數(shù)據(jù)庫獲取的數(shù)據(jù)集
$parseStr .= ' $param = array(';
$parseStr .= ' "typeid"=> $typeid,';
$parseStr .= ' "notypeid"=> '.$notypeid.',';
$parseStr .= ' "flag"=> "'.$flag.'",';
$parseStr .= ' "noflag"=> "'.$noflag.'",';
$parseStr .= ' "channel"=> $modelid,';
$parseStr .= ' "keyword"=> '.$keyword.',';
$parseStr .= ' "idlist"=> '.$idlist.',';
$parseStr .= ' "idrange"=> '.$idrange.',';
下面新增:
$parseStr .= ' "timewode"=> '.$timewode.',';
保存 本頁結(jié)束:
打開:\core\library\think\template\taglib\eyou
TagList.php文件
查找:
public function getList($param = array(), $pagesize = 10, $orderby = '', $addfields = '', $ordermode = '', $thumb = '', $arcrank = '',$siteall = null)
在這個(gè)函數(shù)里面我們繼續(xù)往下查找:
$condition = array();
foreach (array('keywords','keyword','typeid','notypeid','flag','noflag','channel') as $key) {
修改為:
$condition = array();
foreach (array('keywords','keyword','typeid','notypeid','flag','noflag','channel','timewode') as $key) {
繼續(xù)往下查找:
elseif ($key == 'keyword' && trim($param[$key])) {
$keyword = str_replace(',', ',', $param[$key]);
$keywordArr = explode(',', $keyword);
$keywordArr = array_unique($keywordArr); // 去重
foreach ($keywordArr as $_k => $_v) {
$_v = trim($_v);
if (empty($_v)) {
unset($keywordArr[$_k]);
break;
} else {
$keywordArr[$_k] = addslashes($_v);
}
}
$keyword = implode('|', $keywordArr);
$condition[] = Db::raw(" CONCAT(a.title,a.seo_keywords) REGEXP '$keyword' ");
}
下面增加:
elseif ($key == 'timewode' && trim($param[$key])) {
$timewode = trim($param[$key]);
$num = 0;
$unit = 'd';
$startTime = 0;
if (preg_match('/^(\d+)$/', $timewode, $matches)) {
$num = intval($matches[1]);
}
elseif (preg_match('/^(\d+)([dwmqy])$/i', $timewode, $matches)) {
$num = intval($matches[1]);
$unit = strtolower($matches[2]);
}
if ($num > 0) {
$archivesModel = Db::name('archives');
$archivesModel->where('status', 1);
$lastPostTime = $archivesModel->max('add_time');
$originalEndTime = $lastPostTime > 0 ? $lastPostTime : time();
$endTime = strtotime(date('Y-m-d 23:59:59', $originalEndTime));
switch ($unit) {
case 'd': // 天
$startTime = $endTime - $num * 86400;
break;
case 'w': // 周(1周=7天)
$startTime = $endTime - $num * 86400 * 7;
break;
case 'm': // 月(1月=30天)
$startTime = $endTime - $num * 86400 * 30;
break;
case 'q': // 季度(1季度=3個(gè)月)
$startTime = $endTime - $num * 86400 * 30 * 3;
break;
case 'h': // 半年(1半年=6個(gè)月)
$startTime = $endTime - $num * 86400 * 30 * 6;
break;
case 'y': // 年(1年=365天)
$startTime = $endTime - $num * 86400 * 365;
break;
}
// 添加時(shí)間范圍查詢條件
if ($startTime > 0) {
$condition[] = "a.add_time >= {$startTime}";
}
}
}
保存即可 核心文件已經(jīng)完成:
調(diào)用方式與正常標(biāo)簽一樣,如果需要用時(shí)間篩選或者就是規(guī)定時(shí)間內(nèi)顯示的所在時(shí)間的文檔就在標(biāo)簽參數(shù)里面新增:timewode='' 即可:
timewode='' 時(shí)間范圍內(nèi)的所有帖子,單位格式:d為天,w為周,m為月,q為季度,h為半年,y為年【數(shù)+單位】 。如果不寫單位表示實(shí)際天數(shù)。
舉例說明【寫多少時(shí)間顯示多少天的帖子】:7天
{eyou:list loop='10' id='field2' timewode='7d'}
<a href='{$field2.arcurl}'>{$field2.title}</a>
{/eyou:list}
不寫單位的:3天
{eyou:list loop='10' id='field2' timewode='3' }
<a href='{$field2.arcurl}'>{$field2.title}</a>
{/eyou:list}
一個(gè)月:
{eyou:list loop='10' id='field2' timewode='1m' }
<a href='{$field2.arcurl}'>{$field2.title}</a>
{/eyou:list}
一年:
{eyou:list loop='10' id='field2' timewode='1y' }
<a href='{$field2.arcurl}'>{$field2.title}</a>
{/eyou:list}