帝國(guó)、PHPCMS及織夢(mèng)對(duì)比(七)之自定義表單功能分析

2011-10-08 17:23:08來(lái)源:chinaz作者:

站長(zhǎng)朋友們?cè)谑褂肅MS建站的過(guò)程中有時(shí)候少不了要做一些供用戶(hù)填寫(xiě)信息的表單,如果是單獨(dú)去寫(xiě)程序去實(shí)現(xiàn)又顯得小提大作,或者也顯得麻煩,需要?jiǎng)?chuàng)建存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)表,寫(xiě)數(shù)據(jù)操作文件及改數(shù)據(jù)提交表單模板,而CMS的自

站長(zhǎng)朋友們?cè)谑褂肅MS建站的過(guò)程中有時(shí)候少不了要做一些供用戶(hù)填寫(xiě)信息的表單,如果是單獨(dú)去寫(xiě)程序去實(shí)現(xiàn)又顯得小提大作,或者也顯得麻煩,需要?jiǎng)?chuàng)建存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)表,寫(xiě)數(shù)據(jù)操作文件及改數(shù)據(jù)提交表單模板,而CMS的自定義表單功能則能很好的滿(mǎn)足這樣的需求,不需要太多的編程知識(shí),一路點(diǎn)下一步,添加自定義字段,設(shè)置字段的屬性,然后選擇表單的模板,前臺(tái)自動(dòng)生成數(shù)據(jù)提交表單界面,通過(guò)程序自動(dòng)獲取數(shù)據(jù)字段完成對(duì)數(shù)據(jù)的寫(xiě)入和讀取處理,大大簡(jiǎn)化了表單創(chuàng)建過(guò)程,然而實(shí)際不同CMS中自定義表單細(xì)節(jié)考慮的不同,仍然會(huì)給站長(zhǎng)朋友們尤其是對(duì)編程了解不多的朋友帶來(lái)比較多的困惑。

本文中落葉就PHPCMS、帝國(guó)CMS及織夢(mèng)的自定義表單功能細(xì)節(jié)作一些對(duì)比分析,供大家參考。

自定義表單數(shù)據(jù)表的創(chuàng)建

建立自定義表單的第一步基本都是提交表單的相關(guān)數(shù)據(jù)如表單名稱(chēng)、表單數(shù)據(jù)表名、表單介紹、選擇表單模板等。

PHPCMS:

\

DEDECMS:

\

對(duì)比上圖所示PHPCMS和DEDECMS表單創(chuàng)建界面,PHPCMS表單可以設(shè)置是否開(kāi)啟、開(kāi)始和結(jié)束時(shí)間,并且可以設(shè)置是否發(fā)郵件,這三點(diǎn)附加功能是挺不錯(cuò)的,尤其是表單提交后自動(dòng)給指定郵箱發(fā)郵件的功能,很方便站長(zhǎng)及時(shí)了解到用戶(hù)提交的信息。

不過(guò),PHPCMS只能生成表單頁(yè),不支持前臺(tái)對(duì)表單數(shù)據(jù)的直接顯示,而DEDECMS中除了可設(shè)置表單發(fā)布模板,還可通過(guò)自定義列表模板、內(nèi)容模板來(lái)對(duì)用戶(hù)提交的表單數(shù)據(jù)進(jìn)行展示,同時(shí)也可選擇是否公開(kāi)這些數(shù)據(jù),優(yōu)點(diǎn)是方便數(shù)據(jù)自動(dòng)展示,缺點(diǎn)時(shí)模板不是以選擇的方式呈現(xiàn),而要手動(dòng)填,一旦 input中默認(rèn)值被刪除,用戶(hù)不能直觀了解到該填哪類(lèi)模板。

當(dāng)然,對(duì)于數(shù)據(jù)的展示上,無(wú)論是PHPCMS和DEDE中即使沒(méi)用后臺(tái)列表模板和發(fā)布模板的設(shè)置,也可以通過(guò)數(shù)據(jù)調(diào)用標(biāo)簽來(lái)調(diào)用。PHPCMS中使用GET標(biāo)簽調(diào)用即可,而DEDE中則可通過(guò)SQL標(biāo)簽來(lái)調(diào)用,不過(guò)兩者前提是都需要大家了解SQL知識(shí)。DEDE的list_diyform.htm中內(nèi)置了對(duì)表單數(shù)據(jù)的調(diào)用,相對(duì)更適合新手朋友們,但對(duì)于本身對(duì)SQL或編程有一些了解的朋友,DEDE這里的設(shè)計(jì)反而顯得局限了。針對(duì)數(shù)據(jù)的調(diào)用這塊,后面落葉再作詳細(xì)的分析。

自定義字段添加及設(shè)置

PHPCMS:

\

DEDECMS:

\

對(duì)比二者的自定義字段設(shè)置界面發(fā)現(xiàn),二者除了基本的設(shè)置字段名稱(chēng),字段提示文字之外,都內(nèi)置有對(duì)字段內(nèi)型的設(shè)置。和自定義模型一樣,字段類(lèi)型設(shè)置的過(guò)程其實(shí)都整合了表單界面自動(dòng)生成及數(shù)據(jù)自動(dòng)展示過(guò)程,用戶(hù)通過(guò)選擇不同的字段類(lèi)型如附件類(lèi)型,表單界面不需要自己寫(xiě)文件上傳功能,會(huì)自動(dòng)生成文件上傳框,能夠很方便的實(shí)現(xiàn)復(fù)雜的表單功能。

PHPCMS和織夢(mèng)數(shù)據(jù)(字段)類(lèi)型的區(qū)別在于細(xì)節(jié)設(shè)置上。PHPCMS自定義字段類(lèi)型有單行文本、多行文本、選項(xiàng)、編輯器、日期和時(shí)間、數(shù)字、圖片、地區(qū)、文件等,DEDE的字段類(lèi)型有單行文本、多行文本、HTML文本、整數(shù)類(lèi)型、小數(shù)類(lèi)型、時(shí)間類(lèi)型、使用option下拉框、使用radio選項(xiàng)卡、CHECKBOX多選框、圖片、附件類(lèi)型等。實(shí)際二者的字段類(lèi)型功能模塊差不多,該有的都有,只是DEDE的描述似乎不夠直觀,初級(jí)用戶(hù)不是太易理解,如單行文本(varchar)和單行文本(char),弄不好好多用戶(hù)都會(huì)糾結(jié)這倆個(gè)有啥區(qū)別,varchar是啥,char是啥呢,DEDECMS 中細(xì)節(jié)提示一向優(yōu)于PHPCMS,不過(guò)這里的處理似乎不夠細(xì)致,或者DEDECMS認(rèn)為用到自定義表單的應(yīng)該都不是初級(jí)用戶(hù)?

另外,PHPCMS中每個(gè)字段類(lèi)型都有詳細(xì)的設(shè)置如前臺(tái)展示樣式、默認(rèn)值,編輯器寬高等,DEDECMS這里設(shè)計(jì)則明顯過(guò)于簡(jiǎn)略。

\

自定義表單的調(diào)用(引用 )

一般的設(shè)計(jì)每個(gè)自定義表單生成后,都會(huì)提供一個(gè)獨(dú)立的訪問(wèn)地址,而實(shí)際站長(zhǎng)朋友一般不會(huì)限滿(mǎn)足于自定義表單的獨(dú)立訪問(wèn),更希望的是能將表單嵌入到一些特定的頁(yè)面(如專(zhuān)題頁(yè))中,和頁(yè)面整合在一起。

PHPCMS中提供了很方便的調(diào)用功能,即直接在模板中使用{cache_read(1.html)}來(lái)調(diào)用ID為1的表單,實(shí)際是通過(guò) include目錄下的global.func.php公共函數(shù)文件中的cache_read函數(shù)來(lái)讀到以靜態(tài)頁(yè)形式緩存的表單頁(yè)。這樣,表單文件可以很好的以靜態(tài)HTML的形式整合到目標(biāo)頁(yè)面中。

\

DEDECMS中似乎沒(méi)有提供很好的表單調(diào)用方式。前段時(shí)間有程序員在用織夢(mèng)套站時(shí)需要給專(zhuān)題加上評(píng)論功能,如果用DEDE的留言板改不太方便通用,所以考慮用DEDE的自定義表單功能來(lái)實(shí)現(xiàn),需要將表單界面嵌入到專(zhuān)題頁(yè)面中來(lái)并和專(zhuān)題ID相關(guān)聯(lián),能夠直接在專(zhuān)題頁(yè)面提交數(shù)據(jù)和調(diào)用數(shù)據(jù),這時(shí)候發(fā)現(xiàn)調(diào)用很不方便,最粗糙的方便就是使用IFRAME直接框進(jìn)去了,但顯然這樣做讓人感覺(jué)不太好,好一點(diǎn)的則把表單頁(yè)以JS的形式輸出,以JS的方式引用,或者體驗(yàn)更好一點(diǎn)的是直接通過(guò)AJAX來(lái)調(diào)用了,而實(shí)際還是把問(wèn)題復(fù)雜化了。能夠?qū)慉JAX來(lái)操作的,那也基本不會(huì)在這樣的表單處理的問(wèn)題上糾結(jié)了。

當(dāng)然,PHPCMS中以緩存方式來(lái)調(diào)用表單也同樣產(chǎn)生了一些新的問(wèn)題,落葉在實(shí)際使用中常遇見(jiàn)表單模板更新了,但表單調(diào)用怎么也更新不了的情況,問(wèn)題則出在緩存更新的問(wèn)題上,PHPCMS很多的優(yōu)點(diǎn)源于他的緩存,而也有很多令人糾結(jié)的問(wèn)題也是源于他的緩存。

自定義表單數(shù)據(jù)的調(diào)用

用戶(hù)通過(guò)自定義的表單提交了數(shù)據(jù),一些情況站長(zhǎng)只希望管理員能在后臺(tái)看到,而另一些情況,則是希望能對(duì)這些數(shù)據(jù)進(jìn)行展示,在網(wǎng)站上進(jìn)行調(diào)用。

上面提到過(guò),DEDECMS默認(rèn)提供了對(duì)表單數(shù)據(jù)進(jìn)行調(diào)用展示的模板,也對(duì)數(shù)據(jù)是否展示作了權(quán)限控制。但實(shí)際數(shù)據(jù)展示更多的情況是希望能在網(wǎng)站的頁(yè)面進(jìn)行整合,而不僅僅是單頁(yè)列表,而DEDECMS默認(rèn)的模板中的數(shù)據(jù)調(diào)用涉及到PHP原生語(yǔ)法,不太適合其它頁(yè)面的整合,所以需要使用數(shù)據(jù)調(diào)用標(biāo)簽來(lái)調(diào)用。最直接的那就是SQL標(biāo)簽來(lái)調(diào)用了:

如調(diào)用自定義表單1中的ID為1的數(shù)據(jù)

{dede:sql sql="Select * from dede_diyform1 where'}

[field:title/]

{/dede:sql}

PHPCMS中的數(shù)據(jù)調(diào)用也基本類(lèi)似,直接使用GET標(biāo)簽:

{get:sql sql='Select * from phpcms_diyform1 where'}

[field:title/]

{/get}

不同之處在于PHPCMS后臺(tái)提供了GET標(biāo)簽生成的功能,用戶(hù)可以方便在后臺(tái)模板在線管理處通過(guò)選擇的方式生成SQL語(yǔ)句來(lái)調(diào)用數(shù)據(jù)。

作者:落葉(t.qq.com/guohui) 網(wǎng)站:http://www.pmume.com

關(guān)鍵詞:帝國(guó)PHPCMSdedecms

贊助商鏈接: