typecho插件编写教程(四):插件挂载

终于,在能够保存配置信息后,我们可以开始编写插件的挂载功能了。

首先我们需要知道系统为我们在各个关键的环节都预留了插件点给我们,系统运行到插件点时,会检测到是否有插件挂在这个点上,然后执行插件的逻辑!

插件的工作就是找到合适的插件点,挂上去,然后执行自己的逻辑。

插件点,插件钩子,插件接口。。。在老高这儿是一个概念

官方的插件接口及功能列表

我们的插件需要执行的逻辑在这里,Widget_Contents_Post_Edit类的finishPublish方法

文件路径var/Widget/Contents/Post/Edit.php:736,可以看到,接口为我们传递了两个参数,一个是发布的内容,另一个是类本身。有了类本身,我们可以在插件中随意调用他的公共方法!

代码如下:

// 文章完成发布插件接口
    $this->pluginHandle()->finishPublish($contents, $this);

还有一个页面发布接口,下面的代码会提到。

如何挂载

代码如下,有省略。

代码如下:

<?php

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 render($contents, $class){
        //do something
    }
}

有代码我们看到,在插件激活时,系统将插件类BaiduSubmitTest_Plugin的render方法绑定到finishPublish的接口上!由于finishPublish会传递两个参数,所以render方法也要接受两个参数。

此时,只要插件正常启用,当我们发布完某一篇文章后,系统就会自动调用BaiduSubmitTest_Plugin:render()方法了。

仔细观察源代码,你会发现此接口没有返回值,如果有返回值怎么办?

这个情况比较复杂,老高先留个坑。

为什么叫render方法?

老高从hello world中复制粘贴过来的,一直没有改名。

接下来做什么

挂载点搞定了,下一步就是执行我们的核心逻辑代码了。

老高就留到下一篇吧!

(0)

相关推荐

  • typecho插件编写教程(六):调用接口

    此篇我们开始调用接口,我们在插件类中新定义一个方法,起名为send_post,在方法中我们通过系统配置获取接口调用地址. 百度给的例子中使用了php的CURL,更高级的使用方法可以学习PHP_cURL初始化和执行方法 下面我们结合一下百度站长提供的代码. /** * 发送数据 * @param $url 准备发送的url * @param $options 系统配置 */ public static function send_post($url, $options){ //获取API $api

  • typecho插件编写教程(五):核心代码

    之前啰嗦了很多,现在开始写核心代码. 分析一下,发布文章的时候,我们需要的信息就是当前文章的URL,我们需要想办法从$contents. $class中拿到他. 目前我们的插件类代码如下(请注意render被我改成了send) 复制代码 代码如下: class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface { public static function activate(){         //挂载发布文章和页面的接口

  • typecho插件编写教程(三):保存配置

    上一节我们制作了一个裸插件,下面我们开始让我们的插件开始工作! I. 完善方法 两个方法 我们实现activate和deactivate方法 复制代码 代码如下: public static function activate(){         return 'activate';     } public static function deactivate(){         return 'deactivated';     } 如上代码所示,我们在激活和卸载插件方法中有返回值,所以

  • 在Nginx服务器上安装配置博客程序Typecho的教程

    typecho比wordpress更轻,更专注于写的享受. 现在大多的虚拟机运行环境都是lnmp,安装教程安装typecho可能会遇到404,数据配置错误问题. 把这两天安装typecho的步骤写下来给大家参考. typecho安装方法 1.下载 #网站目录 cd /usr/local/nginx/html/ wget https://github.com/typecho/typecho/releases/download/v0.9-13.12.12-release/0.9.13.12.12.-

  • typecho插件编写教程(二):写一个新插件

    第一节我们了解了一个插件的基本构成,下面我们需要一个实例练习巩固. 真赶巧,老高最近正在改版百度sitemap提交插件for typecho,下面和老高一起改版吧! 准备 不知道大家用过WP版的百度结构化插件没?老高就是研究了那个插件,观察其API,然后就写出了typecho版的. 为什么要改版呢? 百度站长最近推出新的接口,使用起来更简单,工作量不算大,索性就改改吧! 新版插件需要实现哪些功能? 1.文章实时推送 2.推送历史数据 3.站点地图 接口调用地址(API)在哪儿? 百度站长后台,P

  • Typecho程序伪静态规则大全(包括Linux/Windows)

    虽然老左博客是用的Wordpress程序,但是我不得不说wp程序即便是一款非常棒的程序之一,但是在资源占用方面的问题还是比较差的.如果你使用过WP程序建立博客应该知道,在网站访问量达到几百的时候一般的主机CPU会超标,甚至会出现被暂停主机使用.因为一般的主机产品CPU限制为5-10%,所以很容易超标.Typecho博客程序是国人开发的,虽然目前不在更新但是功能基本完善,结构看类似WORDPRESS,但是在占用资源上比WP好很多.所以Typecho用户还是非常多的. Typecho程序的伪静态规则

  • typecho插件编写教程(一):Hello World

    最近老高正在编写一个关于typecho的插件,由于typecho不像wordpress,有那么多的文档参考,写一个插件还是遇到了很多的坑,不过随着研究的不断深入,老高也慢慢上手了,于是总结出此篇编写教程分享给大家! I. 从HelloWorld说起 基本信息 想必想要开发typecho的你一定阅读过官方示例插件HelloWorld的源码吧? 我们先看看usr/plugins/HelloWorld/Plugin.php文件前几行 复制代码 代码如下: if (!defined('__TYPECHO

  • typecho插件编写教程(四):插件挂载

    终于,在能够保存配置信息后,我们可以开始编写插件的挂载功能了. 首先我们需要知道系统为我们在各个关键的环节都预留了插件点给我们,系统运行到插件点时,会检测到是否有插件挂在这个点上,然后执行插件的逻辑! 插件的工作就是找到合适的插件点,挂上去,然后执行自己的逻辑. 插件点,插件钩子,插件接口...在老高这儿是一个概念 官方的插件接口及功能列表 我们的插件需要执行的逻辑在这里,Widget_Contents_Post_Edit类的finishPublish方法 文件路径var/Widget/Cont

  • Bootstrap教程JS插件弹出框学习笔记分享

    本文主要来学习一下JavaScript插件--弹出框. 案例 为页面内容添加一个小的覆盖层,就像iPad上的效果一样,为页面元素增加额外的信息. 先来看几个简单的静态案例效果图 效果比较简单主要就是静态的弹出的小窗体,分为窗体标题和窗体内容. <div class="bs-example bs-example-popover"> <div class="popover top"> <div class="arrow"

  • Java运用SWT插件编写桌面记事本应用程序

    本文实例介绍了Java基于SWT编写记事本的详细过程,分享给大家供大家参考,具体内容如下 可实现windows系统桌面记事本基本功能,傻瓜式教学,一步一步手把手操作.小白也可自己编写出完整的应用程序. 需要工具:Eclipse(带SWT插件) 成品如下: 应用程序功能介绍: 功能分析: 1.文件(F) 2.编辑(E) 3.格式(O) 4.查看(V) 5.帮助(H) 其中文件菜单中包括 1.1.新建(N) Ctrl+N 1.2打开(O) Ctrl+O 1.3保存(S) Ctrl+S 1.4另存为(

  • 详解使用webpack打包编写一个vue-toast插件

    本文介绍了使用webpack打包编写一个vue插件,分享给大家.具体如下: 一.说明: 需求:创建一个toast插件 思路:利用vue组件创建模板,使用webpack打包生成插件再全局使用. # 项目目录: |_ package.json |_ webpack.config.js |_ .babelrc |_ dist |_ src |_ index.html |_ lib |_ index.js |_ vue-toast.vue 1.1 webpack基础 1.基础插件 - html-webp

  • 详解PyCharm安装MicroPython插件的教程

    前言 PyCharm可以说是当今最流行的一款Python IDE了,大部分购买TPYBoard的小伙伴都会使用PyCharm编写MicroPython的程序.遗憾的是,只是把PyCharm当做了一种代码编辑器,调试依然还的需要其他辅助软件,比如PuTTY.其实最近也有不少小伙伴询问PyCharm中怎么安装MicroPython插件的问题,想着正好网站也缺少这部分的教程,不如实践一下总结下经验共享给大家,也好给爱好MicroPython的小伙伴提供便利. 准备工作 硬件要求 - TPYBoard

随机推荐