GistEcho 让 Typecho 支持 Gist 嵌入的小插件

一直不太喜欢用各种 blog 系统的代码插入功能,主要是 不好管理,而且总是遇到莫名其妙的 bug,于是做了这个小插件——GistEcho,专门往 Typecho 里面插 Gist 代码片段。这样就可以把小代码片段和版本管理结合起来。以后这段代码更新的时候,引用它的 post 不需要再更改。

功能很简单,随手写的,也很不完善,基本属于凑合用。但是我用的还挺带感的,普通的代码嵌入比起 Gist 来若爆了有没有? 

下载:

GistEcho_1.0.0.zip

代码直接贴出来,觉得有用的直接复制就可以了:

<?php
/**
 * 替换内容源代码中的 Gist 标签为 Gist 脚本
 * Gist 标签格式为: [gist gist地址] 
 *
 * @package GistEcho
 * @author woody
 * @version 1.0.0
 * @link http://www.fanrenxiu.com
 */
class GistEcho_Plugin implements Typecho_Plugin_Interface{
	/**
	 * 激活插件方法,如果激活失败,直接抛出异常
	 *
	 * @access public
	 * @return void
	 * @throws Typecho_Plugin_Exception
	 */
	public static function activate() {
		Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('GistEcho_Plugin', 'parse');
		Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('GistEcho_Plugin', 'parse');
		Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('GistEcho_Plugin', 'parse');
	}

	/**
	 * 禁用插件方法,如果禁用失败,直接抛出异常
	 *
	 * @static
	 * @access public
	 * @return void
	 * @throws Typecho_Plugin_Exception
	 */
	public static function deactivate() {}

	/**
	 * 获取插件配置面板
	 *
	 * @access public
	 * @param Typecho_Widget_Helper_Form $form 配置面板
	 * @return void
	 */
	public static function config(Typecho_Widget_Helper_Form $form) {}

	/**
	 * 个人用户的配置面板
	 *
	 * @access public
	 * @param Typecho_Widget_Helper_Form $form
	 * @return void
	 */
	public static function personalConfig(Typecho_Widget_Helper_Form $form) {}

	/**
	 * 解析
	 *
	 * @access public
	 * @param array $matches 解析值
	 * @return string
	 */
	public static function parseCallback($matches) {
		return '<script src="'.trim($matches[2]).'.js"></script>';
	}

	/**
	 * 插件实现方法
	 *
	 * @access public
	 * @return string
	 */
	public static function parse($text, $widget, $lastResult) {
		$text = empty($lastResult) ? $text : $lastResult;

		if ($widget instanceof Widget_Archive || $widget instanceof Widget_Abstract_Comments) {
			return preg_replace_callback("/\[gist( |&nbsp;)([a-zA-z0-9\:\/\.]+)\]/", array('GistEcho_Plugin', 'parseCallback'), $text);
		} else {
			return $text;
		}
	}
}

你可能感兴趣的:(PHP,插件,Gist,Typecho)