分区导读页面的设计

发信人: [email protected] (六月麦田), 信区: BBSDev 
标  题: 一塌糊涂代码中分区导读页面的设计 
发信站: YTHT (Fri Feb 28 17:25:36 2003), 转信 
转信站: NJU!news.zixia.net!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] 
--

results matching ""

    No results matching ""