內容管理框架:oneThinkphp
版本:V1.1.141212 (注:v1.1也有不少版本,一不當心就下到V1.1.140202 去了,還有其餘版本,建議去代碼託管平臺下載最新版本)html
我也不偷懶,把每一步步驟都記錄下來。sql
1、進入後臺,建立插件數據庫
這裏的鉤子我新建了一個indexFooter,由於我只需在前臺首頁底部顯示友情連接便可。咱們把上面全部要勾的地方都勾上,至於有什麼區別,你們能夠本身建幾個例子區分一下,生成的文件是否同樣。OK!到這裏 咱們的友情連接插件就建立好了!點擊「肯定」。(這裏的自定義模板什麼的,統統不填,我會在下篇文章演示添加自定義模板的效果)數組
2、點擊「安裝」 便可,找到咱們剛安裝好的Links插件,點擊「設置」,你會看到它有個默認的「是否開啓隨機」的選項,這裏咱們無論它,由於咱們用不上,等下要刪掉的。安裝後,咱們能夠在左側導航「已安裝插件後臺」看到咱們新建的「友情連接」框架
3、當咱們點擊左側導航的「友情連接」,你會發現報錯,大概就是說的某個表不存在。是的,咱們剛纔只是建了插件,若是涉及到數據存儲到數據庫, 還須要建表。這裏不直接去數據庫裏建,由於這樣作,是很不人性化的。那咱們就找到安裝插件的函數,在安裝插件的時候創建數據庫,這樣就行了。首先系統的插件所有存放在 根目錄/Addons/ 文件夾下面,打開此文件夾,咱們看到有個Links文件夾,這就是咱們剛建立的插件,一個插件對應一個文件夾。打開Links文件夾,裏面有2個文件和2個文件夾。函數
4、其實如今oneThink作的愈來愈簡潔了,不懂PHP的人照樣建立插件,以後你就會發現。固然,若是你有本身的想法,不想侷限於官方的限制,那仍是要把php學好的。網站
5、打開插件入口文件:LinksAddon.class.php 裏面有個類 LinksAddon,先來分析一下這個文件吧spa
我這裏把 $admin_list 數組的model 值改爲links了,爲了與插件對應。接下來咱們在install方法裏添加新建數據庫的語句,這樣咱們在安裝插件的時候,就會新建數據庫了,個人代碼以下:插件
1 public function install(){ //安裝插件的方法 2 //一、添加數據表 3 $model = D(); 4 $db_prefix = C('DB_PREFIX'); 5 $table_name = "{$db_prefix}links"; 6 7 $sql=<<<SQL 8 CREATE TABLE IF NOT EXISTS `$table_name` ( 9 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵', 10 `title` varchar(80) NOT NULL DEFAULT '' COMMENT '站點名稱', 11 `link` varchar(140) NOT NULL DEFAULT '' COMMENT '連接地址', 12 `summary` varchar(255) NOT NULL DEFAULT '' COMMENT '站點描述', 13 `mailto` varchar(100) NOT NULL DEFAULT '' COMMENT '站長聯繫方式', 14 `sort` int(3) unsigned NOT NULL DEFAULT 0 COMMENT '優先級', 15 `nofollow` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否追蹤', 16 `type` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT '類型分組', 17 `cover_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '封面圖片', 18 `status` tinyint(2) NOT NULL DEFAULT 1 COMMENT '狀態(0:禁用,1:正常)', 19 `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '添加時間', 20 PRIMARY KEY (`id`) 21 ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='友情鏈接表'; 22 SQL; 23 24 $model -> execute($sql);//執行sql語句 25 26 //二、返回true,表示插件安裝成功 27 return true; 28 }
我這裏省略了不少細節判斷,你們本身完善。
6、既然在安裝插件的時候,新建了表,咱們在卸載的插件的時候就要把表給刪除,否則下次安裝該插件的時候就會出問題。因此咱們uninstall 方法代碼以下:
public function uninstall(){ //卸載插件的方法 $model = D(); $db_prefix = C('DB_PREFIX'); $table_name = "{$db_prefix}links"; $sql="DROP TABLE IF EXISTS `".$table_name."`;"; $model -> execute($sql);//執行sql語句 return true; }
好了,到這裏就差很少了,保存一下LinksAddon.class.php 文件,應該能夠正常顯示了,咱們來看看。進入插件列表,先把Links插件卸載,而後從新安裝。點擊左側菜單「友情連接」,能夠看到
之因此能正常顯示這個列表,是由於系統有默認的模板,在\Application\Admin\View\Addons 文件夾裏,有興趣的同窗能夠研究一下這幾個模板文件,其中這個列表的模板就是adminlist.html,那麼咱們要把封面、書名、描述等等這些字眼改掉,要去模板裏改嗎?細心的同窗估計注意到了,在LinksAddon.class.php 文件 的$admin_list 數組裏配置的,其餘的看後面的註釋就明白,這裏詳細說一下 list_grid 關聯的數組。咱們剛纔新建的links數據表有id、title、link等字段,你想在這個列表顯示什麼字段,均可以添加。我這裏代碼以下:
'list_grid'=>array( //這裏定義的是除了id序號外的表格裏字段顯示的表頭名和模型同樣支持函數和連接 'title:網站名稱', 'link:連接', 'summary:描述', 'create_time|time_format:添加時間', //time_format 是一個函數,把時間格式化,其餘地方想使用什麼函數也能夠按照這種格式書寫 'id:操做:[EDIT]|編輯,[DELETE]|刪除' ),
保存,刷新後臺友情連接列表
咱們點擊「新增」 來增長一個友情連接吧,你會發現,只有一個書名字段。咱們打開Model/LinksModel.class.php 文件,我這裏分別解釋一下這兩個自帶的數組,具體看下面代碼裏的註釋
class LinksModel extends Model{ public $model = array( 'title'=>'',//新增[title]、編輯[title]、刪除[title]的提示 'template_add'=>'',//自定義新增模板自定義html edit.html 會讀取插件根目錄的模板 'template_edit'=>'',//自定義編輯模板html 'search_key'=>'',// 搜索的字段名,默認是title 'extend'=>1, //在後臺列表是否顯示 「增長」、「刪除」 按鈕,0-不顯示 1-顯示 ); public $_fields = array( 'id'=>array( 'name'=>'id',//字段名,與數據庫的字段對應 'title'=>'ID',//顯示標題 'type'=>'num',//字段類型:num、string、textarea、datetime、bool、select、radio、checkbox、editor、picture(封面)、file(附件)、 'remark'=>'',// 備註,至關於配置裏的tip 'is_show'=>3,// 1-始終顯示 2-新增顯示 3-編輯顯示 0-不顯示 'value'=>0,//默認值 ),
//下面演示一下 select字段怎麼顯示 radio、checkbox同理 'type'=>array( 'name'=>'type', 'title'=>'類型', 'type'=>'select', 'remark'=>'請選擇所屬類型', 'is_show'=>1,
'extra'=>'0:友情連接,1:合做站點', 'value'=>0, 'is_must'=>1, ), ); }
ok,我最後的效果是這樣的:
添加一條數據看看吧:
這裏要顯示具體類型、顯示圖片等,須要自定義adminlist.html模板了。關於自定義模板,咱們下一篇文章再說。關於鉤子,其實就是寫一個函數從數據庫讀取數據,而後在前臺須要的地方調用鉤子就行。若是須要模板,則在鉤子函數裏解析模板。鉤子調用格式通常:
{:hook("鉤子名稱"),"[參數]"} 沒參數就不寫。直接寫成這樣{:hook("鉤子名稱")}
到此爲止就是用系統默認的模板,一步一步的創建本身的插件,是否是很簡單,就像填空題同樣,只要按照它的規則填空,就ok了。