標籤:style blog http 使用 os io 檔案 資料
關於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,)
........
),
);
大家可以看到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()方法,這對於前台模板的顯示沒有任何影響的。