帝國(guó)、PHPCMS及織夢(mèng)對(duì)比(九):關(guān)聯(lián)類別屬性

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

在使用CMS套站時(shí)進(jìn)行欄目結(jié)構(gòu)規(guī)劃時(shí)常遇到這樣一種情況:每個(gè)欄目下想再細(xì)分一些類別,如果以欄目的形式添加,很多欄目下都會(huì)有這些重復(fù)的類別,這樣一來(lái)就導(dǎo)致很多重復(fù)和欄目。所以需要考慮直接在字段屬性類別的方

在使用CMS套站時(shí)進(jìn)行欄目結(jié)構(gòu)規(guī)劃時(shí)常遇到這樣一種情況:每個(gè)欄目下想再細(xì)分一些類別,如果以欄目的形式添加,很多欄目下都會(huì)有這些重復(fù)的類別,這樣一來(lái)就導(dǎo)致很多重復(fù)和欄目。所以需要考慮直接在字段屬性類別的方式來(lái)添加,發(fā)文章時(shí)直接選擇類別來(lái)給文章歸類。不知道站長(zhǎng)朋友們實(shí)際處理過(guò)程中有沒(méi)有遇到這樣的問(wèn)題,但落葉確實(shí)感受挺深了,在涉及醫(yī)療性質(zhì)的站點(diǎn)時(shí),每個(gè)疾病病種下面有多個(gè)子病種,然后子病種的文章類型又分為病因、癥狀、診斷、治療、預(yù)防、科普、建議等等,每個(gè)欄目的文章基本都需要分這些類別,如果以子欄目的形式添加,50個(gè)子病種就要多添加300多個(gè)子欄目,這樣不管是對(duì)網(wǎng)站結(jié)構(gòu)還是 SEO來(lái)講都是災(zāi)難,所以這個(gè)時(shí)候“類別”字段顯得比較重要。

不同的CMS基本都有內(nèi)置或者提供類別設(shè)置的功能,只是表現(xiàn)形式不同,設(shè)計(jì)細(xì)節(jié)不同,擴(kuò)展靈活性也不同,本文中落葉擬對(duì)PHPCMS、帝國(guó)CMS及織夢(mèng)CMS中的類別這點(diǎn)作一些細(xì)節(jié)性對(duì)比。

織夢(mèng)CMS:

DEDE中沒(méi)有很明確的類別功能,可以變相實(shí)現(xiàn)的體現(xiàn)方式是”自定義屬性”,在自定義屬性中多添加幾個(gè)屬性,發(fā)布文章時(shí),勾選這些屬性,然后調(diào)用時(shí)按照這個(gè)屬性分類進(jìn)行調(diào)用即可。

類似下圖的最后一項(xiàng):

\

想法貌似不錯(cuò),于是找DEDE添加自定義屬性的地方,然而結(jié)果似乎不是那么順利。

\

一句“為了數(shù)據(jù)安全起見(jiàn)不允許用戶增加其它類型”,那么對(duì)于普通用戶,如果非要實(shí)現(xiàn),那只有修改DEDE內(nèi)置的屬性名稱來(lái)變相實(shí)現(xiàn)了,如把“頭條” 改為“病因”,“推薦”改為“癥狀”,但這樣的結(jié)果是失去了原有的“頭條”和推薦功能。自定義文檔屬性結(jié)果發(fā)現(xiàn)是沒(méi)辦法自定義的。不好意思,遇上落葉這樣死鉆的人還真不相信你所說(shuō)的安全問(wèn)題,事實(shí)上增加一個(gè)自定義屬性,也沒(méi)有什么安全的,直接在數(shù)據(jù)庫(kù)中修改吧。

DEDECMS的自定義屬性記錄在dede_arcatt數(shù)據(jù)表中的,直接在PHPMYADMIN中可視化插入幾個(gè)自定義屬性:

\

這樣似乎就夠了,但實(shí)際,DEDECMS中文章表中調(diào)用自定義屬性的字段類型采用的是set類型,那里采用了白明單,限制了允許使用的att屬性,所以仍需要修改文章表dede_archives中的flag字段,按格式增加剛剛添加的三個(gè)屬性的att值,即如下:

\

這樣,在發(fā)布文章的表單處自定義屬性一欄就顯示出了剛添加的一些屬性,發(fā)布文章時(shí)勾選,前臺(tái)調(diào)用,使用flag=”m”即可調(diào)用癥狀類別的文章了。

{dede:arclist row="10' titlelen='24' orderby='pubdate' flag=’m’}

[field:textlink/]([field:pubdate function=MyDate('m-d',@me)/])

{/dede:arclist}

這里需要注意的是,因?yàn)镈EDE的flag標(biāo)簽解析后是采用like查詢,上圖中添加的by其實(shí)是不正確的,可以使用多字母,但是首字母不要有重復(fù),如上圖中所示的,使用flag=’b’來(lái)調(diào)用加精的文章時(shí),by類別的文章也會(huì)被調(diào)用出來(lái)。

當(dāng)然DEDECMS中也可以自定義一個(gè)選項(xiàng)自段來(lái)實(shí)現(xiàn),通過(guò)添加“使用radio選項(xiàng)卡”或“Checkbox多選框”,然后在默認(rèn)值處填寫被選擇的項(xiàng)目來(lái)實(shí)現(xiàn)亦可,只是因?yàn)檫@里DEDE自定義字段只能添加在副表中,調(diào)用時(shí)需要關(guān)聯(lián)查詢,效率會(huì)低些,一般不建議這樣做。

自定義字段設(shè)置:

\

內(nèi)容發(fā)布表單界面顯示的自定義類別字段:

\

這樣可以變相實(shí)現(xiàn),只是在調(diào)用時(shí),不方便把附加字段作為調(diào)用條件,需要使用DEDE的SQL標(biāo)簽聯(lián)合查詢才行,效率稍低,也不太方便。

PHPCMS:

PHPCMS模板中內(nèi)置了字段類型,文章模型中默認(rèn)沒(méi)有開啟,在系統(tǒng)設(shè)置->模型管理中的字段管理中開啟類別字段。

\

然后在系統(tǒng)管理->相關(guān)設(shè)置->類別設(shè)置中添加類別:

\

添加文章里即可在使用類別選項(xiàng)來(lái)對(duì)文章歸類了:

\

前臺(tái)調(diào)用使用TAG標(biāo)簽或GET標(biāo)簽調(diào)用即可。如果使用TAG標(biāo)簽則只需要在后臺(tái)模板管理處可視化選擇類別類型生成TAG標(biāo)簽即可方便實(shí)現(xiàn)調(diào)用。

\

如果是GET標(biāo)簽,則直接在SQL語(yǔ)句中加下typeid=’類別ID數(shù)字’可也。

帝國(guó)CMS:

帝國(guó)CMS默認(rèn)沒(méi)有類別字段,不過(guò)亦可以通過(guò)自定義字段的形式添加,帝國(guó)的優(yōu)點(diǎn)在于自定義字段可以添加在主表中,這一點(diǎn)非常不錯(cuò),在新聞數(shù)據(jù)表模板中添加一個(gè)typeid字段:

\

選擇添加在主表中,然后在“管理系統(tǒng)模型”中修改系統(tǒng)模板開啟,在錄入項(xiàng)中顯示該字段即可在文章發(fā)布表單中顯示了:

前臺(tái)數(shù)據(jù)調(diào)用則需要使用萬(wàn)能標(biāo)簽或靈動(dòng)標(biāo)簽中寫SQL語(yǔ)句來(lái)調(diào)用了,條件為typeid=”病因”,條件中需要寫漢字,這點(diǎn)不太爽。

總體分析來(lái)看,類別功能不是什么大功能,只是增加一個(gè)關(guān)聯(lián)自段,方便數(shù)據(jù)分類,不同CMS中都可以變相實(shí)現(xiàn),但總體來(lái)看還是PHPCMS默認(rèn)設(shè)置了該字段,無(wú)論是類別自定義添加還是前臺(tái)調(diào)用都方便些。從普通用戶來(lái)講,同是需要使用SQL來(lái)調(diào)用,帝國(guó)則比織夢(mèng)稍方便些,因?yàn)樗远x的字段顯示在主表中了。

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

贊助商鏈接: