typecho插件編寫教程(五):核心代碼
之前啰嗦了很多,現(xiàn)在開始寫核心代碼。
分析一下,發(fā)布文章的時(shí)候,我們需要的信息就是當(dāng)前文章的URL,我們需要想辦法從$contents、 $class中拿到他。
目前我們的插件類代碼如下(請(qǐng)注意render被我改成了send)
class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface
{
public static function activate(){
//掛載發(fā)布文章和頁(yè)面的接口
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');
Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');
return '插件安裝成功,請(qǐng)進(jìn)入設(shè)置填寫準(zhǔn)入密鑰';
}
public static function deactivate(){
// do something
return '插件卸載成功';
}
public static function config(Typecho_Widget_Helper_Form $form){
$element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('準(zhǔn)入秘鑰'), '請(qǐng)登錄百度站長(zhǎng)平臺(tái)獲取');
$form->addInput($element);
}
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
public static function send($contents, $class){
//do something
}
}
獲取URL
獲取永久鏈接需要通過路由規(guī)則 + Typecho_Common::url 聯(lián)合生成!
class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface
{
public static function activate(){
//掛載發(fā)布文章和頁(yè)面的接口
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');
Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');
return '插件安裝成功,請(qǐng)進(jìn)入設(shè)置填寫準(zhǔn)入密鑰';
}
public static function deactivate(){
// do something
return '插件卸載成功';
}
public static function config(Typecho_Widget_Helper_Form $form){
//保存接口調(diào)用地址
$element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('接口調(diào)用地址'), '請(qǐng)登錄百度站長(zhǎng)平臺(tái)獲取');
$form->addInput($element);
}
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
/**
* 準(zhǔn)備數(shù)據(jù)
* @param $contents 文章內(nèi)容
* @param $class 調(diào)用接口的類
* @throws Typecho_Plugin_Exception
*/
public static function send($contents, $class){
//如果文章屬性為隱藏或滯后發(fā)布
if( 'publish' != $contents['visibility'] || $contents['created'] > time()){
return;
}
//獲取系統(tǒng)配置
$options = Helper::options();
//判斷是否配置好API
if( is_null($options->plugin('BaiduSubmitTest')->api) ){
return;
}
//獲取文章類型
$type = $contents['type'];
//獲取路由信息
$routeExists = (NULL != Typecho_Router::get($type));
//生成永久連接
$path_info = $routeExists ? Typecho_Router::url($type, $contents) : '#';
$permalink = Typecho_Common::url($path_info, $options->index);
}
}
代碼中有注釋,老高就不在贅述了。
至此我們已經(jīng)拿到了文章的永久鏈接,下一步就是給百度服務(wù)器發(fā)送數(shù)據(jù)了!
本節(jié)完!
相關(guān)文章
php如何把表單內(nèi)容提交到數(shù)據(jù)庫(kù)
這篇文章主要介紹了php如何吧表單內(nèi)容提交到數(shù)據(jù)庫(kù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Yii調(diào)試查看執(zhí)行SQL語(yǔ)句的方法
這篇文章主要介紹了Yii調(diào)試查看執(zhí)行SQL語(yǔ)句的方法,涉及Yii配置文件的相關(guān)設(shè)置方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
基于thinkphp5框架實(shí)現(xiàn)微信小程序支付 退款 訂單查詢 退款查詢操作
這篇文章主要介紹了基于thinkphp5框架實(shí)現(xiàn)微信小程序支付 退款 訂單查詢 退款查詢操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
THINKPHP5分頁(yè)數(shù)據(jù)對(duì)象處理過程解析
這篇文章主要介紹了THINKPHP5分頁(yè)數(shù)據(jù)對(duì)象處理過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
laravel 5 實(shí)現(xiàn)模板主題功能(續(xù))
前面一篇文章,我們簡(jiǎn)單討論了laravel模板主題功能,本文我們繼續(xù)探討laravel模板主題功能的實(shí)現(xiàn),本次實(shí)現(xiàn)比較重,有興趣慢慢看吧。2015-03-03
PHP實(shí)現(xiàn)下載遠(yuǎn)程圖片保存到本地的方法
本篇文章主要介紹了PHP實(shí)現(xiàn)下載遠(yuǎn)程圖片的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-06-06

