在使用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' 支持单个或多个属性的同时调用。