在使用DedecmsCMS时,有时我们需要对栏目列表页中的文章按照特定的flag属性进行调用。这可以通过修改核心文件来实现。以下是具体的操作步骤,帮助您完成这一功能。
首先,打开 include/arc.listview.class.php 文件,找到大概在45行的位置:
var $remoteDir;
在其下方添加以下代码:
var $Flag;
接下来,继续查找:
$this->remoteDir = '';
同样,在其下方添加:
$this->Flag = '';
然后,定位到大概227至267行之间的代码段:
//初始化列表模板,并统计页面总数...
将这段代码剪切并粘贴到大概155行:
$this->addSql = " arc.arcrank > -1 ";
将其放置在上述代码的下方。
继续查找:
if($ctag->GetAtt("pagesize")!="")
在该代码上方插入以下内容:
if($ctag->GetAtt("flag")!="") { $this->Flag = 1; $flags = explode(',' , $ctag->GetAtt("flag")); for($i=0; isset($flags[$i]); $i++) $this->addSql .= " AND FIND_IN_SET('{$flags[$i]}', arc.flag)>0 "; }
再查找:
$row = $this->dsql->GetOne($cquery);
在其上方加入:
if($this->Flag != "") { $cquery = "SELECT COUNT(*) AS dd FROM `dede_archives` arc WHERE ".$this->addSql; }
最后,定位到:
if(preg_match('/hot|click|lastpost/', $orderby))
将其修改为:
if(preg_match('/hot|click|lastpost|weight/', $orderby) || $this->Flag != "")
DedecmsCMS栏目列表页flag标签写法
在模板中,可以这样调用:
{dede:list pagesize='10' titlelen='250' flag='c,p'}{/dede:list}
其中,flag='c,p' 支持单个或多个属性的同时调用。