dedecms專題文章列表的模板修改
如果沒有進行特別的設定,專題的文章列表顯示預設是採用的default下面的article_spec.htm檔案作為模板。
這個模板檔案很簡單,前面是該專題的一些資訊,下面是分割線,分割線以下就是現實節點和節點文章的模組。
這個模組按理說應該是專題模板最重要的內容,可是隻有下面幾行:
<divclass="speciallist">
{dede:field.note/}
</div>
實在是讓人出乎意料-這讓人怎麼改啊,連html標籤都看不到。雖然不滿,但是既然用了dedecms,就只能這樣了,也許作者是希望減少使用者的工作量吧,可以理解。
要靈活的修改這個頁面顯示節點文章的樣式,我想到了兩種辦法:
1. 直接在瀏覽器顯示該頁面時檢視html程式碼的方式。
不管你後臺是如何做的,顯示在瀏覽器上的才是最終結果。所以我只需看你最終的html程式碼,檢視用到了那些html元素,在將相關元素的css寫在樣式表裡面。這裡有點小技巧,用firefox的firebug可以很容易的完成這個工作,至於怎麼用,這裡就不講解了,可以直接百度。
原來在最中的頁面裡面,節點文章列表的顯示是這麼幾行程式碼:
<dlclass="tbox">
<dt><strong>
<dd>
<ulclass="d1 ico3">
節點文章列表
</ul>
</dd>
</dl>
知道這個以後,修改樣式應該不難了吧。
2. 雖然上訴的方法不麻煩,但是總覺得不靈活。那我們直接看原始碼,然後隨意的修改吧。
處理專題主題呼叫標籤{dede:field.note/}的php檔案是include/taglib/channel/specialtopic.lib.php.
找到ch_specialtopic()函式的第五行
$tempStr =GetSysTemplets('channel_spec_note.htm');
從這裡可以看到channel_spec_note.htm這個檔案決定了節點和節點文章的顯示。
channel_spec_note.htm檔案放在系統模板檔案裡面templets/system/channel_spec_note.htm
開啟該檔案我們發現裡面的html程式碼和在瀏覽器檢視的幾乎一模一樣:
<dlclass="tbox">
<dt><strong>~notename~</strong></dt>
<dd>
<ulclass="d1 ico3">
~spec_arclist~
</ul>
</dd>
</dl>
在實際執行的時候notename會被替換成節點名,~spec_arclist~
會被替換成節點文章超連結。~spec_arclist~其實是一個字串:形如<li>文章超連結</li>
找到這個檔案可以修改除了li之外的所以html元素,但是li我們還是不能為其加上類和id。
這個應該是在處理的php程式碼裡面。
46行附近有這一句程式碼:
$listTemplet = trim($ctag->GetInnerText())!=''? $ctag->GetInnerText() : GetSysTemplets('spec_arclist.htm');
GetSysTemplets('spec_arclist.htm');其實就是處理單條文章列表的模板了。
spec_arclist.htm是一個系統模板檔案。在templet/system/spec_arclist.htm下面,找到並開啟檔案
<li><span class="date">[field:typename/]</span><ahref="[field:arcurl /]" target="_blank">[field:title /]</a></li>
這就是我們要修改的地方了,你可以給li加上class,或者乾脆不要換成你想要的任何標籤。你還可以直接將這裡面的html程式碼放在 {dede:field.note/}裡面。