在织梦标签dede:list中增加noflag属性的方法支持5.7版本

修改include/arc.listview.class.php,以下是修改后的文件

代码如下:

<?php if(!defined(‘DEDEINC’)) exit(‘Request Error!’);
require_once(DEDEINC.’/arc.partview.class.php’);

require_once(DEDEINC.’/ftp.class.php’);
helper(‘cache’);

@set_time_limit(0);

class ListView

{

var $dsql;

var $dtp;

var $dtp2;

var $TypeID;

var $TypeLink;

var $PageNo;

var $TotalPage;

var $TotalResult;

var $PageSize;

var $ChannelUnit;

var $ListType;

var $Fields;

var $PartView;

var $upPageType;

var $addSql;

var $IsError;

var $CrossID;

var $IsReplace;

var $ftp;

var $remoteDir;

var $Noflag;

function __construct($typeid, $uppage=1)

{

global $dsql,$ftp;

$this->TypeID = $typeid;

$this->dsql = &$dsql;

$this->CrossID = ”;

$this->IsReplace = false;

$this->IsError = false;

$this->dtp = new DedeTagParse();

$this->dtp->SetRefObj($this);

$this->dtp->SetNameSpace(“dede”, “{“, “}”);

$this->dtp2 = new DedeTagParse();

$this->dtp2->SetNameSpace(“field”,”[“,”]”);

$this->TypeLink = new TypeLink($typeid);

$this->upPageType = $uppage;

$this->ftp = &$ftp;

$this->remoteDir = ”;

$this->TotalResult = is_numeric($this->TotalResult)? $this->TotalResult : “”;

 

if(!is_array($this->TypeLink->TypeInfos))

{

$this->IsError = true;

}

if(!$this->IsError)

{

$this->ChannelUnit = new ChannelUnit($this->TypeLink->TypeInfos[‘channeltype’]);

$this->Fields = $this->TypeLink->TypeInfos;

$this->Fields[‘id’] = $typeid;

$this->Fields[‘position’] = $this->TypeLink->GetPositionLink(true);

$this->Fields[‘title’] = preg_replace(“/[<>]/”, ” / “, $this->TypeLink->GetPositionLink(false));

//设置一些全局参数的值

foreach($GLOBALS[‘PubFields’] as $k=>$v) $this->Fields[$k] = $v;

$this->Fields[‘rsslink’] = $GLOBALS[‘cfg_cmsurl’].”/data/rss/”.$this->TypeID.”.xml”;//设置环境变量

SetSysEnv($this->TypeID,$this->Fields[‘typename’],0,”,’list’);

$this->Fields[‘typeid’] = $this->TypeID; //获得交叉栏目ID

if($this->TypeLink->TypeInfos[‘cross’]>0 && $this->TypeLink->TypeInfos[‘ispart’]==0)

{

$selquery = ”;

if($this->TypeLink->TypeInfos[‘cross’]==1)

{

$selquery = “SELECT id,topid FROM `dede_arctype` WHERE typename LIKE ‘{$this->Fields[‘typename’]}’ AND id<>'{$this->TypeID}’ AND topid<>'{$this->TypeID}’ “;

}

else

{

$this->Fields[‘crossid’] = preg_replace(‘/[^0-9,]/’, ”, trim($this->Fields[‘crossid’]));

if($this->Fields[‘crossid’]!=”)

{

$selquery = “SELECT id,topid FROM `dede_arctype` WHERE id in({$this->Fields[‘crossid’]}) AND id<>{$this->TypeID} AND topid<>{$this->TypeID} “;

}

}

if($selquery!=”)

{

$this->dsql->SetQuery($selquery);

$this->dsql->Execute();

while($arr = $this->dsql->GetArray())

{

$this->CrossID .= ($this->CrossID==” ? $arr[‘id’] : ‘,’.$arr[‘id’]);

}

}

}

}//!error

}
//php4构造函数

function ListView($typeid,$uppage=0){

$this->__construct($typeid,$uppage);

}

//关闭相关资源

function Close()

{ }

function CountRecord()

{

global $cfg_list_son,$cfg_need_typeid2,$cfg_cross_sectypeid;

if(empty($cfg_need_typeid2)) $cfg_need_typeid2 = ‘N’;

 

//统计数据库记录

$this->TotalResult = -1;

if(isset($GLOBALS[‘TotalResult’])) $this->TotalResult = $GLOBALS[‘TotalResult’];

if(isset($GLOBALS[‘PageNo’])) $this->PageNo = $GLOBALS[‘PageNo’];

else $this->PageNo = 1;

$this->addSql = ” arc.arcrank > -1 “;

 

$typeid2like = ” ‘%,{$this->TypeID},%’ “;

if($cfg_list_son==’N’)

{

 

if($cfg_need_typeid2==’N’)

{

if($this->CrossID==”) $this->addSql .= ” AND (arc.typeid='”.$this->TypeID.”‘) “;

else $this->addSql .= ” AND (arc.typeid in({$this->CrossID},{$this->TypeID})) “;

}

else

{

if($this->CrossID==”)

{

$this->addSql .= ” AND ( (arc.typeid='”.$this->TypeID.”‘) OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2like) “;

} else {

if($cfg_cross_sectypeid == ‘Y’)

{

$typeid2Clike = ” ‘%,{$this->CrossID},%’ “;

$this->addSql .= ” AND ( arc.typeid IN({$this->CrossID},{$this->TypeID}) OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2like OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2Clike)”;

} else {

$this->addSql .= ” AND ( arc.typeid IN({$this->CrossID},{$this->TypeID}) OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2like)”;

}

}

}

}

else

{

$sonids = GetSonIds($this->TypeID,$this->Fields[‘channeltype’]);

if(!preg_match(“/,/”, $sonids)) {

$sonidsCon = ” arc.typeid = ‘$sonids’ “;

}

else {

$sonidsCon = ” arc.typeid IN($sonids) “;

}

if($cfg_need_typeid2==’N’)

{

if($this->CrossID==”) $this->addSql .= ” AND ( $sonidsCon ) “;

else $this->addSql .= ” AND ( arc.typeid IN ({$sonids},{$this->CrossID}) ) “;

}

else

{

if($this->CrossID==”)

{

$this->addSql .= ” AND ( $sonidsCon OR CONCAT(‘,’, arc.typeid2, ‘,’) like $typeid2like ) “;

} else {

if($cfg_cross_sectypeid == ‘Y’)

{

$typeid2Clike = ” ‘%,{$this->CrossID},%’ “;

$this->addSql .= ” AND ( arc.typeid IN ({$sonids},{$this->CrossID}) OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2like OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2Clike) “;

} else {

$this->addSql .= ” AND ( arc.typeid IN ({$sonids},{$this->CrossID}) OR CONCAT(‘,’, arc.typeid2, ‘,’) LIKE $typeid2like) “;

}

}

}

}

if($this->TotalResult==-1)

{

$cquery = “SELECT COUNT(*) AS dd FROM `dede_arctiny` arc WHERE “.$this->addSql;

$row = $this->dsql->GetOne($cquery);

if(is_array($row))

{

$this->TotalResult = $row[‘dd’];

}

else

{

$this->TotalResult = 0;

}

}
//初始化列表模板,并统计页面总数

$tempfile = $GLOBALS[‘cfg_basedir’].$GLOBALS[‘cfg_templets_dir’].”/”.$this->TypeLink->TypeInfos[‘templist’];

$tempfile = str_replace(“{tid}”, $this->TypeID, $tempfile);

$tempfile = str_replace(“{cid}”, $this->ChannelUnit->ChannelInfos[‘nid’], $tempfile);

if(!file_exists($tempfile))

{

$tempfile = $GLOBALS[‘cfg_basedir’].$GLOBALS[‘cfg_templets_dir’].”/”.$GLOBALS[‘cfg_df_style’].”/list_default.htm”;

}

if(!file_exists($tempfile)||!is_file($tempfile))

{

echo “模板文件不存在,无法解析文档!”;

exit();

}

$this->dtp->LoadTemplate($tempfile);

$ctag = $this->dtp->GetTag(“page”);

if(!is_object($ctag))

{

$ctag = $this->dtp->GetTag(“list”);

}

if(!is_object($ctag))

{

$this->PageSize = 20;

}

else

{

if($ctag->GetAtt(“pagesize”)!=””)

{

$this->PageSize = $ctag->GetAtt(“pagesize”);

}

else

{

$this->PageSize = 20;

}

}

$this->TotalPage = ceil($this->TotalResult/$this->PageSize);

}

function MakeHtml($startpage=1, $makepagesize=0, $isremote=0)

{

global $cfg_remote_site;

if(empty($startpage))

{

$startpage = 1;

}
//创建封面模板文件

if($this->TypeLink->TypeInfos[‘isdefault’]==-1)

{

echo ‘这个类目是动态类目!’;

return ‘../plus/list.php?tid=’.$this->TypeLink->TypeInfos[‘id’];

}
//单独页面

else if($this->TypeLink->TypeInfos[‘ispart’]>0)

{

$reurl = $this->MakePartTemplets();

return $reurl;

}
$this->CountRecord();

//初步给固定值的标记赋值

$this->ParseTempletsFirst();

$totalpage = ceil($this->TotalResult/$this->PageSize);

if($totalpage==0)

{

$totalpage = 1;

}

CreateDir(MfTypedir($this->Fields[‘typedir’]));

$murl = ”;

if($makepagesize > 0)

{

$endpage = $startpage+$makepagesize;

}

else

{

$endpage = ($totalpage+1);

}

if( $endpage >= $totalpage+1 )

{

$endpage = $totalpage+1;

}

if($endpage==1)

{

$endpage = 2;

}

for($this->PageNo=$startpage; $this->PageNo < $endpage; $this->PageNo++)

{

$this->ParseDMFields($this->PageNo,1);

$makeFile = $this->GetMakeFileRule($this->Fields[‘id’],’list’,$this->Fields[‘typedir’],”,$this->Fields[‘namerule2’]);

$makeFile = str_replace(“{page}”, $this->PageNo, $makeFile);

$murl = $makeFile;

if(!preg_match(“/^//”, $makeFile))

{

$makeFile = “/”.$makeFile;

}

$makeFile = $this->GetTruePath().$makeFile;

$makeFile = preg_replace(“//{1,}/”, “/”, $makeFile);

$murl = $this->GetTrueUrl($murl);

$this->dtp->SaveTo($makeFile);

//如果启用远程发布则需要进行判断

if($cfg_remote_site==’Y’&& $isremote == 1)

{

//分析远程文件路径

$remotefile = str_replace(DEDEROOT, ”,$makeFile);

$localfile = ‘..’.$remotefile;

$remotedir = preg_replace(‘/[^/]*.html/’, ”,$remotefile);

//不相等则说明已经切换目录则可以创建镜像

$this->ftp->rmkdir($remotedir);

$this->ftp->upload($localfile, $remotefile, ‘acii’);

}

}

if($startpage==1)

{

//如果列表启用封面文件,复制这个文件第一页

if($this->TypeLink->TypeInfos[‘isdefault’]==1

&& $this->TypeLink->TypeInfos[‘ispart’]==0)

{

$onlyrule = $this->GetMakeFileRule($this->Fields[‘id’],”list”,$this->Fields[‘typedir’],”,$this->Fields[‘namerule2’]);

$onlyrule = str_replace(“{page}”,”1″,$onlyrule);

$list_1 = $this->GetTruePath().$onlyrule;

$murl = MfTypedir($this->Fields[‘typedir’]).’/’.$this->Fields[‘defaultname’];

//如果启用远程发布则需要进行判断

if($cfg_remote_site==’Y’&& $isremote == 1)

{

//分析远程文件路径

$remotefile = $murl;

$localfile = ‘..’.$remotefile;

$remotedir = preg_replace(‘/[^/]*.html/’, ”,$remotefile);

//不相等则说明已经切换目录则可以创建镜像

$this->ftp->rmkdir($remotedir);

$this->ftp->upload($localfile, $remotefile, ‘acii’);

}

$indexname = $this->GetTruePath().$murl;

copy($list_1,$indexname);

}

}

return $murl;

}
function Display()

{

if($this->TypeLink->TypeInfos[‘ispart’]>0)

{

$this->DisplayPartTemplets();

return ;

}

$this->CountRecord();

if((empty($this->PageNo) || $this->PageNo==1)

&& $this->TypeLink->TypeInfos[‘ispart’]==1)

{

$tmpdir = $GLOBALS[‘cfg_basedir’].$GLOBALS[‘cfg_templets_dir’];

$tempfile = str_replace(“{tid}”,$this->TypeID,$this->Fields[‘tempindex’]);

$tempfile = str_replace(“{cid}”,$this->ChannelUnit->ChannelInfos[‘nid’],$tempfile);

$tempfile = $tmpdir.”/”.$tempfile;

if(!file_exists($tempfile))

{

$tempfile = $tmpdir.”/”.$GLOBALS[‘cfg_df_style’].”/index_default.htm”;

}

$this->dtp->LoadTemplate($tempfile);

本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com