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