首页 › 程序设计 › php

dedecms专题文章列表的模板修改

泡在网上的日子 / 文 发表于2012-04-18 11:28 次阅读 dedecms

如果没有进行特别的设置,专题的文章列表显示默认是采用的default下面的article_spec.htm文件作为模板。
 
这个模板文件很简单,前面是该专题的一些信息,下面是分割线,分割线以下就是现实节点和节点文章的模块。
 
这个模块按理说应该是专题模板最重要的内容,可是只有下面几行:
<div class="speciallist">
  {dede:field.note/}
</div>
实在是让人出乎意料-这让人怎么改啊,连html标签都看不到。虽然不满,但是既然用了dedecms,就只能这样了,也许作者是希望减少用户的工作量吧,可以理解。
 
要灵活的修改这个页面显示节点文章的样式,我想到了两种办法:
  1. 直接在浏览器显示该页面时查看html代码的方式。
 
不管你后台是如何做的,显示在浏览器上的才是最终结果。所以我只需看你最终的html代码,查看用到了那些html元素,在将相关元素的css写在样式表里面。这里有点小技巧,用firefox的firebug可以很容易的完成这个工作,至于怎么用,这里就不讲解了,可以直接百度。
 
  •  
 
                            <dl class="tbox">
                                     <dt><strong>节点名称</strong></dt>
                                     <dd>
                                               <ul class="d1 ico3">
                             节点文章列表
                                               </ul>
                                     </dd>
                            </dl>
知道这个以后,修改样式应该不难了吧。
 
  1. 虽然上诉的方法不麻烦,但是总觉得不灵活。那我们直接看源码,然后随意的修改吧。
 
 
处理专题主题调用标签{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代码和在浏览器查看的几乎一模一样:
                       <dl class="tbox">
                                     <dt><strong>~notename~</strong></dt>
                                     <dd>
                                               <ul class="d1 ico3">
                             ~spec_arclist~
                                               </ul>
                                     </dd>
                            </dl>
 
在实际运行的时候notename会被替换成节点名,~spec_arclist~
会被替换成节点文章超链接。~spec_arclist~其实是一个字符串:形如<li>文章超链接</li>
找到这个文件可以修改除了li之外的所以html元素,但是li我们还是不能为其加上类和id。
这个应该是在处理的php代码里面。未完待续。。。
收藏 赞 (1) 踩 (0)
上一篇:dedecms源码分析之文章列表arclist_lib.php
这个文件负责显示文章的列表。 包括GetArclistCache(),lib_arclist(),lib_arclistDone(),lib_GetAutoChannelID(),list_sort_by()五个函数。 这五个函数的调用关系是 lib_arclist()-lib_GetAutoChannelID ; lib_arclist()-lib_arclistDone(); lib_GetAutoChann
下一篇:优化PHP程序的方法
1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 2. echo is faster than print. echo 比 print 快。 3. Use echos multiple parameters instead o