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