您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關typecho插件如何編寫核心代碼介紹,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
分析一下,發布文章的時候,我們需要的信息就是當前文章的URL,我們需要想辦法從$contents、 $class中拿到他。
目前我們的插件類代碼如下(請注意render被我改成了send)
復制代碼 代碼如下:
class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface
{
public static function activate(){
//掛載發布文章和頁面的接口
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 '插件安裝成功,請進入設置填寫準入密鑰';
}
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('準入秘鑰'), '請登錄百度站長平臺獲取');
$form->addInput($element);
}
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
public static function send($contents, $class){
//do something
}
}
獲取URL
獲取永久鏈接需要通過路由規則 + Typecho_Common::url 聯合生成!
復制代碼 代碼如下:
class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface
{
public static function activate(){
//掛載發布文章和頁面的接口
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 '插件安裝成功,請進入設置填寫準入密鑰';
}
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('接口調用地址'), '請登錄百度站長平臺獲取');
$form->addInput($element);
}
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
/**
* 準備數據
* @param $contents 文章內容
* @param $class 調用接口的類
* @throws Typecho_Plugin_Exception
*/
public static function send($contents, $class){
//如果文章屬性為隱藏或滯后發布
if( 'publish' != $contents['visibility'] || $contents['created'] > time()){
return;
}
//獲取系統配置
$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);
}
}
關于typecho插件如何編寫核心代碼介紹就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。