使用“后臺?工具&開發?開發?CMS發布插件”可快速生成插件
我們用個示例來演示如何制作插件,首先確定我們的需求:將采集的文章發布到wordpress程序里
輸入插件名稱:wordpress文章入庫,CMS程序選擇wordpress,插件功能標識:article(表示文章入庫),作者版權填你自己的
然后添加參數,什么是參數呢?參數在界面中是可視化的控件,可綁定或輸入數據,方便用戶操作
輸入變量名供代碼中調用該參數的值,必填可過濾空值,參數名稱供用戶界面操作,參數類型生成相應控件
參數類型:
數字(number)、字符(text)、開關(radio)、文本(textarea) 會轉換成界面相應的html元素
“選擇采集字段(select)”會將采集器中的字段生成select選項元素
“選擇固定值(select)”并輸入選項值會將預設的值生成select選項元素
“選擇函數返回值(select)”并輸入函數名會將函數返回的數組生成select選項元素
配置完畢點擊“保存”將在根目錄/plugin/release/cms中生成相應的插件文件
編輯任務的“發布設置”,發布方式選擇“本地cms程序”,如果有wordpress程序會自動檢測出(沒有可手動綁定),在“CMS插件”中就可以看到剛才添加的插件
大家可以看到,文章標題、文章內容是“選擇采集字段(select)”類型,如果采集器中有字段,這里就會自動顯示出來
而作者賬號、分類是“選擇函數返回值(select)”類型,這里沒有值是因為函數方法中沒有返回數據庫中的數據
編輯插件文件,找到“作者賬號”函數(你自己設置的函數名),編寫代碼讀取數據庫中的賬號并返回鍵值對數組
public function param_option_author(){ $usersDb=$this->db()->table('__USERS__')->limit(100)->select(); $userList=array(); foreach ($usersDb as $user){ $userList[$user['user_login']]=$user['user_login']; } return $userList; }
分類同理
public function param_option_category(){ $catsDb=$this->db()->table('__TERMS__')->select(); $catList=array(); foreach ($catsDb as $cat){ $catList[$cat['term_id']]=$cat['name']; } return $catList; }
代碼中無需設置cms的數據庫配置,只需$this->db()即可自動調用cms數據庫對象,表名也無需加入前綴,使用__表名大寫__可自動生成完整表名,數據庫操作可參考thinkphp5
注意:并不是支持所有cms程序,只預設了幾個流行的程序,如未檢測出程序且數據綁定也無效的情況下,數據庫配置需要您自行在插件中加入代碼:
//CMS全稱必須與你插件的cms程序名一致,$cmsPath為cms的根目錄路徑 public function cms_db_CMS全稱($cmsPath){ //請讀取cms的配置文件并將數據庫保存為以下數組形式后返回,可參考BaseCms.php中的其它cms_db_方法 $cmsDb=array( 'db_type' => 'mysql',//數據庫類型 'db_user' => '',//用戶 'db_pwd' => '',//密碼 'db_host' => '',//數據庫主機 'db_port' => 3306,//端口 'db_name' => '',//數據庫名稱 'db_charset' => 'utf8',//數據庫編碼 'db_prefix' => '',//表前綴 ); return $cmsDb; }
以上配置都完成后接下來就是入庫工作,找到或添加方法:runImport
/* * 導入數據 * 必須以數組形式返回: * id(必填)表示入庫返回的自增id或狀態 * target(可選)記錄入庫的數據位置(發布的網址等) * desc(可選)記錄入庫的數據位置附加信息 * error(可選)記錄入庫失敗的錯誤信息 * 入庫的信息可在“已采集數據”中查看 * return array('id'=>0,'target'=>'','desc'=>'','error'=>''); */ public function runImport($params){ print_r($params);die(); return array('id'=>0,'target'=>'','desc'=>'','error'=>''); }
$params數組即參數值列表,打印出來可發現,鍵名就是參數的變量名,值是最終處理后的結果,直接調用$params[變量名]便可得到參數的值
runImport方法必須返回數組,可以做網址排重、數據記錄等作用
以上示例已經上傳至云平臺,您可參考該示例開發出屬于您自己的插件
亂碼:使用 auto_convert2utf8($str) 自動轉換成utf-8編碼
檢測不出CMS:請手動綁定,輸入cms路徑并在路徑結尾加上@CMS程序名,例如:@discuz