IWMS太復(fù)雜,除了在幫助文檔中介紹的幾個(gè)標(biāo)簽,其他在模板中使用的N多標(biāo)簽都沒(méi)有相關(guān)的文檔參考。近日想對(duì)其進(jìn)行WEB標(biāo)準(zhǔn)化改造,準(zhǔn)備靠“修改-測(cè)試”來(lái)搞清除標(biāo)簽的意思,這么多標(biāo)簽靠記憶力是記不住了,所以用此文作為工作筆記。
引用內(nèi)容 引用內(nèi)容
本文將在一段時(shí)間內(nèi)置頂,希望同好留言補(bǔ)充。(為了避免垃圾廣告留言,在留言內(nèi)容中不要包含“http:”“www.”)。
“首頁(yè)模板”部分
2、<!--#i nclude file="../inc/html_head.inc"-->
這是個(gè)服務(wù)器端嵌入的語(yǔ)句。表示將../inc/html_head.inc的文本內(nèi)容填充到該位置,客戶端看不出任何痕跡。只要修改這個(gè)INC的內(nèi)容,就能對(duì)網(wǎng)站的相應(yīng)部分進(jìn)行批量更新(已生成的靜態(tài)頁(yè)面需要重新生成)。模板中的嵌入文件路徑全是以模板所在目錄為起始點(diǎn)計(jì)算。這里將INC文件中的內(nèi)容當(dāng)作模板的一部分進(jìn)行解讀。
3、<title> <%=htmlTitle%> </title>
這個(gè)標(biāo)簽的執(zhí)行結(jié)果是頁(yè)面的標(biāo)題。在首頁(yè)是就網(wǎng)站名稱,在分類頁(yè)就是分類名稱,在內(nèi)容頁(yè)就是內(nèi)容名稱。如果你想在標(biāo)題上加上站名,就在前面或者后面加上文字即可。比如<title><%=htmlTitle%>--洪城網(wǎng)世</title>。自動(dòng)獲得站點(diǎn)名,也可以試著使用<%=config.SiteName%>看看。IWMS會(huì)在</title>標(biāo)簽后加入“Powered by iwms http://www.iwms.net/”的備注信息,如果不使用</title>標(biāo)簽,備注就不會(huì)被加入。但是……頁(yè)面就沒(méi)有標(biāo)題了。
接下來(lái)的<%=config.Charset%>,跟前面所說(shuō)的第1條意思一樣。
4、<link rel="icon" href="../../favicon.ico" type="image/x-icon" />
這個(gè)ICO文件是網(wǎng)站的圖標(biāo),建議修改成自己的文件。以便在多窗口的新型瀏覽器中更好地標(biāo)識(shí)自己。
5、<meta name="description" content=" <%=config.MetaDescription%> "/>
頁(yè)面的描述。內(nèi)容取決于首頁(yè)的設(shè)置、分類的設(shè)置,或者正文頁(yè)的簡(jiǎn)介。HTML的內(nèi)容會(huì)帶上標(biāo)簽,所以盡量在正文的簡(jiǎn)介中不使用格式化標(biāo)簽。
6、<meta name="keywords" content="">
這個(gè)標(biāo)簽是個(gè)問(wèn)題標(biāo)簽,沒(méi)有默認(rèn)內(nèi)容,也無(wú)法動(dòng)態(tài)獲得新聞?wù)牡年P(guān)鍵字?赡苁蔷帉(xiě)中的一個(gè)失誤。如果覺(jué)得有必要,可以自己寫(xiě)一段代表本網(wǎng)站的關(guān)鍵字。我覺(jué)得還是可以動(dòng)態(tài)獲得新聞?wù)牡年P(guān)鍵字標(biāo)簽比較好。
7、<meta name="generator" content="iwms網(wǎng)站管理系統(tǒng)"/>
可隨意修改的標(biāo)簽,刪除也沒(méi)關(guān)系。
8、<link rel="stylesheet" href="../../ <%=style.Css%> " type="text/css"/>
獲得當(dāng)前頁(yè)面采用的“界面風(fēng)格”的CSS文件路徑。如果不想通過(guò)后臺(tái)管理樣式表,可以用自定義的CSS絕對(duì)路徑代替。建議在不熟悉的情況下不要更改。
9、<script type="text/javascript" src=../../" <%=urlPrefix%> inc/flash.js"></script>
獲得當(dāng)前頁(yè)面的路徑相對(duì)深度,就是“..”“../../”之類。其實(shí)我覺(jué)得寫(xiě)個(gè)絕對(duì)路徑更省事。這個(gè)FLASH.JS是個(gè)方便插入FLASH內(nèi)容的東西,如果覺(jué)得累贅,可以根據(jù)自己的需要改寫(xiě)。
10、var thumbWidth= <%=config.TitleImgWidth%> ;var thumbHeight=0;
var thumbHWidth= <%=config.HeadlineImgWidth%> ;var thumbHHeight=0;
者兩個(gè)項(xiàng)目數(shù)值從后臺(tái)的“系統(tǒng)設(shè)置-新聞相關(guān)”中獲得。分別是“標(biāo)題圖片最大寬度”“頭條標(biāo)題圖片最大寬度”。height數(shù)值為0,意思大概是不限定,按比例自動(dòng)調(diào)整。
11、<%=style.PicNavSeparator%> <%=style.PicBullet%> <%=style.PicTop%> <%=style.PicNavBullet%>
這一組預(yù)加載的圖片是在頁(yè)面中經(jīng)常用到的。分別代表當(dāng)前界面樣式中的“導(dǎo)航分割圖片”、“新聞條目指示圖標(biāo)”、“置頂標(biāo)記”、“底部導(dǎo)航指示圖標(biāo)”。這個(gè)部分單獨(dú)修改成自定義的圖像文件是沒(méi)有意義的。
12、 <!--#i nclude file="../head.inc" -->
這里載入的外部文件是網(wǎng)頁(yè)展示部分的文件頭。因?yàn)樗许?yè)面一般都是共享一個(gè)頭部,所以將此部分單獨(dú)拎出來(lái)自成一個(gè)文件。這個(gè)部分的設(shè)計(jì)其實(shí)可以比較隨性,那個(gè)專為頭部設(shè)定的ID“sitehead”也可以隨便改成自己的。如果要吧網(wǎng)站標(biāo)準(zhǔn)化,首先就要把這個(gè)頭部改造掉。
13、 <%=config.SiteUrl%> <%=config.Logo%> <%=config.HeadAd%> <%=config.SiteName%>
分別獲取在后臺(tái)設(shè)定的網(wǎng)站地址與網(wǎng)站LOGO設(shè)定(不僅僅是LOGO圖片,可能包含更多的HTML代碼),以及廣告位中的頭部廣告代碼、后臺(tái)設(shè)置中設(shè)定的網(wǎng)站名稱。
14、 head.inc的最后一段是關(guān)于簡(jiǎn)繁切換功能的設(shè)定。他首先會(huì)判斷當(dāng)前字符設(shè)定是GB2313還是BIG5,如果不是這其中的一種,則調(diào)用一個(gè)外部的 inc/language.js文件,用替換指定字符的形式實(shí)現(xiàn)簡(jiǎn)繁轉(zhuǎn)換。個(gè)人感覺(jué)這種方式效率很低,所以如果采用UTF-8的話,還是把簡(jiǎn)繁轉(zhuǎn)換的功能關(guān)閉。如果是GB2312或者BIG5,還要判斷后臺(tái)是否允許用戶更改簡(jiǎn)繁設(shè)定,如果不能更改,則給該DIV加上禁止點(diǎn)擊的限制,從而實(shí)現(xiàn)“禁止用戶更改設(shè)定”,這個(gè)重任落在了<%=config.UserConvBig5 ? "" : "disabled='disabled' onclick='return false;'"%>身上。
15、<!--#i nclude file="../inc/navclass.aspx"-->
這是插入導(dǎo)航的標(biāo)簽。麻煩從這里開(kāi)始了。這段標(biāo)簽只是導(dǎo)航菜單的一部分,還有一個(gè)關(guān)聯(lián)部分出現(xiàn)在FOOT.INC中。
20、頭條圖片新聞<%=ImgHeadline(2,"normal",150,true,22,2)%>
這個(gè)函數(shù)在幫助文件中沒(méi)有更新最后一個(gè)參數(shù)的意思。那是個(gè)分幾列顯示的選項(xiàng)。風(fēng)訊、動(dòng)易尚且不能及時(shí)更新幫助文檔,作為一個(gè)人開(kāi)發(fā)的IWMS自然也不能幸免。其實(shí)作為設(shè)計(jì)人員,取巧的辦法就是在后臺(tái)模板的“可視化編輯”環(huán)境下按編輯器的響應(yīng)按鈕,根據(jù)提示去獲得函數(shù),也免得記憶參數(shù)排列順序這么費(fèi)勁,同時(shí)隨著版本更新,作者肯定會(huì)保證這個(gè)地方生成的模板代碼是最正確的。
第一個(gè)參數(shù)是表示取多少條具有“頭條”性質(zhì)的圖片新聞。
第二個(gè)參數(shù)是表示是否顯示簡(jiǎn)介信息,是在左邊顯示在是在右邊顯示。至于函數(shù)參考中的橫、縱向顯示已經(jīng)作廢,隨著列數(shù)限制的出現(xiàn),單獨(dú)設(shè)置橫向和縱向顯示已經(jīng)沒(méi)有意義。
默認(rèn)的情況下似乎代碼沒(méi)有什么問(wèn)題,但是多列的時(shí)候問(wèn)題還是出現(xiàn)了。假如顯示簡(jiǎn)介的話,不同的圖片新聞將會(huì)有不同的高度,而嵌套他們的TD缺少一個(gè)TOP的對(duì)齊指令,使得排列不整齊,如果遇到九宮格式的排版,這種情況越發(fā)嚴(yán)重。解決方法要么是編輯人員控制好簡(jiǎn)介字?jǐn)?shù),或者用CSS給這個(gè)位置的TD加上TOP 對(duì)齊屬性。
從這個(gè)標(biāo)簽的應(yīng)用上看,用IWMS設(shè)計(jì)新模板一味追求標(biāo)準(zhǔn)是不現(xiàn)實(shí)的。因?yàn)殪`活性和標(biāo)準(zhǔn)之間很難作出抉擇,在軟件作者設(shè)想到的變化中,用傳統(tǒng)方式解決問(wèn)題是最簡(jiǎn)單的途徑。通過(guò)細(xì)讀這個(gè)標(biāo)簽也糾正我過(guò)去一個(gè)錯(cuò)誤的感覺(jué),那就是ASPX模板很脆弱,一個(gè)參數(shù)不小心可能就全盤(pán)崩潰。其實(shí)用可視化編輯生成的代碼盡管大膽往模板里填,我做的這么多測(cè)試還從來(lái)沒(méi)有發(fā)生嚴(yán)重的錯(cuò)誤。
21、 <%=GetFrameCss(style.CssDayHot,"lframe")%> <%=GetTitlePic(style.PicDayHot,"今日熱門(mén)")%>
看過(guò)前面解釋的朋友自然能了解這兩個(gè)標(biāo)簽是什么意思了。(見(jiàn)17、18)
22、 <%=TopList("dayhot",8,42,false,false,false,false,false)%>
toplist 是修改改模板中使用最頻繁的一個(gè)函數(shù)了。除了“頭條”,幾乎所有的新聞引用都使用TOPLIST,因此他的變幻也是最豐富的。函數(shù)參考中黑壓壓一片,兩大截都是關(guān)于他的描述。我的建議,為了效率考慮還是使用后臺(tái)的可視化編輯工具產(chǎn)生需要的代碼。然后再查看函數(shù)參考的內(nèi)容。
看到這里,IWMS的神秘感基本消除,看來(lái)需要親自修改一個(gè)模板來(lái)體會(huì)了。接下來(lái)的問(wèn)題是哪些紛繁復(fù)雜的樣式表了,要找出他們誰(shuí)是誰(shuí)、用在哪里、改動(dòng)一個(gè)會(huì)不會(huì)牽扯出其他部位的問(wèn)題?完全要靠分析CSS語(yǔ)法嵌套。如果考慮到FIREFOX的兼容性,這個(gè)工作量確實(shí)還不小。
下一步準(zhǔn)備建立幾個(gè)“裸奔”的函數(shù)運(yùn)行結(jié)果,然后為裸奔的結(jié)果設(shè)計(jì)樣式,從而更仔細(xì)地研究IWMS的CSS表現(xiàn)設(shè)計(jì)問(wèn)題。
23、IWMS對(duì)生成的縮略圖執(zhí)行兩個(gè)標(biāo)準(zhǔn)!邦^條標(biāo)題圖片最大寬度”和“標(biāo)題圖片最大寬度”,兩個(gè)實(shí)際生成的尺寸在提交新聞的一瞬間就已經(jīng)決定,日后更改新聞屬性不會(huì)重新生成縮略圖,而是通過(guò)前臺(tái)代碼強(qiáng)行放縮。
24、如果大改過(guò)模板,那就千萬(wàn)不要用可視化編輯之后,直接“修改”保存,否則那自作聰明的可視化編輯工具將把模板“自動(dòng)修正”得面目全非,無(wú)法執(zhí)行。它只能作為生產(chǎn)代碼的工具,如果他是個(gè)本地執(zhí)行文件,或者DW的插件就好了。
25、對(duì)模板的改動(dòng)不能將html_inc文件中的以下段落去除,否則所有圖片新聞的圖片縮略圖調(diào)用都無(wú)法進(jìn)行。
引用內(nèi)容 引用內(nèi)容
<script type="text/javascript">
var thumbWidth=<%=config.TitleImgWidth%>;var thumbHeight=0;
var thumbHWidth=<%=config.HeadlineImgWidth%>;var thumbHHeight=0;
var urlPrefix = "<%=urlPrefix%>";
</script>
<script type="text/javascript" src="<%=urlPrefix%>inc/thumbnail.js"></script>
這樣的一種操作方式實(shí)在很不方便。而要修正這個(gè)問(wèn)題,IWMS需要?jiǎng)右粍?dòng)代碼的結(jié)構(gòu),換一種思路,將控制圖片大小的任務(wù)交給樣式表去完成裁切顯示。
26、圖片新聞列表中使用了class="thumbnailTitle",卻沒(méi)有一個(gè)風(fēng)格的樣式表為他指定了內(nèi)容。
27、 <asp:Literal id="CopyRight" runat="server"/>不僅僅是顯示一個(gè)“IWMS4.5”這么簡(jiǎn)單,它還會(huì)把系統(tǒng)設(shè)置中的“底部版權(quán)內(nèi)容”帶進(jìn)來(lái)。最好把這段內(nèi)容刪除,否則不好修改底部信息。
28、以上修改后,login.aspx中對(duì)導(dǎo)航的引用也要去除,否則會(huì)導(dǎo)致出錯(cuò)。原因大概是因?yàn)槿鄙倨ヅ涞臇|西。從這個(gè)方面看,在ASPX文件中去除“navClass.aspx”的內(nèi)容,不如把這個(gè)文件改為空文件。嗯,好像越來(lái)越復(fù)雜了。
29、\inc、member_reg_statement.inc 這個(gè)文件,是在評(píng)論時(shí)提醒訪問(wèn)的警示語(yǔ),可以隨便更改。
30、 <%=GetSortName(8)%>通過(guò)ID數(shù)字獲得分類名稱。其中的8,可以改成后臺(tái)存在的任何分類ID。