绿野仙踪's Archiver

henry 发表于 2008-1-15 20:57

LEOBBS的論壇風格介面是如何做的??

阿喀大大
9J'N&L8VC{!m ~F%\[ 我想問, 如果LEOBBS的論壇風格介面是如何做的??
a7W.Sr0K0\0O 本想用現有風格更改, 但有亂馬問題.x+o)N4N7g F"@
七星的資料又沒有了, 你有沒有方法做介面 c S Oo1~d s
我的功力有限, 程序碼看不明白..P&[!u8t+E@2B"w/g5c
如果只是圖像, 我可有十足信心辦妥3g%U4@2_E2s/k*O&{
謝謝!!

阿喀琉斯 发表于 2008-1-16 01:12

leobbs的论坛界面其实很简单的。但是却比较琐碎。变量、代码、图片等散布在不同目录和配置文件里。要完整创作一套风格,各部分都要齐整,有时候需要反复调试~
*dU J8c-d
\g3`#Ea)W"E-u%cD0H W cgi-bin/data/myskin 这个目录里的配置文件主要定义了界面风格的顶部内容,也就是$yemei 和 $daohang ,以供 template 这个目录里的风格配置文件调用。ziy&m#g j'KvR

!uLc2^:E6n w cgi-bin/data/skin 这个目录里的配置文件主要对论坛风格的一些变量进行定义,比如颜色,字体等等。也是供 template 这个目录里的风格配置文件调用。论坛风格的名称和数量都是从这个目录里直接读取文件名。V$E4V&Vm5vs5X

-K6H.{4n6s7LK T1G cgi-bin/data/template 这个目录里就是标准的、主要的论坛风格配置文件了。仔细看这个文件里,其实定义了论坛界面中,主体内容前面和后面的全部代码,以及每个表格的上下部分的修饰条。 其中“$lbboard_main”这个变量就是论坛的主体内容了,随着访问页的不同,主体内容改变,其余的代码部分是不会变的。
v%~s*U,]O _#M|)sO.l~
风格配套的图片目录在 non-cgi/images 下,由前面的配置文件里的变量指定目录名。!s5] M`e)S
/Tc3^ OV l(E!ML{!g
综上所述,创作一套leobbs的风格还是比较麻烦的。最好的方法就是用现有风格修改。把现有风格复制一套,重新命名,包括第二个配置文件里的风格名称简写变量,中文名称,第一、三个配置文件和图片目录的简写名称,都要改掉,以免与现有风格重复。要保证一一对应。c,`,X0F8T e5O4R

5n2w4L.V)X+FE5u 然后根据你想要的效果来修改三个配置文件,和替换图片。第一个文件是修改界面的顶部的,第三个文件是控制总体效果的,第二个文件是修改字体之类的细节的。如果你对html网页制作有一定掌握的话,就能够很方便的修改和调试界面了。
RI\^$^ D6_T:i;\
4or,[Np u*n c 之所以你用现成的风格改会出现乱码,应该是因为这些风格通常是简体造成的。第三个配置文件里有一句:
&a&f W9t:Wp9J#{r <meta http-equiv="Content-Type" content="text/html; charset=gb2312">&Er4x kq
这里的“gb2312”已经指定了编码。你需要把它改为“big5”,然后就是需要把配置文件里的简体汉字替换成繁体字了。(当然,简体汉字在繁体操作系统上通常是乱码,需要翻译软件帮忙的)G3\GS6If b6N x
v;Qw.H _1?.OR(P
修改到这一步,如果刷新界面还是出现错误的话,就是很重要的一个原因了,说明你繁体化的汉字里包含了“冲码”。在perl编程中,某些特殊繁体汉字的编码会与perl的一些运行代码相同,这样就会造成perl程序运行失误,leobbs就无法正常显示了。因此,需要在leobbs程序里预先进行设置,用指定的变量来代替这些汉字,以便正常输出显示。这就叫冲码。
8v%p C"U Os nUV DJ2]5W k
繁化版的leobbs应该是预先内置了常见冲码的,大概是在bbs.lib.pl这个文件的开头部分吧,你看看先。我没有用过繁体版,所以不是很了解。“误”、“才”等等汉字都属于冲码。 s;G q![3Zd
你找到这些冲码的替换变量,然后在你的风格里找到有这样的汉字,用各自的对应变量一一替换就好了。cKVWg {1G

Sr6Du_{-i;f7G 以上简单说了说leobbs风格的制作。再讲几点我自己总结的leobbs代码编写的常见出错之处:-~DVF-N
u5s$cv4V
一、代码要对应,比如引号 " 开始的,一定要有另一个 " 来结束。否则程序会判断直到下一个 " 之间的全部内容为一句代码。同理,还包括定义符号 ~ 、括号 ( ) 、{ } ,等等;7Y3m6m$I+llV

L\-jg;f 二、一句代码结束的时候,一定要加上分号“ ; ”来收尾,否则程序认为代码还未结束,会把后面的内容继续囊括进来运行而出错;4Fa*T1g6w'Hb(IN
? M6Bgr_
三、全部的代码都应该是用英文字符写成,而不要包含中文字符。同一个字符,英文和中文的写法是不同的。例如句号,中文是“。”而英文是一个小点“.”。中文字符会被直接显示到屏幕上而不能作为运行代码。因而正确的使用字符能保证程序的运行;
:K x4B#h*g+p(h
T+]2Ao[jW_'NO^ 四、在leobbs的程序文件中,
|)^(j@b-q   “&”通常表明调用预先设定好的子程序段,u;G:A MZ5L-R
  “$”表明这是一个变量,而变量名称后面再加一个点“.”表示累加,在前面的内容的基础上再增加,3K-{$h*r-Mc
  “\t”代表输出了一个特殊空格,不是键盘的空格键按出来的小空格,而是“Tab”键按出来的那种,通常用来写入数据文件的时候分隔不同的数据,
s&kQFKdx   “\n”表示输出一个换行, wBs\v.R|9v
  “@”代表这是一个数组。这个比较复杂一点,在读写多个变量的时候才会用它;
!{ }3Q+}bXV1\z*I   “#” 代表注释,跟在这个代码后面直到换行之前的内容都只是文件里的注释,不会起效的,不会被perl程序运行,用作在程序文件里做标记;
y'{N._D9^ t%j Xr e;q nQ3b
五、在leobbs的程序文件中,程序本身计算和运行的代码,与输出屏幕显示的代码,经常是混杂在一起的。leobbs指定了一个变量来作为整个输出到你的电脑屏幕上具体效果的代码,就是“$output”。而程序文件中不断出现类似以下的:0sT k D/K2V2\w3|'|
[quote]   $output .= qq~中间内容省略~;[/quote]7yqbF#]q;hlc lN
这样的代码,那个点表示在累加内容到 $output 中去,留到最后总体输出到屏幕。如果没有这个点儿,那么就等于对 $output 重新定义了。之前 $output 的内容或定义就废止了;*f2M!am)j&_%Z9uA
Jt8p*bh4H ?0O^(CK
六、“qq~”和“~;”是leobbs常用的定义语句,通俗说,是对前面这个变量的解释和指定。上面这句也等同于:l`+TJ,O
[quote]    $output .= "中间内容省略";[/quote]
N2`K!B#]0RpV “qq~”和“~;”与两个英文字符引号 " 的作用是一样的,但是各自对应,不能混用。5~ALk:q/f,]
英文字符的双引号 " 和单引号 ' 都可以用,但是同样不能混用。双对双,单对单。
\A:{ o1oS 有的比较复杂的语句里,会出现引号嵌套的现象。这个时候一定要注意对应,各自是有层次的,依次逐层剥开都不能乱,如“ 双 … 单 … 单 … 双 ”,就像剥水果一样,原理同第一条;f8~9MN#pxF

hR"g [{J 七、有的时候需要输出比如“$”、“&”、“#”等特殊字符到屏幕上显示出来,而不是把它们当作运行符号,那么,在这些字符前面加一个反斜杠“\”就可以了,就可以取消它们在perl中的功能而当作普通字符显示出来了。3L%h9^3\*u!ry
例如“$inmembername”在程序中是访问者的用户名的代码,而“\$inmembername”就是一普通字符串了,会直接在屏幕上显示为 $inmembername 。b&n,^}e u)B LH6z"A1M
puX%\gS.[GV5w]!M3V

DvY!vbb|(yA 以上是我临时总结的一小部分容易出错的地方,并不全面,不过熟悉以后应该对你编写leobbs风格的代码有所帮助:)

henry 发表于 2008-1-19 19:48

農曆新年將至, 因為時間的關係,我已經決定用"綠野仙踪(LEOBBS)"的風格來修改.
z-i m g*k&fqG/[d 今天已經改了幾張圖了, 不過我想把頂點的圖像轉用FLASH, WY8J!|#x$dtur
但加了FLASH語法後, 卻沒有顯示出來, 為什麼呢?(Z2A Ya,J*`G!r
天高雲談又可以用FLASH??奇怪

阿喀琉斯 发表于 2008-1-19 21:59

这个肯定是html代码的编写有误了~请再仔细检查一下~

henry 发表于 2008-1-22 21:34

又有問題~?f*ypK
我想把論壇弄闊一點, 又找不到該數量
+_b"f5D8XdXf 是在那個文件內設定??

阿喀琉斯 发表于 2008-1-22 23:25

是 cgi-bin/data/skin 下面的文件里的 $tablewidth

henry 发表于 2008-1-23 11:31

OK 了, 啺曬你 :lol
&K~6n3B]
[3dV.jq'p:U ps :差不多完工....
+b#wmdwh N .Ck;DlO(@.A'\
[[i] 本帖最后由 henry 于 2008-1-23 11:33 编辑 [/i]]

阿喀琉斯 发表于 2008-1-23 21:57

我看不懂你的话啊~:D

henry 发表于 2008-1-23 23:19

對不住~我用了廣東話.
;k3v4[:J AP;s 普通話翻譯~~c S9GBZ#vr1p+P
就是
!LB Vq.@1Bp6VL .
6U6LB^ tw m;j .
-k v-Cs9Mp[+V .
&b NiqU3Q} k$~ .
u+IhEpktG .;X4{+n L vC1Qw1V(J
.+^9uswL/CKF8b
9v.dJQ&S^s,@!Y
$x(W$R)j+GZ
"Z2TN*v#E
MX0G/hS@u*C0S'A

R#B o%[W%ChS
}yr(rPr,p !M]9}nA7U{

Vm ?;zi'C u
(X)MT1Q^&b"Il
r%V#pfVk%Q![ 'rpsm9vjv"Nu C
b.K.|q&d[f#sw8J2]

.e @E FE3w
P#h4b6C o "我愛你~"   yeah:*Q :*Q :*Q-B q/@cf'Vo
rIq+@E(h SD
PS: 說說笑而已~~你的baby幾時生產, 知道是男仔或女仔未??
dt ];e;Y-^#Wo6B za-i
P&M|2O7WX._/^ [[i] 本帖最后由 henry 于 2008-1-23 23:32 编辑 [/i]]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.