龙晓 發表於 2023-11-23 00:00:00

dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章

<div id="content">
        <p>
                修改include/arc.listview.class.php,以下是修改后的文件</p>
        <p>
                 </p>
        <div class="msgheader">
                <div class="right">
                        <span><u>复制代码</u></span>
</div>
                代码如下:</div>
        <div class="msgborder" id="phpcode1">
                <br>
                &lt;?php if(!defined('DEDEINC')) exit('Request Error!');&lt;/p&gt; &lt;p&gt;require_once(DEDEINC.'/arc.partview.class.php');<br>
                require_once(DEDEINC.'/ftp.class.php');&lt;/p&gt; &lt;p&gt;helper('cache');<br>
                @set_time_limit(0);&lt;/p&gt; &lt;p&gt;<br>
                class ListView<br>
                {<br>
                var $dsql;<br>
                var $dtp;<br>
                var $dtp2;<br>
                var $TypeID;<br>
                var $TypeLink;<br>
                var $PageNo;<br>
                var $TotalPage;<br>
                var $TotalResult;<br>
                var $PageSize;<br>
                var $ChannelUnit;<br>
                var $ListType;<br>
                var $Fields;<br>
                var $PartView;<br>
                var $upPageType;<br>
                var $addSql;<br>
                var $IsError;<br>
                var $CrossID;<br>
                var $IsReplace;<br>
                var $ftp;<br>
                var $remoteDir;<br>
                var $Noflag; <br>
                function __construct($typeid, $uppage=1)<br>
                {<br>
                global $dsql,$ftp;<br>
                $this-&gt;TypeID = $typeid;<br>
                $this-&gt;dsql = &amp;$dsql;<br>
                $this-&gt;CrossID = '';<br>
                $this-&gt;IsReplace = false;<br>
                $this-&gt;IsError = false;<br>
                $this-&gt;dtp = new DedeTagParse();<br>
                $this-&gt;dtp-&gt;SetRefObj($this);<br>
                $this-&gt;dtp-&gt;SetNameSpace("dede", "{", "}");<br>
                $this-&gt;dtp2 = new DedeTagParse();<br>
                $this-&gt;dtp2-&gt;SetNameSpace("field","[","]");<br>
                $this-&gt;TypeLink = new TypeLink($typeid);<br>
                $this-&gt;upPageType = $uppage;<br>
                $this-&gt;ftp = &amp;$ftp;<br>
                $this-&gt;remoteDir = '';<br>
                $this-&gt;TotalResult = is_numeric($this-&gt;TotalResult)? $this-&gt;TotalResult : "";<br><br>
                if(!is_array($this-&gt;TypeLink-&gt;TypeInfos))<br>
                {<br>
                $this-&gt;IsError = true;<br>
                }<br>
                if(!$this-&gt;IsError)<br>
                {<br>
                $this-&gt;ChannelUnit = new ChannelUnit($this-&gt;TypeLink-&gt;TypeInfos['channeltype']);<br>
                $this-&gt;Fields = $this-&gt;TypeLink-&gt;TypeInfos;<br>
                $this-&gt;Fields['id'] = $typeid;<br>
                $this-&gt;Fields['position'] = $this-&gt;TypeLink-&gt;GetPositionLink(true);<br>
                $this-&gt;Fields['title'] = preg_replace("/[&lt;&gt;]/", " / ", $this-&gt;TypeLink-&gt;GetPositionLink(false));<br>
                //设置一些全局参数的值<br>
                foreach($GLOBALS['PubFields'] as $k=&gt;$v) $this-&gt;Fields[$k] = $v;<br>
                $this-&gt;Fields['rsslink'] = $GLOBALS['cfg_cmsurl']."/data/rss/".$this-&gt;TypeID.".xml";&lt;/p&gt; &lt;p&gt;//设置环境变量<br>
                SetSysEnv($this-&gt;TypeID,$this-&gt;Fields['typename'],0,'','list');<br>
                $this-&gt;Fields['typeid'] = $this-&gt;TypeID;&lt;/p&gt; &lt;p&gt;//获得交叉栏目ID<br>
                if($this-&gt;TypeLink-&gt;TypeInfos['cross']&gt;0 &amp;&amp; $this-&gt;TypeLink-&gt;TypeInfos['ispart']==0)<br>
                {<br>
                $selquery = '';<br>
                if($this-&gt;TypeLink-&gt;TypeInfos['cross']==1)<br>
                {<br>
                $selquery = "SELECT id,topid FROM `dede_arctype` WHERE typename LIKE '{$this-&gt;Fields['typename']}' AND id&lt;&gt;'{$this-&gt;TypeID}' AND topid&lt;&gt;'{$this-&gt;TypeID}' ";<br>
                }<br>
                else<br>
                {<br>
                $this-&gt;Fields['crossid'] = preg_replace('/[^0-9,]/', '', trim($this-&gt;Fields['crossid']));<br>
                if($this-&gt;Fields['crossid']!='')<br>
                {<br>
                $selquery = "SELECT id,topid FROM `dede_arctype` WHERE id in({$this-&gt;Fields['crossid']}) AND id&lt;&gt;{$this-&gt;TypeID} AND topid&lt;&gt;{$this-&gt;TypeID} ";<br>
                }<br>
                }<br>
                if($selquery!='')<br>
                {<br>
                $this-&gt;dsql-&gt;SetQuery($selquery);<br>
                $this-&gt;dsql-&gt;Execute();<br>
                while($arr = $this-&gt;dsql-&gt;GetArray())<br>
                {<br>
                $this-&gt;CrossID .= ($this-&gt;CrossID=='' ? $arr['id'] : ','.$arr['id']);<br>
                }<br>
                }<br>
                }<br>
                }//!error<br>
                }&lt;/p&gt; &lt;p&gt;//php4构造函数<br>
                function ListView($typeid,$uppage=0){<br>
                $this-&gt;__construct($typeid,$uppage);<br>
                }<br>
                //关闭相关资源<br>
                function Close()<br>
                { }<br>
                function CountRecord()<br>
                {<br>
                global $cfg_list_son,$cfg_need_typeid2,$cfg_cross_sectypeid;<br>
                if(empty($cfg_need_typeid2)) $cfg_need_typeid2 = 'N';<br><br>
                //统计数据库记录<br>
                $this-&gt;TotalResult = -1;<br>
                if(isset($GLOBALS['TotalResult'])) $this-&gt;TotalResult = $GLOBALS['TotalResult'];<br>
                if(isset($GLOBALS['PageNo'])) $this-&gt;PageNo = $GLOBALS['PageNo'];<br>
                else $this-&gt;PageNo = 1;<br>
                $this-&gt;addSql = " arc.arcrank &gt; -1 ";<br><br>
                $typeid2like = " '%,{$this-&gt;TypeID},%' ";<br>
                if($cfg_list_son=='N')<br>
                {<br><br>
                if($cfg_need_typeid2=='N')<br>
                {<br>
                if($this-&gt;CrossID=='') $this-&gt;addSql .= " AND (arc.typeid='".$this-&gt;TypeID."') ";<br>
                else $this-&gt;addSql .= " AND (arc.typeid in({$this-&gt;CrossID},{$this-&gt;TypeID})) ";<br>
                }<br>
                else<br>
                {<br>
                if($this-&gt;CrossID=='')<br>
                {<br>
                $this-&gt;addSql .= " AND ( (arc.typeid='".$this-&gt;TypeID."') OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like) ";<br>
                } else {<br>
                if($cfg_cross_sectypeid == 'Y')<br>
                {<br>
                $typeid2Clike = " '%,{$this-&gt;CrossID},%' ";<br>
                $this-&gt;addSql .= " AND ( arc.typeid IN({$this-&gt;CrossID},{$this-&gt;TypeID}) OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2Clike)";<br>
                } else {<br>
                $this-&gt;addSql .= " AND ( arc.typeid IN({$this-&gt;CrossID},{$this-&gt;TypeID}) OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like)";<br>
                }<br>
                }<br>
                }<br>
                }<br>
                else<br>
                {<br>
                $sonids = GetSonIds($this-&gt;TypeID,$this-&gt;Fields['channeltype']);<br>
                if(!preg_match("/,/", $sonids)) {<br>
                $sonidsCon = " arc.typeid = '$sonids' ";<br>
                }<br>
                else {<br>
                $sonidsCon = " arc.typeid IN($sonids) ";<br>
                }<br>
                if($cfg_need_typeid2=='N')<br>
                {<br>
                if($this-&gt;CrossID=='') $this-&gt;addSql .= " AND ( $sonidsCon ) ";<br>
                else $this-&gt;addSql .= " AND ( arc.typeid IN ({$sonids},{$this-&gt;CrossID}) ) ";<br>
                }<br>
                else<br>
                {<br>
                if($this-&gt;CrossID=='')<br>
                {<br>
                $this-&gt;addSql .= " AND ( $sonidsCon OR CONCAT(',', arc.typeid2, ',') like $typeid2like ) ";<br>
                } else {<br>
                if($cfg_cross_sectypeid == 'Y')<br>
                {<br>
                $typeid2Clike = " '%,{$this-&gt;CrossID},%' ";<br>
                $this-&gt;addSql .= " AND ( arc.typeid IN ({$sonids},{$this-&gt;CrossID}) OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2Clike) ";<br>
                } else {<br>
                $this-&gt;addSql .= " AND ( arc.typeid IN ({$sonids},{$this-&gt;CrossID}) OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like) ";<br>
                }<br>
                }<br>
                }<br>
                }<br>
                if($this-&gt;TotalResult==-1)<br>
                {<br>
                $cquery = "SELECT COUNT(*) AS dd FROM `dede_arctiny` arc WHERE ".$this-&gt;addSql;<br>
                $row = $this-&gt;dsql-&gt;GetOne($cquery);<br>
                if(is_array($row))<br>
                {<br>
                $this-&gt;TotalResult = $row['dd'];<br>
                }<br>
                else<br>
                {<br>
                $this-&gt;TotalResult = 0;<br>
                }<br>
                }&lt;/p&gt; &lt;p&gt;//初始化列表模板,并统计页面总数<br>
                $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$this-&gt;TypeLink-&gt;TypeInfos['templist'];<br>
                $tempfile = str_replace("{tid}", $this-&gt;TypeID, $tempfile);<br>
                $tempfile = str_replace("{cid}", $this-&gt;ChannelUnit-&gt;ChannelInfos['nid'], $tempfile);<br>
                if(!file_exists($tempfile))<br>
                {<br>
                $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/list_default.htm";<br>
                }<br>
                if(!file_exists($tempfile)||!is_file($tempfile))<br>
                {<br>
                echo "模板文件不存在,无法解析文档!";<br>
                exit();<br>
                }<br>
                $this-&gt;dtp-&gt;LoadTemplate($tempfile);<br>
                $ctag = $this-&gt;dtp-&gt;GetTag("page");<br>
                if(!is_object($ctag))<br>
                {<br>
                $ctag = $this-&gt;dtp-&gt;GetTag("list");<br>
                }<br>
                if(!is_object($ctag))<br>
                {<br>
                $this-&gt;PageSize = 20;<br>
                }<br>
                else<br>
                {<br>
                if($ctag-&gt;GetAtt("pagesize")!="")<br>
                {<br>
                $this-&gt;PageSize = $ctag-&gt;GetAtt("pagesize");<br>
                }<br>
                else<br>
                {<br>
                $this-&gt;PageSize = 20;<br>
                }<br>
                }<br>
                $this-&gt;TotalPage = ceil($this-&gt;TotalResult/$this-&gt;PageSize);<br>
                }<br>
                function MakeHtml($startpage=1, $makepagesize=0, $isremote=0)<br>
                {<br>
                global $cfg_remote_site;<br>
                if(empty($startpage))<br>
                {<br>
                $startpage = 1;<br>
                }&lt;/p&gt; &lt;p&gt;//创建封面模板文件<br>
                if($this-&gt;TypeLink-&gt;TypeInfos['isdefault']==-1)<br>
                {<br>
                echo '这个类目是动态类目!';<br>
                return '../plus/list.php?tid='.$this-&gt;TypeLink-&gt;TypeInfos['id'];<br>
                }&lt;/p&gt; &lt;p&gt;//单独页面<br>
                else if($this-&gt;TypeLink-&gt;TypeInfos['ispart']&gt;0)<br>
                {<br>
                $reurl = $this-&gt;MakePartTemplets();<br>
                return $reurl;<br>
                }&lt;/p&gt; &lt;p&gt;$this-&gt;CountRecord();<br>
                //初步给固定值的标记赋值<br>
                $this-&gt;ParseTempletsFirst();<br>
                $totalpage = ceil($this-&gt;TotalResult/$this-&gt;PageSize);<br>
                if($totalpage==0)<br>
                {<br>
                $totalpage = 1;<br>
                }<br>
                CreateDir(MfTypedir($this-&gt;Fields['typedir']));<br>
                $murl = '';<br>
                if($makepagesize &gt; 0)<br>
                {<br>
                $endpage = $startpage+$makepagesize;<br>
                }<br>
                else<br>
                {<br>
                $endpage = ($totalpage+1);<br>
                }<br>
                if( $endpage &gt;= $totalpage+1 )<br>
                {<br>
                $endpage = $totalpage+1;<br>
                }<br>
                if($endpage==1)<br>
                {<br>
                $endpage = 2;<br>
                }<br>
                for($this-&gt;PageNo=$startpage; $this-&gt;PageNo &lt; $endpage; $this-&gt;PageNo++)<br>
                {<br>
                $this-&gt;ParseDMFields($this-&gt;PageNo,1);<br>
                $makeFile = $this-&gt;GetMakeFileRule($this-&gt;Fields['id'],'list',$this-&gt;Fields['typedir'],'',$this-&gt;Fields['namerule2']);<br>
                $makeFile = str_replace("{page}", $this-&gt;PageNo, $makeFile);<br>
                $murl = $makeFile;<br>
                if(!preg_match("/^\//", $makeFile))<br>
                {<br>
                $makeFile = "/".$makeFile;<br>
                }<br>
                $makeFile = $this-&gt;GetTruePath().$makeFile;<br>
                $makeFile = preg_replace("/\/{1,}/", "/", $makeFile);<br>
                $murl = $this-&gt;GetTrueUrl($murl);<br>
                $this-&gt;dtp-&gt;SaveTo($makeFile);<br>
                //如果启用远程发布则需要进行判断<br>
                if($cfg_remote_site=='Y'&amp;&amp; $isremote == 1)<br>
                {<br>
                //分析远程文件路径<br>
                $remotefile = str_replace(DEDEROOT, '',$makeFile);<br>
                $localfile = '..'.$remotefile;<br>
                $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile);<br>
                //不相等则说明已经切换目录则可以创建镜像<br>
                $this-&gt;ftp-&gt;rmkdir($remotedir);<br>
                $this-&gt;ftp-&gt;upload($localfile, $remotefile, 'acii');<br>
                }<br>
                }<br>
                if($startpage==1)<br>
                {<br>
                //如果列表启用封面文件,复制这个文件第一页<br>
                if($this-&gt;TypeLink-&gt;TypeInfos['isdefault']==1<br>
                &amp;&amp; $this-&gt;TypeLink-&gt;TypeInfos['ispart']==0)<br>
                {<br>
                $onlyrule = $this-&gt;GetMakeFileRule($this-&gt;Fields['id'],"list",$this-&gt;Fields['typedir'],'',$this-&gt;Fields['namerule2']);<br>
                $onlyrule = str_replace("{page}","1",$onlyrule);<br>
                $list_1 = $this-&gt;GetTruePath().$onlyrule;<br>
                $murl = MfTypedir($this-&gt;Fields['typedir']).'/'.$this-&gt;Fields['defaultname'];<br>
                //如果启用远程发布则需要进行判断<br>
                if($cfg_remote_site=='Y'&amp;&amp; $isremote == 1)<br>
                {<br>
                //分析远程文件路径<br>
                $remotefile = $murl;<br>
                $localfile = '..'.$remotefile;<br>
                $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile);<br>
                //不相等则说明已经切换目录则可以创建镜像<br>
                $this-&gt;ftp-&gt;rmkdir($remotedir);<br>
                $this-&gt;ftp-&gt;upload($localfile, $remotefile, 'acii');<br>
                }<br>
                $indexname = $this-&gt;GetTruePath().$murl;<br>
                copy($list_1,$indexname);<br>
                }<br>
                }<br>
                return $murl;<br>
                }&lt;/p&gt; &lt;p&gt;function Display()<br>
                {<br>
                if($this-&gt;TypeLink-&gt;TypeInfos['ispart']&gt;0)<br>
                {<br>
                $this-&gt;DisplayPartTemplets();<br>
                return ;<br>
                }<br>
                $this-&gt;CountRecord();<br>
                if((empty($this-&gt;PageNo) || $this-&gt;PageNo==1)<br>
                &amp;&amp; $this-&gt;TypeLink-&gt;TypeInfos['ispart']==1)<br>
                {<br>
                $tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'];<br>
                $tempfile = str_replace("{tid}",$this-&gt;TypeID,$this-&gt;Fields['tempindex']);<br>
                $tempfile = str_replace("{cid}",$this-&gt;ChannelUnit-&gt;ChannelInfos['nid'],$tempfile);<br>
                $tempfile = $tmpdir."/".$tempfile;<br>
                if(!file_exists($tempfile))<br>
                {<br>
                $tempfile = $tmpdir."/".$GLOBALS['cfg_df_style']."/index_default.htm";<br>
                }<br>
                $this-&gt;dtp-&gt;LoadTemplate($tempfile);<br>
                }<br>
                $this-&gt;ParseTempletsFirst();<br>
                $this-&gt;ParseDMFields($this-&gt;PageNo,0);<br>
                $this-&gt;dtp-&gt;Display();<br>
                } <br>
                function MakePartTemplets()<br>
                {<br>
                $this-&gt;PartView = new PartView($this-&gt;TypeID,false);<br>
                $this-&gt;PartView-&gt;SetTypeLink($this-&gt;TypeLink);<br>
                $nmfa = 0;<br>
                $tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'];<br>
                if($this-&gt;Fields['ispart']==1)<br>
                {<br>
                $tempfile = str_replace("{tid}",$this-&gt;TypeID,$this-&gt;Fields['tempindex']);<br>
                $tempfile = str_replace("{cid}",$this-&gt;ChannelUnit-&gt;ChannelInfos['nid'],$tempfile);<br>
                $tempfile = $tmpdir."/".$tempfile;<br>
                if(!file_exists($tempfile))<br>
                {<br>
                $tempfile = $tmpdir."/".$GLOBALS['cfg_df_style']."/index_default.htm";<br>
                }<br>
                $this-&gt;PartView-&gt;SetTemplet($tempfile);<br>
                }<br>
                else if($this-&gt;Fields['ispart']==2)<br>
                {<br>
                //跳转网址<br>
                return $this-&gt;Fields['typedir'];<br>
                }<br>
                CreateDir(MfTypedir($this-&gt;Fields['typedir']));<br>
                $makeUrl = $this-&gt;GetMakeFileRule($this-&gt;Fields['id'],"index",MfTypedir($this-&gt;Fields['typedir']),$this-&gt;Fields['defaultname'],$this-&gt;Fields['namerule2']);<br>
                $makeUrl = preg_replace("/\/{1,}/", "/", $makeUrl);<br>
                $makeFile = $this-&gt;GetTruePath().$makeUrl;<br>
                if($nmfa==0)<br>
                {<br>
                $this-&gt;PartView-&gt;SaveToHtml($makeFile);<br>
                //如果启用远程发布则需要进行判断<br>
                if($GLOBALS['cfg_remote_site']=='Y'&amp;&amp; $isremote == 1)<br>
                {<br>
                //分析远程文件路径<br>
                $remotefile = str_replace(DEDEROOT, '',$makeFile);<br>
                $localfile = '..'.$remotefile;<br>
                $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile);<br>
                //不相等则说明已经切换目录则可以创建镜像<br>
                $this-&gt;ftp-&gt;rmkdir($remotedir);<br>
                $this-&gt;ftp-&gt;upload($localfile, $remotefile, 'acii');<br>
                }<br>
                }<br>
                else<br>
                {<br>
                if(!file_exists($makeFile))<br>
                {<br>
                $this-&gt;PartView-&gt;SaveToHtml($makeFile);<br>
                //如果启用远程发布则需要进行判断<br>
                if($cfg_remote_site=='Y'&amp;&amp; $isremote == 1)<br>
                {<br>
                //分析远程文件路径<br>
                $remotefile = str_replace(DEDEROOT, '',$makeFile);<br>
                $localfile = '..'.$remotefile;<br>
                $remotedir = preg_replace('/[^\/]*\.html/', '',$remotefile);<br>
                //不相等则说明已经切换目录则可以创建镜像<br>
                $this-&gt;ftp-&gt;rmkdir($remotedir);<br>
                $this-&gt;ftp-&gt;upload($localfile, $remotefile, 'acii');<br>
                }<br>
                }<br>
                }<br>
                return $this-&gt;GetTrueUrl($makeUrl);<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function DisplayPartTemplets()<br>
                {<br>
                $this-&gt;PartView = new PartView($this-&gt;TypeID,false);<br>
                $this-&gt;PartView-&gt;SetTypeLink($this-&gt;TypeLink);<br>
                $nmfa = 0;<br>
                $tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'];<br>
                if($this-&gt;Fields['ispart']==1)<br>
                {<br>
                //封面模板<br>
                $tempfile = str_replace("{tid}",$this-&gt;TypeID,$this-&gt;Fields['tempindex']);<br>
                $tempfile = str_replace("{cid}",$this-&gt;ChannelUnit-&gt;ChannelInfos['nid'],$tempfile);<br>
                $tempfile = $tmpdir."/".$tempfile;<br>
                if(!file_exists($tempfile))<br>
                {<br>
                $tempfile = $tmpdir."/".$GLOBALS['cfg_df_style']."/index_default.htm";<br>
                }<br>
                $this-&gt;PartView-&gt;SetTemplet($tempfile);<br>
                }<br>
                else if($this-&gt;Fields['ispart']==2)<br>
                {<br>
                //跳转网址<br>
                $gotourl = $this-&gt;Fields['typedir'];<br>
                header("Location:$gotourl");<br>
                exit();<br>
                }<br>
                CreateDir(MfTypedir($this-&gt;Fields['typedir']));<br>
                $makeUrl = $this-&gt;GetMakeFileRule($this-&gt;Fields['id'],"index",MfTypedir($this-&gt;Fields['typedir']),$this-&gt;Fields['defaultname'],$this-&gt;Fields['namerule2']);<br>
                $makeFile = $this-&gt;GetTruePath().$makeUrl;<br>
                if($nmfa==0)<br>
                {<br>
                $this-&gt;PartView-&gt;Display();<br>
                }<br>
                else<br>
                {<br>
                if(!file_exists($makeFile))<br>
                {<br>
                $this-&gt;PartView-&gt;Display();<br>
                }<br>
                else<br>
                {<br>
                include($makeFile);<br>
                }<br>
                }<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function GetTruePath()<br>
                {<br>
                $truepath = $GLOBALS["cfg_basedir"];<br>
                return $truepath;<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function GetTrueUrl($nurl)<br>
                {<br>
                if($this-&gt;Fields['moresite']==1)<br>
                {<br>
                if($this-&gt;Fields['sitepath']!='')<br>
                {<br>
                $nurl = preg_replace("/^".$this-&gt;Fields['sitepath']."/", '', $nurl);<br>
                }<br>
                $nurl = $this-&gt;Fields['siteurl'].$nurl;<br>
                }<br>
                return $nurl;<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function ParseTempletsFirst()<br>
                {<br>
                if(isset($this-&gt;TypeLink-&gt;TypeInfos['reid']))<br>
                {<br>
                $GLOBALS['envs']['reid'] = $this-&gt;TypeLink-&gt;TypeInfos['reid'];<br>
                }<br>
                $GLOBALS['envs']['typeid'] = $this-&gt;TypeID;<br>
                $GLOBALS['envs']['topid'] = GetTopid($this-&gt;Fields['typeid']);<br>
                $GLOBALS['envs']['cross'] = 1;<br>
                MakeOneTag($this-&gt;dtp,$this);<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function ParseDMFields($PageNo,$ismake=1)<br>
                {<br>
                //替换第二页后的内容<br>
                if(($PageNo&gt;1 || strlen($this-&gt;Fields['content'])&lt;10 ) &amp;&amp; !$this-&gt;IsReplace)<br>
                {<br>
                $this-&gt;dtp-&gt;SourceString = str_replace('','display:none',$this-&gt;dtp-&gt;SourceString);<br>
                $this-&gt;IsReplace = true;<br>
                }<br>
                foreach($this-&gt;dtp-&gt;CTags as $tagid=&gt;$ctag)<br>
                {<br>
                if($ctag-&gt;GetName()=="list")<br>
                {<br>
                $limitstart = ($this-&gt;PageNo-1) * $this-&gt;PageSize;<br>
                $row = $this-&gt;PageSize;<br>
                if(trim($ctag-&gt;GetInnerText())=="")<br>
                {<br>
                $InnerText = GetSysTemplets("list_fulllist.htm");<br>
                }<br>
                else<br>
                {<br>
                $InnerText = trim($ctag-&gt;GetInnerText());<br>
                }<br>
                $this-&gt;dtp-&gt;Assign($tagid,<br>
                $this-&gt;GetArcList(<br>
                $limitstart,<br>
                $row,<br>
                $ctag-&gt;GetAtt("col"),<br>
                $ctag-&gt;GetAtt("titlelen"),<br>
                $ctag-&gt;GetAtt("infolen"),<br>
                $ctag-&gt;GetAtt("imgwidth"),<br>
                $ctag-&gt;GetAtt("imgheight"),<br>
                $ctag-&gt;GetAtt("listtype"),<br>
                $ctag-&gt;GetAtt("orderby"),<br>
                $InnerText,<br>
                $ctag-&gt;GetAtt("tablewidth"),<br>
                $ismake,<br>
                $ctag-&gt;GetAtt("orderway"),<br>
                $ctag-&gt;GetAtt("noflag")<br>
                )<br>
                );<br>
                }<br>
                else if($ctag-&gt;GetName()=="pagelist")<br>
                {<br>
                $list_len = trim($ctag-&gt;GetAtt("listsize"));<br>
                $ctag-&gt;GetAtt("listitem")=="" ? $listitem="index,pre,pageno,next,end,option" : $listitem=$ctag-&gt;GetAtt("listitem");<br>
                if($list_len=="")<br>
                {<br>
                $list_len = 3;<br>
                }<br>
                if($ismake==0)<br>
                {<br>
                $this-&gt;dtp-&gt;Assign($tagid,$this-&gt;GetPageListDM($list_len,$listitem));<br>
                }<br>
                else<br>
                {<br>
                $this-&gt;dtp-&gt;Assign($tagid,$this-&gt;GetPageListST($list_len,$listitem));<br>
                }<br>
                }<br>
                else if($PageNo!=1 &amp;&amp; $ctag-&gt;GetName()=='field' &amp;&amp; $ctag-&gt;GetAtt('display')!='')<br>
                {<br>
                $this-&gt;dtp-&gt;Assign($tagid,'');<br>
                }<br>
                }<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function GetMakeFileRule($typeid,$wname,$typedir,$defaultname,$namerule2)<br>
                {<br>
                $typedir = MfTypedir($typedir);<br>
                if($wname=='index')<br>
                {<br>
                return $typedir.'/'.$defaultname;<br>
                }<br>
                else<br>
                {<br>
                $namerule2 = str_replace('{tid}',$typeid,$namerule2);<br>
                $namerule2 = str_replace('{typedir}',$typedir,$namerule2);<br>
                return $namerule2;<br>
                }<br>
                }&lt;/p&gt; &lt;p&gt; <br>
                function GetArcList($limitstart=0,$row=10,$col=1,$titlelen=30,$infolen=250,<br>
                $imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$innertext="",$tablewidth="100",$ismake=1,$orderWay='desc',$noflag='')<br>
                {<br>
                global $cfg_list_son,$cfg_digg_update;<br>
                $noflags = explode(',', $noflag);<br>
                $noflagsql = '';<br>
                for($i=0;$i&lt;count($noflags);$i++)<br>
                {<br>
                $noflagsql .= "And arc.flag not like '%{$noflags[$i]}%' ";<br>
                } <br>
                $typeid=$this-&gt;TypeID;<br><br>
                if($row=='') $row = 10;<br>
                if($limitstart=='') $limitstart = 0;<br>
                if($titlelen=='') $titlelen = 100;<br>
                if($infolen=='') $infolen = 250;<br>
                if($imgwidth=='') $imgwidth = 120;<br>
                if($imgheight=='') $imgheight = 120;<br>
                if($listtype=='') $listtype = 'all';<br>
                if($orderWay=='') $orderWay = 'desc';<br><br>
                if($orderby=='') {<br>
                $orderby='default';<br>
                }<br>
                else {<br>
                $orderby=strtolower($orderby);<br>
                }<br><br>
                $tablewidth = str_replace('%','',$tablewidth);<br>
                if($tablewidth=='') $tablewidth=100;<br>
                if($col=='') $col=1;<br>
                $colWidth = ceil(100/$col);<br>
                $tablewidth = $tablewidth.'%';<br>
                $colWidth = $colWidth.'%';<br><br>
                $innertext = trim($innertext);<br>
                if($innertext=='') {<br>
                $innertext = GetSysTemplets('list_fulllist.htm');<br>
                }&lt;/p&gt; &lt;p&gt;//排序方式<br>
                $ordersql = '';<br>
                if($orderby=="senddate" || $orderby=="id") {<br>
                $ordersql=" ORDER BY arc.id $orderWay";<br>
                }<br>
                else if($orderby=="hot" || $orderby=="click") {<br>
                $ordersql = " ORDER BY arc.click $orderWay";<br>
                }<br>
                else if($orderby=="lastpost") {<br>
                $ordersql = " ORDER BY arc.lastpost $orderWay";<br>
                }<br>
                else {<br>
                $ordersql=" ORDER BY arc.sortrank $orderWay";<br>
                }&lt;/p&gt; &lt;p&gt;//获得附加表的相关信息<br>
                $addtable = $this-&gt;ChannelUnit-&gt;ChannelInfos['addtable'];<br>
                if($addtable!="")<br>
                {<br>
                $addJoin = " LEFT JOIN `$addtable` ON arc.id = ".$addtable.'.aid ';<br>
                $addField = '';<br>
                $fields = explode(',',$this-&gt;ChannelUnit-&gt;ChannelInfos['listfields']);<br>
                foreach($fields as $k=&gt;$v)<br>
                {<br>
                $nfields[$v] = $k;<br>
                }<br>
                if(is_array($this-&gt;ChannelUnit-&gt;ChannelFields) &amp;&amp; !empty($this-&gt;ChannelUnit-&gt;ChannelFields))<br>
                {<br>
                foreach($this-&gt;ChannelUnit-&gt;ChannelFields as $k=&gt;$arr)<br>
                {<br>
                if(isset($nfields[$k]))<br>
                {<br>
                if(!empty($arr['rename'])) {<br>
                $addField .= ','.$addtable.'.'.$k.' as '.$arr['rename'];<br>
                }<br>
                else {<br>
                $addField .= ','.$addtable.'.'.$k;<br>
                }<br>
                }<br>
                }<br>
                }<br>
                }<br>
                else<br>
                {<br>
                $addField = '';<br>
                $addJoin = '';<br>
                }&lt;/p&gt; &lt;p&gt;//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)<br>
                if(preg_match('/hot|click|lastpost/', $orderby))<br>
                {<br>
                $query = "Select arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,<br>
                tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath<br>
                $addField<br>
                from `dede_archives` arc<br>
                left join `dede_arctype` tp on arc.typeid=tp.id<br>
                $addJoin<br>
                where {$this-&gt;addSql} $noflagsql $ordersql limit $limitstart,$row";<br>
                }<br>
                //普通情况先从arctiny表查出ID,然后按ID查询(速度非常快)<br>
                else<br>
                {<br>
                $numquery = "Select id From `dede_archives` arc where {$this-&gt;addSql} $noflagsql $ordersql";<br>
                $this-&gt;dsql-&gt;SetQuery($numquery);<br>
                $this-&gt;dsql-&gt;Execute();<br>
                while($arr=$this-&gt;dsql-&gt;GetArray())<br>
                {<br>
                $fuck[] = $arr['id'];<br>
                }<br>
                $this-&gt;TotalResult = count($fuck);<br>
                $t1 = ExecTime();<br>
                $ids = array();<br>
                $query = "Select id From `dede_archives` arc where {$this-&gt;addSql} $noflagsql $ordersql limit $limitstart,$row ";<br>
                $this-&gt;dsql-&gt;SetQuery($query);<br>
                $this-&gt;dsql-&gt;Execute();<br>
                while($arr=$this-&gt;dsql-&gt;GetArray())<br>
                {<br>
                $ids[] = $arr['id'];<br>
                }<br>
                $idstr = join(',',$ids);<br>
                if($idstr=='')<br>
                {<br>
                return '';<br>
                }<br>
                else<br>
                {<br>
                $query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,<br>
                tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath<br>
                $addField<br>
                from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id<br>
                $addJoin<br>
                where arc.id in($idstr) $noflagsql $ordersql ";<br>
                }<br>
                $t2 = ExecTime();<br>
                //echo $t2-$t1;&lt;/p&gt; &lt;p&gt;}<br>
                $this-&gt;dsql-&gt;SetQuery($query);<br>
                $this-&gt;dsql-&gt;Execute('al');<br>
                $t2 = ExecTime();&lt;/p&gt; &lt;p&gt;//echo $t2-$t1;<br>
                $artlist = '';<br>
                $this-&gt;dtp2-&gt;LoadSource($innertext);<br>
                $GLOBALS['autoindex'] = 0;<br>
                for($i=0;$i&lt;$row;$i++)<br>
                {<br>
                if($col&gt;1)<br>
                {<br>
                $artlist .= "&lt;div&gt;\r\n";<br>
                }<br>
                for($j=0;$j&lt;$col;$j++)<br>
                {<br>
                if($row = $this-&gt;dsql-&gt;GetArray("al"))<br>
                {<br>
                $GLOBALS['autoindex']++;<br>
                $ids[$row['id']] = $row['id'];&lt;/p&gt; &lt;p&gt;//处理一些特殊字段<br>
                $row['infos'] = cn_substr($row['description'],$infolen);<br>
                $row['id'] = $row['id'];<br>
                if($cfg_digg_update &gt; 0)<br>
                {<br>
                $prefix = 'diggCache';<br>
                $key = 'aid-'.$row['id'];<br>
                $cacherow = GetCache($prefix, $key);<br>
                $row['goodpost'] = $cacherow['goodpost'];<br>
                $row['badpost'] = $cacherow['badpost'];<br>
                $row['scores'] = $cacherow['scores'];<br>
                }&lt;/p&gt; &lt;p&gt;if($row['corank'] &gt; 0 &amp;&amp; $row['arcrank']==0)<br>
                {<br>
                $row['arcrank'] = $row['corank'];<br>
                }&lt;/p&gt; &lt;p&gt;$row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],<br>
                $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);<br>
                $row['typeurl'] = GetTypeUrl($row['typeid'],MfTypedir($row['typedir']),$row['isdefault'],$row['defaultname'],<br>
                $row['ispart'],$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);<br>
                if($row['litpic'] == '-' || $row['litpic'] == '')<br>
                {<br>
                $row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';<br>
                }<br>
                if(!preg_match("/^http:\/\//i", $row['litpic']) &amp;&amp; $GLOBALS['cfg_multi_site'] == 'Y')<br>
                {<br>
                $row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];<br>
                }<br>
                $row['picname'] = $row['litpic'];<br>
                $row['stime'] = GetDateMK($row['pubdate']);<br>
                $row['typelink'] = "&lt;a href='".$row['typeurl']."'&gt;".$row['typename']."&lt;/a&gt;";<br>
                $row['image'] = "&lt;img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight'&gt;
                 </div>
</div>
<div class="tags mb10 clearfix">
        <ul class="meta-tags items" style='margin: 0px; padding-right: 0px; padding-left: 0px; outline: none; list-style: none; max-width: 500px; line-height: 12px; font-family: tahoma, arial, "Microsoft YaHei";'></ul>
</div>
<p>
         </p>
頁: [1]
查看完整版本: dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章