荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ylsdd.bbs@ytht.net (六月麦田), 信区: InstallBBS
标  题: 一塌糊涂代码中分区导读页面的设计
发信站: YTHT (Fri Feb 28 17:23:15 2003)
转信站: SZU!news.tiaozhan.com!news.happynet.org!YTHT


(请先阅读 <<一塌糊涂代码最近对版面分区方式的更改简介>>)

糊涂导读最初实现时是采用全站唯一导读方式:bbssec生成全站导读,
bbsboa显示各个分区的版面列表。但是在站点越来越复杂的情形下,
这样的唯一导读方式显得越来越不方便:
    1、bbssec显示的内容越来越多,使得页面体积变大,而用户查看
       起来也感觉杂乱。
    2、有些分区很庞大,但在bbssec中只能显示寥寥几条,不够用。
    3、bbsboa开列版面数目过多,相当多的版面因此得不到注意,更
       倾向萧条。

为改变这种情况,一塌糊涂代码中实现了树状目录结构,而先前的单一
WWW导读的方案也相应做了修改,从而可以为每个区实现定制的导读。
下面就新的导读的细节问题做一介绍。

1、现在导读全部由bbsboa调用来展示,废气bbssec。bbsboa工作流程是:
   1> bbsboa调用依照参数secstr从sectree(分区树)中选择相应的分区,
   2> 然后尝试读取“分区导读设置文件”,"wwwtmp/secpage.sec"+secstr。
      比如对根分区,这个就是 "wwwtmp/secpage.sec", 如果是原创区,
      secstr="Y",这个文件就是 "wwwtmp/secpage.secY"。
   3> 如果成功打开分区导读设置文件,就按照分区导读设置文件中的指令来显示
      分区导读
   4> 否则显示默认的分区导读。
(bbsboa分代码尚未清理干净,可以看到一些先前方案的残迹,不过过些日
子会清理掉)

2、分区导读设置文件由导读指令行和html代码组成。这些html代码仅包含
   <body>和</body>之间的内容(不包含<body>和</body>)。指令行被解释
   执行。html代码都被原样输出。
       指令行由首字母"#"来标记,后面紧接指令,如果指令之后有参数,
   则参数和指令中间相隔仅一个空格字符' '。目前实现有如下几种指令:
       #showsechead       //显示到其它大区的连接
       #showfile filename //插入文件到输出页面
       #showsecnav        //显示该区的精彩文章,未完全实现
       #showstarline 焦点·热点    //将"焦点·热点"前面配一个星号显示
       #showhotboard      //显示该区热门讨论区,未完全实现
       #showsecintro      //显示该分区各个子分区的导读,这个导读由
                          //local_utl/printSecLastMark程序生成,存储
                          //到文件"wwwtmp/lastmark.sec"+secstr中。
                          //参见下一段的介绍。
       #showblist         //显示该分区中不在子分区的那些版面。
                          //比如大区的管理版面,不适宜放到任何子分区中,
    举一个例子,糊涂原创区的分区字符串为secstr="Y",目前的分区导读设置
    文件wwwtmp/secpage.secY的内容为(每行前面那些空格在实际文件中是没有的):
        <center>
        #showsechead
        <!-- begin announce -->
        #showfile 0Announce/groups/GROUP_0/boardname/announce
        <!-- end announce -->
        <FONT class=f3><b>--== 讨论区导读 ==--</b></FONT>
        #showsecintro
        <hr>
        #showblist
3、printSecLastMark程序如何生成讨论区导读
    1> searchLastMark程序定时将各个版面中的精华文章提取出来,存到
       wwwtmp/lastmark/中去。
    2> printSecLastMark程序读取所有版面的精华文章列表。然后遍历
       sectree中的各个分区,如果分区sec的introstr不为空,就按照
       sec->introstr的次序依次将sec的各个子分区sec->subsec[i]的
       导读输出到"wwwtmp/lastmark.sec"+sec->basestr中去。
通常应该将searchLastMark; printSecLastMark放到crontab中去。
    3> sec->introstr由libythtbbs/seclist.txt中以*开头的那些行决定,
       seclist.txt应该依照各站的具体情形来设置。
           每次修改seclist.txt之后,应该在libythbbs中make install
       然后在local_utl中重新编译printSecLastMark,安装到bin中去,
       这样才能使之生效。


--
※ 修改:.ylsdd 于 Feb 28 17:23:15 修改本文.[FROM: 162.105.31.222]
※ 来源:.一塌糊涂 BBS http://ytht.net [FROM: 162.105.31.222]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店