DANHAND

图书馆系统

交流群: 208922879
技术QQ: 1379962711

lib分类

推荐lib

实现文章终极分类显示

 

[原创]实现文章终极分类显示的方法
 
接触jtbc有一个多月了,很好....再次感谢jtbc!
这几天结合网上的强贴解决了以下问题,拿来与大家共享:
1.利用isort函数和itransfer函数实现网站自动生成目录和相应目录的办法,思路是(说明我的模块名为news):
利用两次isort函数,在module.list节点中加入函数
==========
{$=isort("tpl=1_2;rnum=1;class=" & request("classid"))}
============
注意上面的tpl=1_2很关键,(.tpl.tpl_sort.1_2)节点,1_2节点内容为
=============
<table border="0" width="100%" cellpadding="0" cellspacing="0" class="lrbtline">{$}
{$$}          
<tr><td height="25" class="tbh"><img src="{$global.images}public/small/pointblue.gif" border="0"><a href="{$=curl("{$baseurl}", iurl('list', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype}'))}" target="_self">{$sort}</a></td>
  </tr>
    <tr>
    <td>{$=itransfer('top', 'my_sort_2', 'topx=10;tnum=50;genre=news;osql= and [jtb_aclass] in("&{$id}&")')}
</td>
              </tr>{$$}{$}
            </table>
======
注意里面有一个my_sort_2的节点,内容为公用调用模版中的节点.tpl.tpl_transfer.my_sort_2
====================
<table border="0" width="100%" cellpadding="0" cellspacing="0" >{$}
  <tr>{$$}
    <td class="tda"><img src="{$global.images}public/small/sico.gif" border="0"><a href="{$=curl("{$baseurl}", iurl('detail', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype};time={$time}'))}" target="_self">{$topic}</a>(阅读:{$count})</td><td align="right" class="tda">{$=format_date("{$time}",1)}</td>{$$}
  </tr>{$}
</table>
=================
这样文章类和相应类的文章列表就自动生成了,但美中不足的是当运行到没有子类的时候(我称为终极类别),显示类别为空,此时无法生成下一级列表.导致终极类显示不好看.
经过我昨天到今天的思索,终于实现了终极文章显示的问题.这是我主要想讲的
2.实现文章终极列表页的思路和方法:
思路:1实现了有子类的情况,但在终极列表出现时却还是使用list模版,系统只有两种模式,list类模版和详细页detail模式.
我在list模式中加了些改进,即在调入处理模版前先断定是否为终极类,若为非终极类,按原LIST模版处理,若为终极类,则按我们的终极类模版(我定义此终极类的模版节点为lastlist)

///修改方法
1.修改/common/incfiles/目录下的module_config.asp处理程序.<font class="red">

Function jtb_cms_module_list()
  Dim classid, classids
  classid = get_num(request.querystring("classid"),0)
  classids = get_sortids(ngenre, nlng)
    '目前默认是处理有子类的列表类,遇到终极列表类则显示不友好,故作以下改进
    '判断是否为终极类,是则继续下去,否则,调用终极模版
    '判断方法:判断当前sortid的值是否存在于sort_fid字段中,注意此时必须加上此ID的类型值sort_genre为条件
    '即此类型中的父ID是否存在,若存在,则为非终极类,继续执行此列表;若为空说明此为终极列表,则调用终极模版
  
Dim tmpstr, tmpastr, tmprstr, tmptstr
'============================加入代码部分<font class="red"> 
  Dim mygenre,myrs,mysqlstr
    mygenre  ="news" '直接指定模块名,注意不同类别模块名称字不同
    set myrs=server.createobject("adodb.recordset")
    mysqlstr="select * from jtb_sys_sort  where sort_fsid ="&classid& " and sort_genre ='"&mygenre&"' and sort_hidden =0"
  Set myrs = conn.Execute(mysqlstr)
If Not myrs.eof Then '非终极列表 
  tmpstr = itake("module.list", "tpl") '将模版module文件中的list节点的内容输出来
' Call client_alert("intolist", -1)
else  '为终极列表
  tmpstr = itake("module.lastlist", "tpl") '将终极模版中的module文件中的lastlist节点的内容输出来
  ' Call client_alert("success,intolastlish", -1)
end if
Set myrs = Nothing

'=====================下面的不变
tmpastr = ctemplate(tmpstr, "{$recurrence_ida}")
  sqlstr = "select top " & nlisttopx & " * from " & ndatabase & " where " & cfname("hidden") & "=0"
  If Not classid = 0 Then
  Then................
===========