讓dedecms實現shtml包含,這個是十分簡單,也是十分輕松的一個問題。我們可以通過對dedecms的二次開發,實現對dedecms頂部導航,中間部分,右邊公共部分,以及底部,都有一個很好的支持,從而減少html生成的時候頻繁的消耗系統資源去生成dedecms的html功能。這樣可以加快dedecms生成html的速度。
首先我們要實現一個對dedecms欄目右邊實現shtml包含。有關dedecms配置shtml環境,上篇文章都講述過了。
1:首先建立右邊公共模板templates/default/right.htm
2:編寫以下標簽
代碼如下:
function lib_shtml(&$ctag,&$refObj)
{
if(isset($_GET['tid'])){
return file_get_contents('../data/'.$refObj->Fields['id'].'right.htm');
}else{
return '<!--#include virtual="'.$GLOBALS['cfg_cmspath'].'/data/'.$refObj->Fields['id'].'right.htm"-->';
}
}
3:生成欄目的時候,生成對應欄目的右邊。
arc.listview.class.php
代碼如下:
var $tcp1;
var $tcp3;</p> <p> $this->tcp1 = new DedeTagParse();
$this->tcp1->SetRefObj($this);
$this->tcp1->SetNameSpace("dede", "{", "}");
加載right.htm模板
$this->tcp1->LoadTemplate($GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/right.htm");
生成html
$file = $this->Fields['id'].'right.htm';
$rightfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_cmspath']."/data/".$file;
if(!file_exists($rightfile)){
$this->tcp1->SaveTo($rightfile);
}else{
if((time()-filectime($rightfile))>3600){
$this->tcp1->SaveTo($rightfile);
}
}
給模板賦值MakeOneTag($this->tcp1,$this);
4:模板中直接調用{dede:shtml/}
後台生成,就完成了讓dedecms實現shtml包含
*