有時候我們需要讓織夢列表頁的第一頁跟第二頁以及后面的頁面的展示效果不同,使用不同的模板,但是目前網上也沒有其他比較好的方案,那么下面織夢技術研究中心就給大家介紹一個最簡單的辦法,通過修改文件來為欄目列表頁第一頁單獨指定一個模板,其余頁面則調用另一個模板。
具體修改的文件以及代碼如下:
1、找到并打開include/arc.listview.class.php文件,在里面大約第397行的位置找到Display函數,找到如下代碼:
$this->ParseTempletsFirst();
|
在這句代碼的上面添加以下代碼:
if($this->PageNo>1){
$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/list_article2.htm";
$this->dtp->LoadTemplate($tempfile);
}
|
上面的代碼是判斷當列表頁數大于1時,織夢就會調用list_article2.htm來作為當前列表頁模板了。
2、添加以上代碼后,在動態瀏覽欄目時已經能夠成功實現了,但會生成欄目靜態HTML頁后,仍然不能正常調用,還需要繼續修改。我們繼續在include/arc.listview.class.php文件里面找到如下代碼:
$this->ParseDMFields($this->PageNo,1);
|
在這句代碼的上面添加以下代碼:
if($this->PageNo>1){
$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/list_article2.htm";
$this->dtp->LoadTemplate($tempfile);
$this->ParseTempletsFirst();
}
|
修改到這里之后無論是靜態頁還是動態頁都能達到理想的效果了。
3、但是如果多個內容模型使用了多個列表頁的模板,那么每個內容模型的欄目列表頁的第二頁都會用list_article2.htm來作為模板,這樣我們需要進行修改,具體如下:
將第1步跟第2步里面的下面這段代碼:
$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/list_article2.htm";
|
修改為:
$tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'];
$tempfile = str_replace("{tid}",$this->TypeID,$this->Fields['templist']);
$tempfile = str_replace("{cid}",$this->ChannelUnit->ChannelInfos['nid'],$tempfile);
$tempfile = $tmpdir."/".$tempfile;
$tmpfile2 = substr($tempfile,0,-4);
$tempfile = $tmpfile2."2.htm";
|
這樣系統就會自動去獲取當前內容模型列表頁模板后面加了2的模板,例如圖集列表頁的第一頁的模板是list_image.htm,那么圖集第二頁的模板就是list_image2.htm了,這樣,就方便多了。
|