挂载Typecho插件
对于我们的插件,文章发送成功并在企业微信接受到消息,所以,我们通过分析,需要在发布文章的时候,我们就能拿到该动作,并触发我们插件发送消息的能力。
对此,引出我们插件的核心思想,挂载到Typecho的运行逻辑中,需多的插件都是基于这个核心点,实现不同的需求和功能。
挂载插件
class NewTest_Plugin implements Typecho_Plugin_Interface
{
/**
* 激活插件方法,如果激活失败,直接抛出异常
*
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function activate()
{
//挂载发布文章和页面的接口
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('NewTest_Action', 'send');
Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('NewTest_Action', 'send');
return _t('测试插件 已启用');
}
/**
* 禁用插件方法,如果禁用失败,直接抛出异常
*
* @static
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function deactivate()
{
return _t('测试插件 已禁用');
}
/**
* 获取插件配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form 配置面板
* @return void
*/
public static function config(Typecho_Widget_Helper_Form $form)
{
/** 分类名称 */
$name = new Typecho_Widget_Helper_Form_Element_Text('api', NULL, '这里是机器人链接', _t('企业机器人调用地址'));
$form->addInput($name);
}
/**
* 个人用户的配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form
* @return void
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form)
{
}
public static function render()
{
}
}
activate
:是主要的入口,在插件激活时,就会执行该函数,所以我们就在这个地方挂载我们的方法。
return _t('测试插件 已启用');
:这段可以自定义插件激活提示,反之这是卸载插件提示。
Typecho 命名规则
Typecho类的命名是直接与类的存放位置相挂钩的,存放在var的目录下。比如说,Typecho_Plugin_Interface,就是存放在var/Typecho/Plugin目录下的Interface.php文件。再比如说:Typecho_Widget_Helper_Form_Element_Text 就是存放在var/Typecho/Widget/Helper/Form/Element/Text.php 中。明白了这一点,我们就可以通过参考其它插件,直接找到对应的源文件,来弄清里面的接口。
Typecho 挂载规则
Typecho的程序中预留了很多可以被插的接口。在Widget中,我们可以看到很多pluginHandle这样的地方;在admin下,我们可以看到Typecho_Plugin::factory这样的地方。这些,都是可以被插的。对这些函数指针重新赋值,则会在对应的位置被调用。
参考我们的挂载插件
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('NewTest_Action', 'send');‘
Widget_Contents_Post_Edit
:表明在Widget/Contents/Post/Edit.php目录下,有个finishPublish
函数指针,将被定位到NewTest_Action
类的spend
函数。也就是执行我们自己的逻辑
官方的插件接口,功能列表
https://docs.typecho.org/plugins/hooks
版权属于:Monster_4y
本文链接:https://blog.zmonster.top/117.html
转载时须注明出处及本声明