📄 arc.archives.class.php
字号:
}
$GLOBALS['envs']['keyword'] = $this->Fields['keywords'];
$GLOBALS['envs']['typeid'] = $this->Fields['typeid'];
$GLOBALS['envs']['topid'] = GetTopid($this->Fields['typeid']);
$GLOBALS['envs']['aid'] = $GLOBALS['envs']['id'] = $this->Fields['id'];
$GLOBALS['envs']['adminid'] = $GLOBALS['envs']['mid'] = $this->Fields['mid'];
$GLOBALS['envs']['channelid'] = $this->TypeLink->TypeInfos['channeltype'];
if($this->Fields['reid']>0)
{
$GLOBALS['envs']['typeid'] = $this->Fields['reid'];
}
MakeOneTag($this->dtp,$this);
}
//解析模板,对内容里的变动进行赋值
function ParseDMFields($pageNo,$ismake=1)
{
$this->NowPage = $pageNo;
if($this->SplitPageField!="" && isset($this->Fields[$this->SplitPageField]))
{
$this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1];
}
//解析模板
if(is_array($this->dtp->CTags))
{
foreach($this->dtp->CTags as $i=>$ctag)
{
if($ctag->GetName()=='field')
{
$this->dtp->Assign($i,$this->GetField($ctag->GetAtt('name')));
}
else if($ctag->GetName()=='pagebreak')
{
if($ismake==0)
{
$this->dtp->Assign($i,$this->GetPagebreakDM($this->TotalPage,$this->NowPage,$this->ArcID));
}
else
{
$this->dtp->Assign($i,$this->GetPagebreak($this->TotalPage,$this->NowPage,$this->ArcID));
}
}
else if($ctag->GetName()=='pagetitle')
{
if($ismake==0)
{
$this->dtp->Assign($i,$this->GetPageTitlesDM($ctag->GetAtt("style"),$pageNo));
}
else
{
$this->dtp->Assign($i,$this->GetPageTitlesST($ctag->GetAtt("style"),$pageNo));
}
}
else if($ctag->GetName()=='prenext')
{
$this->dtp->Assign($i,$this->GetPreNext($ctag->GetAtt('get')));
}
else if($ctag->GetName()=='fieldlist')
{
$innertext = trim($ctag->GetInnerText());
if($innertext=='') $innertext = GetSysTemplets('tag_fieldlist.htm');
$dtp2 = new DedeTagParse();
$dtp2->SetNameSpace('field','[',']');
$dtp2->LoadSource($innertext);
$oldSource = $dtp2->SourceString;
$oldCtags = $dtp2->CTags;
$res = '';
if(is_array($this->ChannelUnit->ChannelFields) && is_array($dtp2->CTags))
{
foreach($this->ChannelUnit->ChannelFields as $k=>$v)
{
if(isset($v['autofield']) && empty($v['autofield'])) {
continue;
}
$dtp2->SourceString = $oldSource;
$dtp2->CTags = $oldCtags;
$fname = $v['itemname'];
foreach($dtp2->CTags as $tid=>$ctag2)
{
if($ctag2->GetName()=='name')
{
$dtp2->Assign($tid,$fname);
}
else if($ctag2->GetName()=='tagname')
{
$dtp2->Assign($tid,$k);
}
else if($ctag2->GetName()=='value')
{
$this->Fields[$k] = $this->ChannelUnit->MakeField($k,$this->Fields[$k],$ctag2);
@$dtp2->Assign($tid,$this->Fields[$k]);
}
}
$res .= $dtp2->GetResult();
}
}
$this->dtp->Assign($i,$res);
}//end case
}//结束模板循环
}
}
//关闭所占用的资源
function Close()
{
$this->FixedValues = '';
$this->Fields = '';
}
//获取上一篇,下一篇链接
function GetPreNext($gtype='')
{
$rs = '';
if(count($this->PreNext)<2)
{
$aid = $this->ArcID;
$preR = $this->dsql->GetOne("Select id From `#@__arctiny` where id<$aid And arcrank>-1 And typeid='{$this->Fields['typeid']}' order by id desc");
$nextR = $this->dsql->GetOne("Select id From `#@__arctiny` where id>$aid And arcrank>-1 And typeid='{$this->Fields['typeid']}' order by id asc");
$next = (is_array($nextR) ? " where arc.id={$nextR['id']} " : ' where 1>2 ');
$pre = (is_array($preR) ? " where arc.id={$preR['id']} " : ' where 1>2 ');
$query = "Select arc.id,arc.title,arc.shorttitle,arc.typeid,arc.ismake,arc.senddate,arc.arcrank,arc.money,arc.filename,
t.typedir,t.typename,t.namerule,t.namerule2,t.ispart,t.moresite,t.siteurl,t.sitepath
from `#@__archives` arc left join #@__arctype t on arc.typeid=t.id ";
$nextRow = $this->dsql->GetOne($query.$next);
$preRow = $this->dsql->GetOne($query.$pre);
if(is_array($preRow))
{
$mlink = GetFileUrl($preRow['id'],$preRow['typeid'],$preRow['senddate'],$preRow['title'],$preRow['ismake'],$preRow['arcrank'],
$preRow['namerule'],$preRow['typedir'],$preRow['money'],$preRow['filename'],$preRow['moresite'],$preRow['siteurl'],$preRow['sitepath']);
$this->PreNext['pre'] = "上一篇:<a href='$mlink'>{$preRow['title']}</a> ";
}
else
{
$this->PreNext['pre'] = "上一篇:没有了 ";
}
if(is_array($nextRow))
{
$mlink = GetFileUrl($nextRow['id'],$nextRow['typeid'],$nextRow['senddate'],$nextRow['title'],$nextRow['ismake'],$nextRow['arcrank'],
$nextRow['namerule'],$nextRow['typedir'],$nextRow['money'],$nextRow['filename'],$nextRow['moresite'],$nextRow['siteurl'],$nextRow['sitepath']);
$this->PreNext['next'] = "下一篇:<a href='$mlink'>{$nextRow['title']}</a> ";
}
else
{
$this->PreNext['next'] = "下一篇:没有了 ";
}
}
if($gtype=='pre')
{
$rs = $this->PreNext['pre'];
}
else if($gtype=='next')
{
$rs = $this->PreNext['next'];
}
else
{
$rs = $this->PreNext['pre']." ".$this->PreNext['next'];
}
return $rs;
}
//获得动态页面分页列表
function GetPagebreakDM($totalPage,$nowPage,$aid)
{
global $cfg_rewrite;
if($totalPage==1)
{
return "";
}
$PageList = "<li><a>共".$totalPage."页: </a></li>";
$nPage = $nowPage-1;
$lPage = $nowPage+1;
if($nowPage==1)
{
$PageList.="<li><a href='#'>上一页</a></li>";
}
else
{
if($nPage==1)
{
$PageList.="<li><a href='view.php?aid=$aid'>上一页</a></li>";
if($cfg_rewrite == 'Y')
{
$PageList = preg_replace("/.php\?aid=(\d+)/i",'-\\1-1.html',$PageList);
}
}
else
{
$PageList.="<li><a href='view.php?aid=$aid&pageno=$nPage'>上一页</a></li>";
if($cfg_rewrite == 'Y')
{
$PageList = str_replace(".php?aid=","-",$PageList);
$PageList = preg_replace("/&pageno=(\d+)/i",'-\\1.html',$PageList);
}
}
}
for($i=1;$i<=$totalPage;$i++)
{
if($i==1)
{
if($nowPage!=1)
{
$PageList.="<li><a href='view.php?aid=$aid'>1</a></li>";
if($cfg_rewrite == 'Y')
{
$PageList = preg_replace("/.php\?aid=(\d+)/i",'-\\1-1.html',$PageList);
}
}
else
{
$PageList.="<li class=\"thisclass\"><a>1</a></li>";
}
}
else
{
$n = $i;
if($nowPage!=$i)
{
$PageList.="<li><a href='view.php?aid=$aid&pageno=$i'>".$n."</a></li>";
if($cfg_rewrite == 'Y')
{
$PageList = str_replace(".php?aid=","-",$PageList);
$PageList = preg_replace("/&pageno=(\d+)/i",'-\\1.html',$PageList);
}
}
else
{
$PageList.="<li class=\"thisclass\"><a href='#'>{$n}</a></li>";
}
}
}
if($lPage <= $totalPage)
{
$PageList.="<li><a href='view.php?aid=$aid&pageno=$lPage'>下一页</a></li>";
if($cfg_rewrite == 'Y')
{
$PageList = str_replace(".php?aid=","-",$PageList);
$PageList = preg_replace("/&pageno=(\d+)/i",'-\\1.html',$PageList);
}
}
else
{
$PageList.= "<li><a href='#'>下一页</a></li>";
}
return $PageList;
}
//获得静态页面分页列表
function GetPagebreak($totalPage,$nowPage,$aid)
{
if($totalPage==1)
{
return "";
}
$PageList = "<li><a>共".$totalPage."页: </a></li>";
$nPage = $nowPage-1;
$lPage = $nowPage+1;
if($nowPage==1)
{
$PageList.="<li><a href='#'>上一页</a></li>";
}
else
{
if($nPage==1)
{
$PageList.="<li><a href='".$this->NameFirst.".".$this->ShortName."'>上一页</a></li>";
}
else
{
$PageList.="<li><a href='".$this->NameFirst."_".$nPage.".".$this->ShortName."'>上一页</a></li>";
}
}
for($i=1;$i<=$totalPage;$i++)
{
if($i==1)
{
if($nowPage!=1)
{
$PageList.="<li><a href='".$this->NameFirst.".".$this->ShortName."'>1</a></li>";
}
else
{
$PageList.="<li class=\"thisclass\"><a href='#'>1</a></li>";
}
}
else
{
$n = $i;
if($nowPage!=$i)
{
$PageList.="<li><a href='".$this->NameFirst."_".$i.".".$this->ShortName."'>".$n."</a></li>";
}
else
{
$PageList.="<li class=\"thisclass\"><a href='#'>{$n}</a></li>";
}
}
}
if($lPage <= $totalPage)
{
$PageList.="<li><a href='".$this->NameFirst."_".$lPage.".".$this->ShortName."'>下一页</a></li>";
}
else
{
$PageList.= "<li><a href='#'>下一页</a></li>";
}
return $PageList;
}
//获得动态页面小标题
function GetPageTitlesDM($styleName,$pageNo)
{
if($this->TotalPage==1)
{
return "";
}
if(count($this->SplitTitles)==0)
{
return "";
}
$i=1;
$aid = $this->ArcID;
if($styleName=='link')
{
$revalue = "";
foreach($this->SplitTitles as $k=>$v)
{
if($i==1)
{
$revalue .= "<a href='view.php?aid=$aid&pageno=$i'>$v</a> \r\n";
}
else
{
if($pageNo==$i)
{
$revalue .= " $v \r\n";
}
else
{
$revalue .= "<a href='view.php?aid=$aid&pageno=$i'>$v</a> \r\n";
}
}
$i++;
}
}
else
{
$revalue = "<select id='dedepagetitles' onchange='location.href=this.options[this.selectedIndex].value;'>\r\n";
foreach($this->SplitTitles as $k=>$v)
{
if($i==1)
{
$revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i'>{$i}、{$v}</option>\r\n";
}
else
{
if($pageNo==$i)
{
$revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i' selected>{$i}、{$v}</option>\r\n";
}
else
{
$revalue .= "<option value='".$this->Fields['phpurl']."/view.php?aid=$aid&pageno=$i'>{$i}、{$v}</option>\r\n";
}
}
$i++;
}
$revalue .= "</select>\r\n";
}
return $revalue;
}
//获得静态页面小标题
function GetPageTitlesST($styleName,$pageNo)
{
if($this->TotalPage==1)
{
return "";
}
if(count($this->SplitTitles)==0)
{
return "";
}
$i=1;
if($styleName=='link')
{
$revalue = "";
foreach($this->SplitTitles as $k=>$v)
{
if($i==1)
{
$revalue .= "<a href='".$this->NameFirst.".".$this->ShortName."'>$v</a> \r\n";
}
else
{
if($pageNo==$i)
{
$revalue .= " $v \r\n";
}
else
{
$revalue .= "<a href='".$this->NameFirst."_".$i.".".$this->ShortName."'>$v</a> \r\n";
}
}
$i++;
}
}
else
{
$revalue = "<select id='dedepagetitles' onchange='location.href=this.options[this.selectedIndex].value;'>\r\n";
foreach($this->SplitTitles as $k=>$v)
{
if($i==1)
{
$revalue .= "<option value='".$this->NameFirst.".".$this->ShortName."'>{$i}、{$v}</option>\r\n";
}
else
{
if($pageNo==$i)
{
$revalue .= "<option value='".$this->NameFirst."_".$i.".".$this->ShortName."' selected>{$i}、{$v}</option>\r\n";
}
else
{
$revalue .= "<option value='".$this->NameFirst."_".$i.".".$this->ShortName."'>{$i}、{$v}</option>\r\n";
}
}
$i++;
}
$revalue .= "</select>\r\n";
}
return $revalue;
}
/**
* 高亮问题修正, 排除alt title <a></a>直接的字符替换
*
* @param string $kw
* @param string $body
* @return string
*/
function ReplaceKeyword($kw,&$body)
{
global $cfg_cmspath;
$maxkey = 5;
$kws = explode(",",trim($kw)); //以分好为间隔符
$i=0;
$karr = $kaarr = array();
//暂时屏蔽超链接
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
foreach($kws as $k)
{
$k = trim($k);
if($k!="")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne("select * from #@__keywords where keyword='$k' And rpurl<>'' ");
if(is_array($myrow))
{
$karr[] = $k;
$kaarr[] = "<a href='{$myrow['rpurl']}'><u>$k</u></a>";
}
$i++;
}
}
$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
//恢复超链接
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
return $body;
}
}//End Archives
//高亮专用
function _highlight($string, $words, $result, $pre)
{
$string = str_replace('\"', '"', $string);
$string = str_replace($words, $result, $string);
return $pre.$string;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -