關于phpcms中模塊_tag.class.php中的pc_tag()方法的含義:
在phpcms系統中自己寫后臺模塊,要在前臺模板中顯示出來需要在/phpcms/modules/自己定義的模塊名/classes/目錄下寫一個“模塊名_tag.class.php”文件,此文件中輸出前臺模塊板所使用的自定義的pc標簽,標簽定義類中的方法如何寫我在這里就不贅述了,因為網上很多相關內容的資料,
比如:http://wenku.baidu.com/link?url=sesC6Zsic5BJi6lybI9ZP2ZMUpzoS8Zv-PC07seoWVdISWvjMwrn098PXNfo7xSAMKL94lMsYs-L3dc2eyr2siRA_vXUCI1HW4CraSV7CPe,在前臺標簽中除了可以使用自己定義的一些標簽外還可以使用/phpcms/libs/functions/global.func.php這個文件中定義的方法,有興趣的可以看一下(http://blog.csdn.net/qzmrock/article/details/7716772)很好查找。
我在這里談一下這個標簽定義類文件中的pc_tag()方法的作用,因為我發現這個方面介紹的資料很少,即便在phpcms官網上也有提問但沒有給出答案,我也是研究了2天才搞明白這個方法是干什么用的,寫出來給大家分享一下,希望能對你有些幫助.
大家可以發現所有的“模塊_tag.class.php”文件中都有一個pc_tag()方法,上面寫著“標簽生成方法”字樣的注釋,這個方法到底是干什么的呢?其實這個方法就是提供一個數組,這個數組所定義的參數及參數值是為了給系統“模板管理-> 標簽向導->添加標簽向導”提供數據的。
點擊“添加標簽向導”會彈出向導對話框,在“選擇模型”的下拉框中有系統安裝的所有模塊,這些模塊是讀取/phpcms/caches/configs/modules.php文件中的數組得到的數據,你如果在該數組中最后一行添加‘自己定義的模塊’=>'模塊名',這么行你就可以在剛才的下拉框中找到你自己定義的模塊名,這時候選擇該模塊,如果系統在/phpcms/phpcms/modules/自己定義的模塊/classes目錄中找不到“自己定義的模塊_tag.class.php”文件,系統會報錯自動退出瀏覽器,如果定義了該文件,系統就自動加載pc_tag()方法中所提供的數組數據,以下列部分數據為例分析:
- return arrary('action'=>array('type_list'=>L('guestbook_list','','guestbook')), 'type_list'=>array(
- 'siteid'=>array('name'=>L('site_id','','comment'),'htmltype'=>'input_select','data'=>$sitelist,)
- ........ //Vevb.com
- ),
- );
大家可以看到pc_tag()方法返回一個數組,在這個數組里每變量數組在標簽向導對話框中代表一行內容,比如說'action'=>array('type_list'=>L('guestbook_list','','guestbook')),在向導對話框“選擇模型”的下拉框下一行會顯示“選擇操作:”guestbook_list這么一行內容,這里的guestbook_list是一個radio單選框標簽如果在/phpcms/phpcms/languages/zh-cn/的guestbook.lang.php文件中定義了guestbook_list的漢字標簽如“留言板列表”,那么在剛才的“選擇操作:”后就是“留言板列表”字樣的標簽,這個數組中有幾項內容那么操作后就會有幾個標簽顯示,如果選擇了該標簽那么它接下來就會讀取這個數組變量里的參數,比如選擇了guestbook_list標簽,那么它就會讀取type_list數組中的數據.
- 'type_list'=>array(
- 'siteid'=>array('name'=>L('site_id','','comment'),'htmltype'=>'input_select','data'=>$sitelist,)
在對話框中另起一行,標簽:文本框,選擇下拉框,分別對應數組(L('site_id','','comment'):input select)這里的site_id就是在comment.lang.php文件中定義的site_id參數的值,下拉框的值就是data中的值.
寫到這里大家可以看出來了吧,pc_tag()方法就是系統在操作頁面中為前臺面板提供添加標簽的方法,如果不需要用戶自行添加自定義的新模塊的標簽在_tag.class.php文件中就不用定義pc_tag()方法,這對于前臺模板的顯示沒有任何影響的.
新聞熱點
疑難解答