織夢DEDECMS清單頁首頁跟其它頁使用不同模闆的辦法
推薦學習:織夢cms
有些時候我們需要使清單頁的首頁跟第二頁以及後面的頁面的樣式不同,修改dede:list标簽又很難達到理想的效果,那麼織夢貓就為大家介紹一個最簡單的辦法,就是為首頁單獨指定一個模闆頁,其餘頁面則調用另一個模闆頁。
修改的辦法如下:
打開include目錄下的arc.listview.class.php檔案,找到Display函數(大約在397行),找到如下代碼:
1 | $this->ParseTempletsFirst(); | |
在這些代碼的上方添加以下代碼:
5 | $tempfile = $GLOBALS[ 'cfg_basedir' ].$GLOBALS[ 'cfg_templets_dir' ]. "/" .$GLOBALS[ 'cfg_df_style' ]. "/list_article2.htm" ; | 7 | $this->dtp->LoadTemplate($tempfile); | |
添加之後,在頁數大于1時,織夢就會調用list_article2.htm來作為清單頁模闆了。
添加以上代碼後,在動态浏覽欄目時已可以實作,但會發現生成欄目靜态HTML頁後,仍然沒有達到預期目的,
搜尋如下代碼:
2 | $this->ParseDMFields($this->PageNo,1); | |
在這句代碼的上方添加以下代碼:
05 | $tempfile = $GLOBALS[ 'cfg_basedir' ].$GLOBALS[ 'cfg_templets_dir' ]. "/" .$GLOBALS[ 'cfg_df_style' ]. "/list_article2.htm" ; | 07 | $this->dtp->LoadTemplate($tempfile); | 09 | $this->ParseTempletsFirst(); | |
好了,現在無論是靜态頁還是動态頁都達到理想的效果了。
可能還會有疑問,如果一個欄目有多個清單頁模闆,難道每個欄目清單頁的第二頁都用list_article2.htm來作為模闆?
解決辦法:
将
2 | $tempfile = $GLOBALS[ 'cfg_basedir' ].$GLOBALS[ 'cfg_templets_dir' ]. "/" .$GLOBALS[ 'cfg_df_style' ]. "/list_article2.htm" ; | |
改為:
01 | $tmpdir = $GLOBALS[ 'cfg_basedir' ].$GLOBALS[ 'cfg_templets_dir' ]; | 03 | $tempfile = str_replace( "{tid}" ,$this->TypeID,$this->Fields[ 'templist' ]); | 05 | $tempfile = str_replace( "{cid}" ,$this->ChannelUnit->ChannelInfos[ 'nid' ],$tempfile); | 07 | $tempfile = $tmpdir. "/" .$tempfile; | 09 | $tmpfile2 = substr($tempfile,0,-4); | 11 | $tempfile = $tmpfile2. "2.htm" ; | |
現在就會自動去擷取清單頁模闆後面加了2的模闆,例如清單頁的模闆是list_image.htm,那麼第二頁的模闆就是list_image.htm。
這樣,就友善多了。