發(fā)布時(shí)間:2021-03-30
欄目:帝國(guó)新聞
對(duì)于一般的CMS用戶,CMS系統(tǒng)默認(rèn)的標(biāo)簽封裝的越完整,使用越簡(jiǎn)單越受歡迎,但如果是個(gè)性化數(shù)據(jù)調(diào)用需求較多的用戶,通常都會(huì)感覺(jué)系統(tǒng)內(nèi)置的標(biāo)簽局限性太大,不夠靈活,特別是懂PHP或MYSQL的站長(zhǎng)朋友們,更希望能夠很方便的直接通過(guò)SQL語(yǔ)句在模板中自由調(diào)用數(shù)據(jù)庫(kù)中的各種數(shù)據(jù)。
我對(duì)PHP和MYSQL不能算精通,但能算CMS的深度用戶,很多時(shí)候去測(cè)試一款CMS時(shí),都會(huì)考慮這款CMS是否支持直接在模板中通過(guò)SQL語(yǔ)句來(lái)讀取CMS系統(tǒng)內(nèi)的或者外部數(shù)據(jù)源的數(shù)據(jù)。很多時(shí)候,希望突破內(nèi)置標(biāo)簽的局限性,靈活自由的以各種形式來(lái)調(diào)用CMS數(shù)據(jù)庫(kù)中的數(shù)據(jù),特別是不同程序間的數(shù)據(jù)整合調(diào)用時(shí),支持SQL語(yǔ)句的標(biāo)簽?zāi)軌蚴∪ズ芏嗦闊?/p>
那么本文中下面落葉對(duì)帝國(guó)CMS、PHPCMS及DEDECMS這三款CMS中的支持通過(guò)SQL語(yǔ)句直接調(diào)用數(shù)據(jù)的標(biāo)簽作一些對(duì)比分析。
1)帝國(guó)CMS中直接通過(guò)SQL語(yǔ)句調(diào)用數(shù)據(jù)的標(biāo)簽:
如顯示欄目id為1的10條新聞表記錄
[ecmsinfo]"select * from phome_ecms_news where classid=1 order by id desc limit 10"帝國(guó)cms批量助手,10,30,0,24,1,0[/ecmsinfo]
實(shí)際上帝國(guó)CMS中支持直接SQL語(yǔ)句調(diào)用數(shù)據(jù)的標(biāo)簽不止ecmsinfo這一個(gè)標(biāo)簽,所謂的靈動(dòng)標(biāo)簽 (e:loop)、文字調(diào)用標(biāo)簽phomenews等。
我看到帝國(guó)CMS官方論壇有用戶問(wèn)過(guò),帝國(guó)CMS的支持SQL語(yǔ)句的標(biāo)簽是否支持讀取外部數(shù)據(jù)源,管理員WC的回復(fù)是只支持同一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的讀取,其實(shí)這個(gè)不難理解,實(shí)際是就帝國(guó)CMS的SQL數(shù)據(jù)調(diào)用功能不支持外部數(shù)據(jù)源的調(diào)用,因?yàn)槿绻嵌嗵壮绦虬惭b在同一個(gè)數(shù)據(jù)庫(kù)下,那本身就可以當(dāng)作同一套程序來(lái)處理數(shù)據(jù),如同一數(shù)據(jù)庫(kù)中安裝了論壇 和帝國(guó)CMS,直接把論壇的數(shù)據(jù)表當(dāng)作帝國(guó)CMS的自定義數(shù)據(jù)表來(lái)調(diào)用一樣的道理。
帝國(guó)CMS的SQL標(biāo)簽的優(yōu)點(diǎn)再于,SQL語(yǔ)句查詢結(jié)果本身在標(biāo)簽內(nèi)部作了處理,用戶可以直接在標(biāo)簽中定義標(biāo)題截取長(zhǎng)度、是否顯示欄目名稱、時(shí)間格式化等,這些在PHPCMS及DEDECMS的類似標(biāo)簽中都是需要直接在標(biāo)簽的innertxt中自己作邏輯判斷和調(diào)用函數(shù)處理的,這點(diǎn)對(duì)于普通用戶還是比較方便的。畢竟帝國(guó)cms軟件采集,調(diào)用文章列表,要個(gè)性化的地方也就基本標(biāo)題顯示長(zhǎng)度,時(shí)間顯示格式,是否在前面顯示欄目名及列表的模板樣式,帝國(guó)這樣的標(biāo)簽都可以很好的實(shí)現(xiàn),夠用了。
2)PHPCMS中的直接通過(guò)SQL語(yǔ)句調(diào)用數(shù)據(jù)的標(biāo)簽:GET標(biāo)簽
如帶分頁(yè),示例(調(diào)用欄目ID為1通過(guò)審核的10條信息,標(biāo)題長(zhǎng)度不超過(guò)25個(gè)漢字,顯示更新日期,帶分頁(yè))
{get sql="select * from phpcms_content where catid=1 and status=99 order by updatetime desc" rows="10" page="$page"}
標(biāo)題:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}
{/get}
在我看來(lái)GET標(biāo)簽是PHPCMS中好用的標(biāo)簽,要查詢什么數(shù)據(jù),直接寫(xiě)好SQL語(yǔ)句,使用GET標(biāo)簽,并且可定自定義是否分頁(yè),分頁(yè)每頁(yè)顯示的條數(shù),分頁(yè)的URL規(guī)則等等,GET標(biāo)簽之間的內(nèi)容為讀取出來(lái)的數(shù)組變量,可直接使用PHP模板語(yǔ)法輸出,亦可調(diào)用全局函數(shù)或PHP原生函數(shù)進(jìn)行數(shù)據(jù)處理后輸出。整個(gè)處理過(guò)程很適合PHP程序員的思維。
GET標(biāo)簽的另一個(gè)優(yōu)勢(shì)是能夠很方便的調(diào)用外部數(shù)據(jù)源,即其它程序的MYSQL數(shù)據(jù)庫(kù),并且不管是否在同一MYSQL中,不管是不在同一臺(tái)服務(wù)器,只需要在PHPCMS后臺(tái)數(shù)據(jù)源管理處添加外部數(shù)據(jù)源的主機(jī)如localhost或服務(wù)器IP,然后填寫(xiě)數(shù)據(jù)庫(kù)名、數(shù)據(jù)庫(kù)用戶名及數(shù)據(jù)庫(kù)密碼,測(cè)試連接成功后,后面即可直接在模板中使用GET標(biāo)簽調(diào)用外部數(shù)據(jù)源。
\
get 標(biāo)簽調(diào)用外部數(shù)據(jù)示例(調(diào)用數(shù)據(jù)源為bbs,分類ID為1的10個(gè)最新主題,主題長(zhǎng)度不超過(guò)25個(gè)漢字,顯示更新日期):
{get dbsource="bbs" sql="select * from cdb_threads where fid=1 order by dateline desc" rows="10"}
主題:{str_cut($r[subject], 50)} URL:http://www.pmume.com/viewthread.php帝國(guó)cms采集軟件?tid={$r[tid]} 更新日期:{date('Y-m-d', $r[dateline])}
{/get}
這點(diǎn)是非常方便的,一個(gè)文章主站+論壇 ,然后直接在主站首頁(yè)調(diào)用論壇中的帖子,使用GET標(biāo)簽,可以以任何想實(shí)現(xiàn)的方式來(lái)讀取論壇數(shù)據(jù)庫(kù)的帖子,而其它程序中則只能通過(guò)JS調(diào)用或者通過(guò)改程序來(lái)實(shí)現(xiàn)。
GET標(biāo)簽的優(yōu)勢(shì)還在于,如果是進(jìn)行二次開(kāi)發(fā),新建一個(gè)abc.php頁(yè)面,只需要引用PHPCMS的公共文件,即可直接使用PHPCMS的模板引擎,然后在模板目錄下新建一個(gè)abc.html即可在模板中使用GET標(biāo)簽調(diào)用任何想調(diào)用的內(nèi)容。
如果MYSQL數(shù)據(jù)庫(kù)不在同一服務(wù)器,在PHPCMS后臺(tái)填好數(shù)據(jù)庫(kù)設(shè)置,然后在遠(yuǎn)程服務(wù)器的MY.INI文件中設(shè)置禁用域名DNS反向解析,然后使用GET標(biāo)簽遠(yuǎn)程調(diào)用,速度會(huì)和同一臺(tái)服務(wù)器相差無(wú)幾,跨服務(wù)器數(shù)據(jù)調(diào)用非常方便。
不過(guò),我還不滿足于此,還希望GET標(biāo)簽?zāi)苤苯诱{(diào)用其它類型的數(shù)據(jù)庫(kù)數(shù)據(jù),如SQL server中的數(shù)據(jù),如果能實(shí)現(xiàn)這樣,那跨語(yǔ)言平臺(tái)整合那將非常方便了。如主站是PHPCMS的,論壇是.NET,這樣如果GET標(biāo)簽也支持讀SQL server中的數(shù)據(jù),那真是無(wú)敵了。
3)DEDECMS中直接通過(guò)SQL語(yǔ)句調(diào)用數(shù)據(jù)的標(biāo)簽:SQL標(biāo)簽
如調(diào)用文章表中會(huì)員ID為1的會(huì)員發(fā)布的10條文章
{dede:sql sql='Select * from dede_archives where mid=1 limit 10'}
<a href='/plus/view.php?aid=[field:id/]' target='_blank'>[field:title/]</a>
{/dede:sql}
從DEDECMS中SQL標(biāo)簽文檔來(lái)看,該SQL標(biāo)簽直接使用SQL語(yǔ)句來(lái)調(diào)用簡(jiǎn)單的文章列表,還是非常方便的,處理好的innertxt也支持用 PHP函數(shù)處理后輸出,這點(diǎn)和PHPCMS中挺像,但是貌似沒(méi)有PHPCMS的GET標(biāo)簽強(qiáng)大,不支持分頁(yè),更不會(huì)支持分頁(yè)的自定義URL格式。
當(dāng)然,一般的用于側(cè)邊欄調(diào)用一些內(nèi)置標(biāo)簽不方便實(shí)現(xiàn)的數(shù)據(jù),夠用了。
文章地址:http://www.meyanliao.com/article/diguo/dgPHPCMSjzmdbezcSQLtydbq.html

- 1選用Phpcms v9建站 優(yōu)化之后流量飛起來(lái)
- 2如何選擇CMS 1所見(jiàn)即所得的編譯器
- 3DEDECMS轉(zhuǎn)向帝國(guó)CMS之異同
- 4PHPCMS中$description格式化的方法
- 5帝國(guó)CMS結(jié)合項(xiàng)列表屬性篩選實(shí)例教程
- 6疑是帝國(guó)CMS(EmpireCMS v 6.0)最新BUG
- 7專訪帝國(guó)軟件的創(chuàng)造者:仍然在路上的80后
- 8帝國(guó)5.0和discuz6.1整合教程
- 9帝國(guó)網(wǎng)站管理系統(tǒng)CMS 7.0正式版發(fā)布
- 10專訪ECMS作者王猛 成功的人應(yīng)該耐得住寂寞